{"_id":"@svg-jar/plugin","_rev":"6-acee7666538a34f42b57c08bb3d68f99","name":"@svg-jar/plugin","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.1":{"name":"@svg-jar/plugin","version":"0.0.1","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"license":"MIT","_id":"@svg-jar/plugin@0.0.1","maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"homepage":"https://github.com/svg-jar/plugin#readme","bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"dist":{"shasum":"7a4352e62671fb53093b41d12e1d99bcafc330eb","tarball":"https://registry.npmjs.org/@svg-jar/plugin/-/plugin-0.0.1.tgz","fileCount":40,"integrity":"sha512-BKM8R/13B4d399rTNyQOXrki25shtlrnoSqIfEyrK2XTMGxaac2cg/QYNxKqPNJHpkXTI+2Cmd+bXDgH6LBsVw==","signatures":[{"sig":"MEQCIFeZ0zthYq2f70s03llESFzICbrqXU+4rvllYMFdsr2lAiA2BW78BQYBzB1PnMozgstpIncpkWahIQ5pw1uQFKxv8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96507},"main":"./dist/index.js","type":"module","_from":"file:svg-jar-plugin-0.0.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./vite":"./dist/vite.js","./rollup":"./dist/rollup.js","./rspack":"./dist/rspack.js","./esbuild":"./dist/esbuild.js","./webpack":"./dist/webpack.js","./rolldown":"./dist/rolldown.js","./client/dom":{"types":"./client/dom.d.ts"},"./client/vue":{"types":"./client/vue.d.ts"},"./runtime/dom":"./dist/runtime/dom.js","./runtime/vue":"./dist/runtime/vue.js","./client/ember":{"types":"./client/ember.d.ts"},"./client/react":{"types":"./client/react.d.ts"},"./client/solid":{"types":"./client/solid.d.ts"},"./package.json":"./package.json","./client/preact":{"types":"./client/preact.d.ts"},"./runtime/ember":"./dist/runtime/ember.js","./runtime/react":"./dist/runtime/react.js","./runtime/solid":"./dist/runtime/solid.js","./runtime/preact":"./dist/runtime/preact.js","./client/web-component":{"types":"./client/web-component.d.ts"},"./runtime/web-component":"./dist/runtime/web-component.js"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"pnpm test:unit && pnpm test:e2e","build":"tsdown","format":"prettier --write .","lint:fix":"eslint . --fix","prettier":"prettier --check .","test:e2e":"playwright test","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","sortPackageJson":"pnpm dlx sort-package-json","build:test-projects":"tsdown && for dir in ../test-projects/vite/*/; do (cd \"$dir\" && pnpm vite build); done"},"_npmUser":{"name":"evoactivity","email":"radioactivity@gmail.com"},"_resolved":"/private/var/folders/rw/zh799lvx7lzb46z1mh_r851m0000gn/T/1b8cfb25e4f896d5514114ee6c1bd6e9/svg-jar-plugin-0.0.1.tgz","_integrity":"sha512-BKM8R/13B4d399rTNyQOXrki25shtlrnoSqIfEyrK2XTMGxaac2cg/QYNxKqPNJHpkXTI+2Cmd+bXDgH6LBsVw==","repository":{"url":"git+https://github.com/svg-jar/plugin.git","type":"git"},"_npmVersion":"11.8.0","description":"An unplugin for importing SVGs as components with sprite sheet support","directories":{},"sideEffects":false,"_nodeVersion":"25.5.0","dependencies":{"svgo":"^4.0.1","unplugin":"^3.0.0","@eksml/xml":"^0.1.2","magic-string":"^0.30.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"execa":"^9.6.0","rollup":"^4.60.1","tsdown":"^0.21.8","vitest":"^4.1.4","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin_0.0.1_1776726377653_0.5695593686405369","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@svg-jar/plugin","version":"0.1.0","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"license":"MIT","_id":"@svg-jar/plugin@0.1.0","maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"homepage":"https://github.com/svg-jar/plugin#readme","bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"dist":{"shasum":"bf508509e50071523d36b3b2533dde26c8552864","tarball":"https://registry.npmjs.org/@svg-jar/plugin/-/plugin-0.1.0.tgz","fileCount":40,"integrity":"sha512-9ksZY5WtrwbNl+aStmy3ib6XevUs/gtBQnb0k0SPAUBugdoH6DlAVNSLz+LMtdcCNLKaU9CfYo4rtVy9S6CuRQ==","signatures":[{"sig":"MEQCIB3O0y2U284gqzip23EhZJMuM6Z9S8msj7GQ360k4PjDAiASx25kIWv2bXOZ6plsyhx/E/mCUIBMRebphxYY2qb5IA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@svg-jar%2fplugin@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103024},"main":"./dist/index.js","type":"module","_from":"file:svg-jar-plugin-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./vite":"./dist/vite.js","./rollup":"./dist/rollup.js","./rspack":"./dist/rspack.js","./esbuild":"./dist/esbuild.js","./webpack":"./dist/webpack.js","./rolldown":"./dist/rolldown.js","./client/dom":{"types":"./client/dom.d.ts"},"./client/vue":{"types":"./client/vue.d.ts"},"./runtime/dom":"./dist/runtime/dom.js","./runtime/vue":"./dist/runtime/vue.js","./client/ember":{"types":"./client/ember.d.ts"},"./client/react":{"types":"./client/react.d.ts"},"./client/solid":{"types":"./client/solid.d.ts"},"./package.json":"./package.json","./client/preact":{"types":"./client/preact.d.ts"},"./runtime/ember":"./dist/runtime/ember.js","./runtime/react":"./dist/runtime/react.js","./runtime/solid":"./dist/runtime/solid.js","./runtime/preact":"./dist/runtime/preact.js","./client/web-component":{"types":"./client/web-component.d.ts"},"./runtime/web-component":"./dist/runtime/web-component.js"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"pnpm test:unit && pnpm test:e2e","build":"tsdown","format":"prettier --write .","lint:fix":"eslint . --fix","prettier":"prettier --check .","test:e2e":"playwright test","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","sortPackageJson":"pnpm dlx sort-package-json","build:test-projects":"tsdown && for dir in ../test-projects/vite/*/; do (cd \"$dir\" && pnpm vite build); done"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f95d9aa-8245-40fd-923e-406e196e89a7"}},"_resolved":"/tmp/0945f654003635ab85e56b6a4bdf2693/svg-jar-plugin-0.1.0.tgz","_integrity":"sha512-9ksZY5WtrwbNl+aStmy3ib6XevUs/gtBQnb0k0SPAUBugdoH6DlAVNSLz+LMtdcCNLKaU9CfYo4rtVy9S6CuRQ==","repository":{"url":"git+https://github.com/svg-jar/plugin.git","type":"git"},"_npmVersion":"11.11.0","description":"An unplugin for importing SVGs as components with sprite sheet support","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"svgo":"^4.0.1","unplugin":"^3.0.0","@eksml/xml":"^0.1.2","magic-string":"^0.30.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"execa":"^9.6.0","rollup":"^4.60.1","tsdown":"^0.21.8","vitest":"^4.1.4","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin_0.1.0_1776816644153_0.4838765864468768","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@svg-jar/plugin","version":"0.1.1","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"license":"MIT","_id":"@svg-jar/plugin@0.1.1","maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"homepage":"https://github.com/svg-jar/plugin#readme","bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"dist":{"shasum":"f3854f53a5fc22181bdff30986b6b3c6acf95715","tarball":"https://registry.npmjs.org/@svg-jar/plugin/-/plugin-0.1.1.tgz","fileCount":40,"integrity":"sha512-JfYS7XAnl0fWM27jjvVzUumyigkogiQabRAimGM9BPdaSk438P1g0TpUefpvP1ILSWRAWj1UCUmz+PTTpsKUcQ==","signatures":[{"sig":"MEYCIQDzmMIJ0SX+5dS/L3n7NDhdje0pKA32e7sCW9rYNuri9gIhALyz2/hU93eT+uQmcb15ZIOoCkk0lJ6/RB2rACU5rWBo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@svg-jar%2fplugin@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103434},"main":"./dist/index.js","type":"module","_from":"file:svg-jar-plugin-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./vite":"./dist/vite.js","./rollup":"./dist/rollup.js","./rspack":"./dist/rspack.js","./esbuild":"./dist/esbuild.js","./webpack":"./dist/webpack.js","./rolldown":"./dist/rolldown.js","./client/dom":{"types":"./client/dom.d.ts"},"./client/vue":{"types":"./client/vue.d.ts"},"./runtime/dom":"./dist/runtime/dom.js","./runtime/vue":"./dist/runtime/vue.js","./client/ember":{"types":"./client/ember.d.ts"},"./client/react":{"types":"./client/react.d.ts"},"./client/solid":{"types":"./client/solid.d.ts"},"./package.json":"./package.json","./client/preact":{"types":"./client/preact.d.ts"},"./runtime/ember":"./dist/runtime/ember.js","./runtime/react":"./dist/runtime/react.js","./runtime/solid":"./dist/runtime/solid.js","./runtime/preact":"./dist/runtime/preact.js","./client/web-component":{"types":"./client/web-component.d.ts"},"./runtime/web-component":"./dist/runtime/web-component.js"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"pnpm test:unit && pnpm test:e2e","build":"tsdown","format":"prettier --write .","lint:fix":"eslint . --fix","prettier":"prettier --check .","test:e2e":"playwright test","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","sortPackageJson":"pnpm dlx sort-package-json","build:test-projects":"tsdown && for dir in ../test-projects/vite/*/; do (cd \"$dir\" && pnpm vite build); done"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f95d9aa-8245-40fd-923e-406e196e89a7"}},"_resolved":"/tmp/4a813c884bc40b4f9b2ff890d72698e6/svg-jar-plugin-0.1.1.tgz","_integrity":"sha512-JfYS7XAnl0fWM27jjvVzUumyigkogiQabRAimGM9BPdaSk438P1g0TpUefpvP1ILSWRAWj1UCUmz+PTTpsKUcQ==","repository":{"url":"git+https://github.com/svg-jar/plugin.git","type":"git"},"_npmVersion":"11.11.0","description":"An unplugin for importing SVGs as components with sprite sheet support","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"svgo":"^4.0.1","unplugin":"^3.0.0","@eksml/xml":"^0.1.2","magic-string":"^0.30.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"execa":"^9.6.0","rollup":"^4.60.1","tsdown":"^0.21.8","vitest":"^4.1.4","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin_0.1.1_1776819814985_0.18906991938934503","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@svg-jar/plugin","version":"0.1.2","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"license":"MIT","_id":"@svg-jar/plugin@0.1.2","maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"homepage":"https://github.com/svg-jar/plugin#readme","bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"dist":{"shasum":"0ca05c377772e1701d856175780f44c506e3a3c2","tarball":"https://registry.npmjs.org/@svg-jar/plugin/-/plugin-0.1.2.tgz","fileCount":40,"integrity":"sha512-hFK9XydusiIpY4HTM0FK/uHLodU+dWG/BIjtpt2S2x9b9//KeN7FuDq2Rpl5UGyxI/08x2J6GcyTJ8+SySDDnw==","signatures":[{"sig":"MEUCIQCWRRDI6P3KCKAbyRoz1JaEx6M0sINmdjIHQN2jDOeWDAIgRNSIuU8yQlC+OW8P8Mu7my9Vl8qUzQu7m3yrZ7L+RT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@svg-jar%2fplugin@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103446},"main":"./dist/index.js","type":"module","_from":"file:svg-jar-plugin-0.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./vite":"./dist/vite.js","./rollup":"./dist/rollup.js","./rspack":"./dist/rspack.js","./esbuild":"./dist/esbuild.js","./webpack":"./dist/webpack.js","./rolldown":"./dist/rolldown.js","./client/dom":{"types":"./client/dom.d.ts"},"./client/vue":{"types":"./client/vue.d.ts"},"./runtime/dom":"./dist/runtime/dom.js","./runtime/vue":"./dist/runtime/vue.js","./client/ember":{"types":"./client/ember.d.ts"},"./client/react":{"types":"./client/react.d.ts"},"./client/solid":{"types":"./client/solid.d.ts"},"./package.json":"./package.json","./client/preact":{"types":"./client/preact.d.ts"},"./runtime/ember":"./dist/runtime/ember.js","./runtime/react":"./dist/runtime/react.js","./runtime/solid":"./dist/runtime/solid.js","./runtime/preact":"./dist/runtime/preact.js","./client/web-component":{"types":"./client/web-component.d.ts"},"./runtime/web-component":"./dist/runtime/web-component.js"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"pnpm test:unit && pnpm test:e2e","build":"tsdown","format":"prettier --write .","lint:fix":"eslint . --fix","prettier":"prettier --check .","test:e2e":"playwright test","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","sortPackageJson":"pnpm dlx sort-package-json","build:test-projects":"tsdown && for dir in ../test-projects/vite/*/; do (cd \"$dir\" && pnpm vite build); done"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f95d9aa-8245-40fd-923e-406e196e89a7"}},"_resolved":"/tmp/6987c28e8a8f8ce6c86d57ba5e8286e8/svg-jar-plugin-0.1.2.tgz","_integrity":"sha512-hFK9XydusiIpY4HTM0FK/uHLodU+dWG/BIjtpt2S2x9b9//KeN7FuDq2Rpl5UGyxI/08x2J6GcyTJ8+SySDDnw==","repository":{"url":"git+https://github.com/svg-jar/plugin.git","type":"git"},"_npmVersion":"11.12.1","description":"An unplugin for importing SVGs as components with sprite sheet support","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"svgo":"^4.0.1","unplugin":"^3.0.0","@eksml/xml":"^0.1.2","magic-string":"^0.30.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"execa":"^9.6.0","rollup":"^4.60.1","tsdown":"^0.21.8","vitest":"^4.1.4","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin_0.1.2_1779547505481_0.5644264903014333","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@svg-jar/plugin","version":"0.2.0","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"license":"MIT","_id":"@svg-jar/plugin@0.2.0","maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"homepage":"https://github.com/svg-jar/plugin#readme","bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"dist":{"shasum":"92d1876e2b04a263dc06e52a73f9a9211653f6fd","tarball":"https://registry.npmjs.org/@svg-jar/plugin/-/plugin-0.2.0.tgz","fileCount":40,"integrity":"sha512-Dc37P/tpjNoxVAA2IM5te83oiq3sJHh9jfFn2lHqpNX3hiENu2+XXirlDH5bdHvzDKfLU3iryR3vTVat7pLdaQ==","signatures":[{"sig":"MEUCIQCh2FyBt4S59MdcA+1ijmZMUMlayNcBRTSajTyPTV72twIgVnESI0Fhd0+IRsd/8EMvVlqhQsglMYCbdpnv58wpt3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@svg-jar%2fplugin@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":110638},"main":"./dist/index.js","type":"module","_from":"file:svg-jar-plugin-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":"./dist/index.js","./vite":"./dist/vite.js","./rollup":"./dist/rollup.js","./rspack":"./dist/rspack.js","./esbuild":"./dist/esbuild.js","./webpack":"./dist/webpack.js","./rolldown":"./dist/rolldown.js","./client/dom":{"types":"./client/dom.d.ts"},"./client/vue":{"types":"./client/vue.d.ts"},"./runtime/dom":"./dist/runtime/dom.js","./runtime/vue":"./dist/runtime/vue.js","./client/ember":{"types":"./client/ember.d.ts"},"./client/react":{"types":"./client/react.d.ts"},"./client/solid":{"types":"./client/solid.d.ts"},"./package.json":"./package.json","./client/preact":{"types":"./client/preact.d.ts"},"./runtime/ember":"./dist/runtime/ember.js","./runtime/react":"./dist/runtime/react.js","./runtime/solid":"./dist/runtime/solid.js","./runtime/preact":"./dist/runtime/preact.js","./client/web-component":{"types":"./client/web-component.d.ts"},"./runtime/web-component":"./dist/runtime/web-component.js"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"pnpm test:unit && pnpm test:e2e","build":"tsdown","format":"prettier --write .","lint:fix":"eslint . --fix","prettier":"prettier --check .","test:e2e":"playwright test","test:unit":"vitest run","typecheck":"tsc --noEmit","test:watch":"vitest","sortPackageJson":"pnpm dlx sort-package-json","build:test-projects":"tsdown && for dir in ../test-projects/vite/*/; do (cd \"$dir\" && pnpm vite build); done && for dir in ../test-projects/rolldown/*/ ../test-projects/tsdown/*/; do (cd \"$dir\" && pnpm build); done"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f95d9aa-8245-40fd-923e-406e196e89a7"}},"_resolved":"/tmp/19c26b03feaa5bf2ae0ff25607437e87/svg-jar-plugin-0.2.0.tgz","_integrity":"sha512-Dc37P/tpjNoxVAA2IM5te83oiq3sJHh9jfFn2lHqpNX3hiENu2+XXirlDH5bdHvzDKfLU3iryR3vTVat7pLdaQ==","repository":{"url":"git+https://github.com/svg-jar/plugin.git","type":"git"},"_npmVersion":"11.16.0","description":"An unplugin for importing SVGs as components with sprite sheet support","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"svgo":"^4.0.1","unplugin":"^3.0.0","@eksml/xml":"^0.2.0","magic-string":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"execa":"^9.6.0","rollup":"^4.60.1","tsdown":"^0.21.8","vitest":"^4.1.4","rolldown":"^1.0.0-rc.15","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin_0.2.0_1784821211686_0.3374153833243816","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@svg-jar/plugin","version":"0.2.1","description":"An unplugin for importing SVGs as components with sprite sheet support","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"repository":{"type":"git","url":"git+https://github.com/svg-jar/plugin.git"},"license":"MIT","author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"sideEffects":false,"type":"module","exports":{".":"./dist/index.js","./vite":"./dist/vite.js","./rollup":"./dist/rollup.js","./rolldown":"./dist/rolldown.js","./esbuild":"./dist/esbuild.js","./webpack":"./dist/webpack.js","./rspack":"./dist/rspack.js","./runtime/dom":"./dist/runtime/dom.js","./runtime/ember":"./dist/runtime/ember.js","./runtime/react":"./dist/runtime/react.js","./runtime/preact":"./dist/runtime/preact.js","./runtime/vue":"./dist/runtime/vue.js","./runtime/solid":"./dist/runtime/solid.js","./runtime/web-component":"./dist/runtime/web-component.js","./client/dom":{"types":"./client/dom.d.ts"},"./client/ember":{"types":"./client/ember.d.ts"},"./client/react":{"types":"./client/react.d.ts"},"./client/preact":{"types":"./client/preact.d.ts"},"./client/vue":{"types":"./client/vue.d.ts"},"./client/solid":{"types":"./client/solid.d.ts"},"./client/web-component":{"types":"./client/web-component.d.ts"},"./package.json":"./package.json"},"main":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"@eksml/xml":"^0.2.0","magic-string":"^1.1.0","svgo":"^4.0.1","unplugin":"^3.0.0"},"devDependencies":{"@playwright/test":"^1.59.1","execa":"^9.6.0","rolldown":"^1.0.0-rc.15","rollup":"^4.60.1","tsdown":"^0.22.9","vitest":"^4.1.4"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"build":"tsdown","build:test-projects":"tsdown && for dir in ../test-projects/vite/*/; do (cd \"$dir\" && pnpm vite build); done && for dir in ../test-projects/rolldown/*/ ../test-projects/tsdown/*/; do (cd \"$dir\" && pnpm build); done","dev":"tsdown --watch","format":"prettier --write .","lint":"eslint .","lint:fix":"eslint . --fix","prettier":"prettier --check .","sortPackageJson":"pnpm dlx sort-package-json","test":"pnpm test:unit && pnpm test:e2e","test:e2e":"playwright test","test:unit":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"_id":"@svg-jar/plugin@0.2.1","bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"homepage":"https://github.com/svg-jar/plugin#readme","_integrity":"sha512-9oLaYvMDt8/ygI2RLCyOJ1lT9bhbZORFCjAo9yNavDnZHbxl3w2NZc4vdejiFACdaisjAKq4C1QhzdvrZy3ewQ==","_resolved":"/tmp/a088573a303d30a5ee036504d7ed93d0/svg-jar-plugin-0.2.1.tgz","_from":"file:svg-jar-plugin-0.2.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-9oLaYvMDt8/ygI2RLCyOJ1lT9bhbZORFCjAo9yNavDnZHbxl3w2NZc4vdejiFACdaisjAKq4C1QhzdvrZy3ewQ==","shasum":"8069b164494928e68fa7bb1dfdf36e4c840b96f6","tarball":"https://registry.npmjs.org/@svg-jar/plugin/-/plugin-0.2.1.tgz","fileCount":40,"unpackedSize":111048,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@svg-jar%2fplugin@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCrT6fbKkUEaMqLXeY4sdHN/P+UaBz8g3jrkyVrEPY7HQIhANjCshZntqBhYfKL76zJI1ZDWE7cYH21iCTK6DhAFAya"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f95d9aa-8245-40fd-923e-406e196e89a7"}},"directories":{},"maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin_0.2.1_1785278578432_0.1382353833553298"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T23:06:17.546Z","modified":"2026-07-28T22:42:58.914Z","0.0.1":"2026-04-20T23:06:18.243Z","0.1.0":"2026-04-22T00:10:44.302Z","0.1.1":"2026-04-22T01:03:35.143Z","0.1.2":"2026-05-23T14:45:05.631Z","0.2.0":"2026-07-23T15:40:11.819Z","0.2.1":"2026-07-28T22:42:58.584Z"},"bugs":{"url":"https://github.com/svg-jar/plugin/issues"},"author":{"name":"Liam Potter","email":"liam@liampotter.co.uk"},"license":"MIT","homepage":"https://github.com/svg-jar/plugin#readme","keywords":["svg","svg-jar","icons","sprite","sprite-sheet","symbol","components","unplugin","vite","vite-plugin","rollup","rollup-plugin","rolldown","esbuild","webpack","rspack","react","preact","vue","solid","ember","web-component","inline-svg"],"repository":{"type":"git","url":"git+https://github.com/svg-jar/plugin.git"},"description":"An unplugin for importing SVGs as components with sprite sheet support","maintainers":[{"name":"evoactivity","email":"radioactivity@gmail.com"}],"readme":"<div align=\"center\">\n\n  <picture>\n    <img alt=\"SvgJar\" src=\"https://raw.githubusercontent.com/svg-jar/plugin/main/logo-banner.svg\">\n  </picture>\n\n# @svg-jar/plugin\n\n[![npm version](https://img.shields.io/npm/v/@svg-jar/plugin?style=flat-square&colorB=FFE70B)](https://www.npmjs.com/package/@svg-jar/plugin)\n[![CI](https://img.shields.io/github/actions/workflow/status/svg-jar/plugin/ci.yaml?label=CI&style=flat-square)](https://github.com/svg-jar/plugin/actions/workflows/ci.yaml)\n[![License](https://img.shields.io/npm/l/@svg-jar/plugin?style=flat-square)](LICENSE)\n\n</div>\n\nAn [unplugin](https://github.com/unjs/unplugin) for importing SVGs as components. Supports sprite sheets, inline SVGs, and raw file exports across Vite, Rollup, and Rolldown (including [tsdown](https://tsdown.dev)).\n\n## Install\n\n```sh\npnpm add -D @svg-jar/plugin\n```\n\n## Setup\n\n### Vite\n\n```ts\n// vite.config.ts\nimport svgJar from '@svg-jar/plugin/vite';\n\nexport default {\n  plugins: [svgJar({ target: 'ember' })],\n};\n```\n\n### Rollup\n\n```ts\n// rollup.config.ts\nimport svgJar from '@svg-jar/plugin/rollup';\n\nexport default {\n  plugins: [svgJar({ target: 'ember' })],\n};\n```\n\n### Rolldown\n\n```ts\n// rolldown.config.ts\nimport svgJar from '@svg-jar/plugin/rolldown';\n\nexport default {\n  plugins: [svgJar({ target: 'ember' })],\n};\n```\n\n### tsdown\n\n[tsdown](https://tsdown.dev) is built on Rolldown, so it uses the Rolldown entry point. Declaration files (`dts: true`) get correctly typed exports for each SVG import.\n\n```ts\n// tsdown.config.ts\nimport { defineConfig } from 'tsdown';\nimport svgJar from '@svg-jar/plugin/rolldown';\n\nexport default defineConfig({\n  entry: ['src/index.ts'],\n  dts: true,\n  plugins: [svgJar({ target: 'dom', base: '/vendor/icons/' })],\n});\n```\n\n> [!IMPORTANT]\n> Sprite sheets are an **application-level** optimization — their benefits (app-wide symbol dedupe, per-symbol tree-shaking, a single sheet on a known origin) only exist when one build owns the whole module graph. A package built with tsdown emits sprite and `?file` assets into its own `dist/assets` with baked URLs that a consuming bundler will not copy or rewrite.\n>\n> Use sprite or `?file` output from tsdown only for **internal packages where the consuming app controls the deploy origin**: set the `base` option to a fixed public path, and have the app copy the package's `dist/assets` there as part of its build (see `test-projects/tsdown/internal-package`). For publicly distributed libraries, ship raw SVG files (and let the consuming app run svg-jar itself) or export inline components (`?unsafe-inline`), which need no asset serving.\n\n## Usage\n\n### Sprite mode (default)\n\nSVGs are collected into a sprite sheet and rendered via `<use href>`. The sprite file is emitted with a content-hashed filename for cache busting.\n\n```ts\nimport Arrow from './icons/arrow.svg';\n```\n\n### Named sprites\n\nGroup SVGs into separate sprite sheets with the `?sprite=name` query:\n\n```ts\nimport Circle from './icons/circle.svg?sprite=shapes';\n```\n\nThis creates a separate `shapes-<hash>.svg` sprite file containing only the icons assigned to it.\n\n### Inline mode\n\nEmbed the full SVG markup directly in the component. No sprite sheet, no external request.\n\n```ts\nimport Square from './icons/square.svg?unsafe-inline';\n```\n\n> [!CAUTION]\n> Inline SVGs are embedded in your JavaScript bundle, increasing parse time and preventing separate caching. Sprite mode (the default) is more efficient for most use cases. See [What's unsafe about inline SVGs?](#whats-unsafe-about-inline-svgs)\n\n### File mode\n\nExport the SVG as a raw asset URL, like any other static file:\n\n```ts\nimport logoUrl from './icons/logo.svg?file';\n\nconst img = document.createElement('img');\nimg.src = logoUrl;\n```\n\n## Options\n\n```ts\nsvgJar({\n  // Framework target for component generation.\n  // Default: 'dom'\n  target: 'dom' | 'ember' | 'react' | 'preact' | 'vue' | 'solid' | 'web-component',\n\n  // SVGO configuration.\n  // true (default): use baseline config with sensible defaults\n  // false: disable optimization entirely\n  // object: custom SVGO config, deep-merged with baseline\n  svgo: true,\n\n  // Default sprite name for bare SVG imports.\n  // Default: 'sprite'\n  defaultSprite: 'sprite',\n\n  // Replace non-none fill/stroke with currentColor globally.\n  // Default: false\n  currentColor: false,\n\n  // Sprite sheets to inline into the HTML document rather than emit as\n  // external files. See \"Embedded sprites\" below.\n  // true: embed all sprites  |  string[]: embed named sprites  |  false (default): external files\n  embedded: false,\n\n  // Base public path prepended to emitted asset URLs (sprite sheets and\n  // ?file assets). Defaults to Vite's resolved `base` in Vite, '/' elsewhere.\n  // Set this when the build output is served from a known non-root location,\n  // e.g. an internal package whose dist/assets the consuming app copies to a\n  // fixed public path. A trailing slash is added if missing.\n  base: '/vendor/icons/',\n});\n```\n\n### Per-SVG modifiers\n\nThese can be combined with any import mode:\n\n| Query                 | Effect                                                          |\n| --------------------- | --------------------------------------------------------------- |\n| `?current-color`      | Replace fill/stroke with `currentColor` (opt-in per SVG)        |\n| `?skip-current-color` | Preserve original colors (opt-out when global option is `true`) |\n\n```ts\n// This icon inherits color from its parent's CSS color property\nimport Icon from './icons/icon.svg?current-color';\n```\n\n## Targets\n\nThe `target` option controls what each SVG import exports. All targets support sprite, inline, file, and named sprite modes.\n\n### DOM\n\nFactory functions that create SVG DOM elements. Each call returns a new element, so the same import can be inserted multiple times. An optional options object sets attributes and creates `<title>`/`<desc>` elements for accessibility.\n\n```ts\nimport Arrow from './icons/arrow.svg';\n\ndocument.body.appendChild(Arrow());\n\ndocument.body.appendChild(\n  Arrow({\n    class: 'icon',\n    'aria-label': 'Navigate forward',\n    title: 'Forward arrow',\n    desc: 'An arrow pointing to the right',\n  }),\n);\n```\n\n### Ember\n\nGlimmer components supporting `...attributes` for attribute passthrough and `{{yield}}` for block content.\n\n```glimmer-js\nimport Arrow from './icons/arrow.svg';\n\n<template>\n  <Arrow class=\"icon\" aria-hidden=\"true\">\n    <title>Forward arrow</title>\n    <desc>An arrow pointing to the right</desc>\n  </Arrow>\n</template>\n```\n\n### React\n\nReact function components that accept all SVG props and support children for accessibility content.\n\n```tsx\nimport Arrow from './icons/arrow.svg';\n\nfunction App() {\n  return (\n    <Arrow className=\"icon\" aria-label=\"Navigate forward\">\n      <title>Forward arrow</title>\n      <desc>An arrow pointing to the right</desc>\n    </Arrow>\n  );\n}\n```\n\n### Preact\n\nPreact function components with the same API as React.\n\n```tsx\nimport Arrow from './icons/arrow.svg';\n\nfunction App() {\n  return (\n    <Arrow class=\"icon\" aria-label=\"Navigate forward\">\n      <title>Forward arrow</title>\n    </Arrow>\n  );\n}\n```\n\n### Vue\n\nVue render objects that accept all attributes and support the default slot for accessibility content.\n\n```vue\n<script setup>\nimport Arrow from './icons/arrow.svg';\n</script>\n\n<template>\n  <Arrow class=\"icon\" aria-label=\"Navigate forward\">\n    <title>Forward arrow</title>\n    <desc>An arrow pointing to the right</desc>\n  </Arrow>\n</template>\n```\n\n### Solid\n\nSolid components that accept all SVG attributes and support children.\n\n```tsx\nimport Arrow from './icons/arrow.svg';\n\nfunction App() {\n  return (\n    <Arrow class=\"icon\" aria-label=\"Navigate forward\">\n      <title>Forward arrow</title>\n      <desc>An arrow pointing to the right</desc>\n    </Arrow>\n  );\n}\n```\n\n### Web Component\n\nCustom element classes that render SVGs in the light DOM. The user registers the element with `customElements.define()`.\n\n```ts\nimport SvgArrow from './icons/arrow.svg';\n\ncustomElements.define('svg-arrow', SvgArrow);\n```\n\n```html\n<svg-arrow>\n  <title>Forward arrow</title>\n  <desc>An arrow pointing to the right</desc>\n</svg-arrow>\n```\n\nChild elements (`<title>`, `<desc>`) are moved inside the rendered `<svg>` on `connectedCallback`.\n\n## TypeScript\n\nAdd the client types for your target to your `tsconfig.json`:\n\n```json\n{\n  \"compilerOptions\": {\n    \"types\": [\"@svg-jar/plugin/client/<target>\"]\n  }\n}\n```\n\nAvailable client types:\n\n| Target          | Types path                             | Default export type                |\n| --------------- | -------------------------------------- | ---------------------------------- |\n| `dom`           | `@svg-jar/plugin/client/dom`           | `(options?) => SVGSVGElement`      |\n| `ember`         | `@svg-jar/plugin/client/ember`         | `ComponentLike<{ Element }>`       |\n| `react`         | `@svg-jar/plugin/client/react`         | `FC<SVGAttributes>`                |\n| `preact`        | `@svg-jar/plugin/client/preact`        | `FunctionComponent<SVGAttributes>` |\n| `vue`           | `@svg-jar/plugin/client/vue`           | `Component`                        |\n| `solid`         | `@svg-jar/plugin/client/solid`         | `Component<ParentProps<...>>`      |\n| `web-component` | `@svg-jar/plugin/client/web-component` | `typeof HTMLElement`               |\n\n> [!NOTE]\n> If your project also uses `vite/client` types, its `*.svg` declaration (which types SVGs as `string`) may conflict with the plugin's component types.\n\n### Custom module declarations\n\nTypeScript can't match two wildcards in a module specifier, so named sprite queries (`?sprite=name`) and combined query params (`?current-color&sprite=icons`) aren't covered by the built-in declarations. Add your own in a `.d.ts` file included by your tsconfig:\n\n```ts\n// svg.d.ts (React example)\ndeclare module '*.svg?sprite=icons' {\n  import type { FC, SVGAttributes, ReactNode } from 'react';\n\n  const Component: FC<SVGAttributes<SVGSVGElement> & { children?: ReactNode }>;\n  export default Component;\n}\n```\n\nFor the `dom` target:\n\n```ts\ndeclare module '*.svg?sprite=icons' {\n  import type { SvgOptions } from '@svg-jar/plugin/runtime/dom';\n\n  const component: (options?: SvgOptions) => SVGSVGElement;\n  export default component;\n}\n```\n\nThe `?file` query always exports a `string` URL regardless of target, so no custom declaration is needed for combined file queries.\n\n## How it works\n\n### Build mode\n\n1. **`resolveId`** <br> Intercepts `.svg` imports and parses query strings\n2. **`load`** <br> Reads the SVG, optimizes with SVGO, parses via [@eksml/xml](https://github.com/evoactivity/eksml), applies transforms (currentColor, strip dimensions), resolves embedded `<use>` and `<image>` references, registers symbols in the sprite registry\n3. **`transform`** <br> Generates framework-specific component code with a sprite placeholder URL\n4. **`renderChunk`** <br> Replaces placeholders with final sprite URLs, tracks which symbols are actually used (tree-shaking)\n5. **`generateBundle`** <br> Assembles sprite sheets from used symbols only, resolves embedded refs to final asset URLs, emits sprite and file assets\n\n### Dev mode\n\nIn development, sprite sheets are not assembled. Each SVG is rendered as a self-contained inline sprite: the SVG content is wrapped in a `<symbol>` with a local `<use href=\"#id\"/>` reference. Any SVGs referenced via `<use href>` are embedded as additional `<symbol>` entries in the same `<svg>`, so all references are local fragment refs that work cross-browser (Safari, Firefox, Chrome).\n\nInline mode (`?unsafe-inline`) embeds the raw SVG markup directly.\n\nHMR is supported <br> Editing an SVG file triggers a hot update of all components that import it.\n\n### SVGO optimization\n\nSVGO runs per-SVG during the `load` phase (not on assembled sprites) to prevent CSS cross-contamination between symbols. The baseline config:\n\n- Runs `preset-default` with ID preservation (needed for sprite symbol refs)\n- Inlines `<style>` tags to prevent cross-symbol CSS leaks\n- Strips `<title>` elements\n- Preserves path data and numeric values for visual fidelity\n\nRuns in both dev and prod so behaviour is consistent.\n\n### Embedded reference resolution\n\nSVGs containing `<use href=\"other.svg\">` or `<image href=\"photo.png\">` have their references resolved through the bundler's module graph:\n\n- `<use>` refs to other SVGs become sprite symbol references\n- `<image>` refs to SVGs are emitted as file assets\n- `<image>` refs to non-SVG files (PNG, etc.) are handled by the bundler's native asset pipeline\n\nIn dev mode, `<use>` SVG references are embedded as local `<symbol>` entries for cross-browser compatibility.\n\n## Embedded sprites\n\nBy default, sprite sheets are emitted as separate asset files (e.g. `sprite-abc123.svg`) and referenced via `<use href=\"/assets/sprite-abc123.svg#symbolId\">`. This is the most efficient delivery for static icons — the sprite is cached independently and shared across pages.\n\nHowever, when the sprite file is loaded as an external document, browsers impose a hard restriction: **CSS and SMIL animations defined inside `<symbol>` elements do not run**. Specifically:\n\n- `@keyframes` rules in `<style>` tags inside a `<symbol>` are not applied to the referencing document\n- SMIL animation elements (`<animate>`, `<animateMotion>`, `<animateTransform>`) inside a `<symbol>` do not execute\n- `@font-face` rules inside SVG `<style>` tags are not registered in the referencing document\n\nThis is a fundamental browser security boundary, not a plugin limitation. The symbol's styles and animations live in a separate SVG document and cannot affect the page that references them via `<use href>`.\n\nThe solution is to inline the sprite sheet directly into the HTML document. When the `<svg style=\"display:none\">` containing the symbols is part of the same document as the `<use>` elements, all styles and animations work correctly, since they share the same browsing context.\n\n### Using the `embedded` option (Vite only)\n\nPass the names of any sprite sheets that should be inlined into the HTML via `transformIndexHtml`:\n\n```ts\n// vite.config.ts\nimport svgJar from '@svg-jar/plugin/vite';\n\nexport default {\n  plugins: [\n    svgJar({\n      target: 'dom',\n      embedded: ['animated'], // inline the 'animated' sprite, keep others external\n    }),\n  ],\n};\n```\n\nThen import your animated SVGs into that sprite as normal:\n\n```ts\nimport Spinner from './icons/spinner.svg?sprite=animated';\nimport Pulse from './icons/pulse.svg?sprite=animated';\n```\n\nAt build time, the plugin:\n\n1. Assembles the `animated` sprite sheet as usual\n2. Emits it as a file (available for inspection and caching if needed)\n3. Injects the sprite's `<svg style=\"display:none\">` inline at the start of `<body>` in each HTML entry point\n4. Generates `<use href=\"#symbolId\">` (local fragment references) instead of `<use href=\"/assets/animated-hash.svg#symbolId\">` (external file references)\n\nThe result is that all animations, `@keyframes`, and `@font-face` rules inside the symbols work correctly in production builds.\n\nTo embed all sprites:\n\n```ts\nsvgJar({ embedded: true });\n```\n\n> [!NOTE]\n> The `embedded` option only applies to Vite builds. It has no effect in Rollup or other bundlers, which do not have an HTML entry point for the plugin to transform.\n\n> [!NOTE]\n> Embedded sprites are still emitted as external files — they are additionally injected into the HTML. Dev mode is unaffected: symbols are always rendered as self-contained inline SVGs during development.\n\n## What's unsafe about inline SVGs?\n\nThe `?unsafe-inline` query is intentionally named to make you think twice. In most cases, sprite mode (the default) is the better choice. Inline SVGs have real costs that aren't immediately obvious:\n\n- **Larger bundles** <br> Every inline SVG adds to the JavaScript your users download and parse. SVG markup embedded in JavaScript is [significantly more expensive](https://v8.dev/blog/cost-of-javascript-2019#json) to parse than the same markup served as HTML or as an external file.\n- **No separate caching** <br> SVGs bundled in JS are invalidated whenever your code changes, even if the icons haven't changed. Sprite sheets are separate files with content-hashed filenames that stay cached independently.\n- **Duplicate DOM nodes** <br> If the same inline SVG is rendered multiple times on a page, each instance creates a full copy of the markup in the DOM. Sprites use `<use href>` to reference a single shared `<symbol>`, avoiding duplication.\n- **Slower rendering** <br> Frameworks that use a virtual DOM (React, Vue, etc.) pay additional costs creating and diffing VDOM nodes for every element in the SVG. Sprites sidestep this entirely.\n\nInline SVGs make sense in rare cases <br> Complex animations that target specific SVG elements, or SVGs that need to be fully self-contained. For icons and static graphics, sprites are more efficient.\n\nFor a thorough analysis of this problem, see Cynthia Rey's [The state of SVGs on the Web](https://cynthia.dev/blog/the-state-of-svgs-on-the-web).\n\n## Requirements\n\n- Node.js >= 20\n- Vite, Rollup, or Rolldown (including tsdown)\n\n## Acknowledgements\n\n- [Ivan Volti](https://github.com/ivanvolti) for creating [ember-svg-jar](https://github.com/evoactivity/ember-svg-jar), which has been the standard tool for SVGs in Ember for over 10 years, big thanks to him and everyone who has maintained it since.\n- [Cynthia Rey](https://github.com/cyyynthia) for [vite-plugin-magical-svg](https://github.com/cyyynthia/vite-plugin-magical-svg), which directly inspired this plugin's approach to sprite-based SVG handling and embedded reference resolution. Her writing on [the problems with inline SVGs](https://cynthia.dev/blog/the-state-of-svgs-on-the-web) shaped the design philosophy behind the design of this plugin.\n\n---\n","readmeFilename":"README.md"}