{"_id":"svelte-streamdown","_rev":"50-af0d956b126d905d0bf46bdfcd40229f","name":"svelte-streamdown","dist-tags":{"latest":"4.2.0"},"versions":{"0.0.1":{"name":"svelte-streamdown","version":"0.0.1","keywords":["svelte"],"_id":"svelte-streamdown@0.0.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"e909c027cb88a53bf10434667cbaac3ae6f45115","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-0.0.1.tgz","fileCount":98,"integrity":"sha512-nMR9L1TkP7iw8Nwq9aS1F+FfIqYow4ITCZY3qj5mXx+peSrAjKGTZVIORlSI72l0SfStHsGkBXI639B21/+OHQ==","signatures":[{"sig":"MEQCICb1EE5ZEhvmOvlMO/TD5FYOJLBjL+BGkkDBu4TvQdbNAiAfrxpOqnbE1GJ99twSzNrB7xckbYVcEurX4LHDDz7X2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109013},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"92e207c7ed799f41173aff651e6bb038ff2aec3f","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"Everything you need to build a Svelte library, powered by [`sv`](https://npmjs.com/package/sv).","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","vfile":"^6.0.3","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","react-markdown":"^10.1.0","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_0.0.1_1757343275883_0.6112177944573292","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"svelte-streamdown","version":"1.0.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ff68aac2ea25c1b729c06f970c5cbeef4dfd40d6","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.0.tgz","fileCount":101,"integrity":"sha512-b2f6SWK4SY2zrK8NTn9SLpfo3gRNOLf/9+5hZBX/goqBYTeLwEbil5JdCZWE6jnC30w/pP/dF98mC5knCDL8xA==","signatures":[{"sig":"MEUCIQDEQ94JmqoOtK82WDG9AHrld4RjRo2I+l9XHg2I2ZV0YwIgQwvCvMS0/+TYvgtTVWMRxqOEiXLBxH+eyLzHkaMCr70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157281},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"66ebb73de201b5f442ed8bf181b6b4a5c8accd21","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","vfile":"^6.0.3","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.0_1757423950180_0.9308746654411193","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"svelte-streamdown","version":"1.0.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"e3f12dec6936c25948052b27e12d661f651d1baa","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.1.tgz","fileCount":101,"integrity":"sha512-4t0ktDqTyWu3byisZRcOf2Xy55utkaZBFtC8Z5SWK7kXvdNxPw4ZOCsFiiw/M3rdjWZgWoqrNzDDU8bLdZo9xA==","signatures":[{"sig":"MEUCIQDoIoDMjqTnh7IBnE8tLDu41SKWmKoKyyeeAza//kFGGgIgY8JkfcobutYNDERZXa7rLC8UPXnYXtHUCaody0bVBtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157069},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"a414ad5d3b2def93ea87b3cbfcc6b4b403174ab0","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","vfile":"^6.0.3","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.1_1757426237091_0.1393884590349448","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"svelte-streamdown","version":"1.0.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"7c7975864ac76512dcd40619e95acd8e47a29bc1","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.2.tgz","fileCount":101,"integrity":"sha512-L1gev6ipG0xRZV3HoIuBK54NBm1iNmDYr7XuZf4RLm50OWTXi0I03QU5EYeiNICU4+TgrbTkJux0qCEPrCCL+w==","signatures":[{"sig":"MEUCIQDKsCpJp96cvXGnhsi8zIfkhqlNRCLFeU9dwoVu1MBFHQIgI73cnBLkzzuxJr0eaDxWAGxjOPwo3uE4WKK9+ZiuCFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157069},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"7074a209bb1c23761369868e2704b61f07c594a5","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","vfile":"^6.0.3","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.2_1757426894832_0.1451141135966807","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"svelte-streamdown","version":"1.0.3","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.3","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"d193b2307d33c6890f32ae1e04cdfd60566f8ca8","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.3.tgz","fileCount":101,"integrity":"sha512-48k8koRIGqQ0nygOaSrltf/ZvHMTjmYkUijz6pIt5zZRSwmcBLuB96Ez1F/Ltspd8B6fN1pfDd1gaS5NoiXMQQ==","signatures":[{"sig":"MEUCIQCU5am+0VqC54lPJnMJSwz0skpNNrSd4+rdd+ajmsGmCQIgUEf5lMsvlLK7jdtgCbeUG66096cs8lDzWcBxthCgelQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157041},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"4cbd3a228578b2cec3ce07d75b73121abb03a692","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","vfile":"^6.0.3","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.3_1757502490523_0.0005588126104740798","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"svelte-streamdown","version":"1.0.4","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.4","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"02e0040d060ddcf14ccdc29e364a7a65c0fe61f5","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.4.tgz","fileCount":101,"integrity":"sha512-gJVeBiXgacL5eHOLOHgmPB9sH+sZm389oqZbYcHuYDpbDHDpGkXyBeRsa7D0D1MHiXEhYMB4R9WCTKxG9Wi+Bg==","signatures":[{"sig":"MEQCIAg9FRW4REVgIEdN10sASW+7zm3oGFHS+50K075l613lAiAGKPU7Q7JrYTdKiyAXhvJT32aog+Bt0SBNzMn476l8WA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157234},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"4cbd3a228578b2cec3ce07d75b73121abb03a692","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","vfile":"^6.0.3","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.4_1757502673891_0.08229877365293703","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"svelte-streamdown","version":"1.0.5","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.5","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"be593161842e3658933536d4e575b0c2720e07d6","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.5.tgz","fileCount":101,"integrity":"sha512-1Cmtznx72/riShoCSMeTB1pY+xIeAcNqcPdneQAftN/CHVsPFbnU3wKPYDhYNCCeSp/Fh0CB9uI82YnAnlAURQ==","signatures":[{"sig":"MEYCIQDlt+Wp92mYz/A6JuL6COS8NzJp5AoDk29VA/uuYQBvBwIhAOE/UI9WcUCIqcJ5b0YmKF7tJCYIXwZmkRtrop0/F1mo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156051},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"c2cc02a3b5efc3b51c1baa24f1d1d0be0337d8d8","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","micromark":"^4.0.2","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1","mdast-squeeze-paragraphs":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.5_1757582832242_0.22074004749607212","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"svelte-streamdown","version":"1.0.6","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.6","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ab5204fbf77f8c35aca60c852c2d2229815dfaa1","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.6.tgz","fileCount":101,"integrity":"sha512-L9HS/8uLi7deRbE0PUzXiMA/B3s3ERPxbNtuwzRUDgzs+aB2+P6Ikk0YNB8Mu3V0DjWXlgxolpD7tvBRXJSzng==","signatures":[{"sig":"MEUCICeC8IVB5j2jKzfzlICSOEHqkWkJr7NhR3yLvDdaoBeuAiEA+iX04qVu1MeL+MpijbvmZ23BM7sVjDPLR4y6PWAmQyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155986},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"c2cc02a3b5efc3b51c1baa24f1d1d0be0337d8d8","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","hast":"^1.0.0","katex":"^0.16.22","mdast":"^3.0.0","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","unified":"^11.0.5","remark-gfm":"^4.0.1","@types/hast":"^3.0.4","remark-math":"^6.0.0","rehype-katex":"^7.0.1","remark-parse":"^11.0.0","remark-rehype":"^11.1.2","tailwind-merge":"^3.3.1","unist-util-visit":"^5.0.0","html-url-attributes":"^3.0.1","hast-util-is-element":"^3.0.0","rehype-github-alerts":"^4.1.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.6_1757582906829_0.6996287917699398","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"svelte-streamdown","version":"1.0.7","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.7","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"bea3ff0c6da64749c1bf012fcc0ff0e8a3a964f3","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.7.tgz","fileCount":91,"integrity":"sha512-rcbC9ngNHCZWufO6nJRnSjC7cVjuof15ETYXFfLi6g2fVYp/tXlJZjoLK8YajR9wxoQqSAJJMcK/Xz6/bLmuyQ==","signatures":[{"sig":"MEYCIQCp99oA8HesdCI43YTaqg80Mb5hM6dg94IWCLy30UCrsQIhAIPLnayK5QlmrCowoWQr7lNVyuUUnyfExQ1HwKatzFQe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145568},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"ab355d89aaf244ca84656d635523aa27b829b93c","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.7_1757788736539_0.9109302945872957","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"svelte-streamdown","version":"1.0.8","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.8","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ad3fbff770f1f659d527ec6bc93ef8332ce6013d","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.8.tgz","fileCount":91,"integrity":"sha512-5Bt39NYNQoaGSs5qCZCfiJD9c9QexfIeFDsyDhlRRcqARXTWUFUIb+m7yZKE8vkLjdkQwJIOXLbsz13FnhQKAw==","signatures":[{"sig":"MEUCIAUIggotWzZBPlL4x3jHDAmaAgOxouHXB2BZMn39XeqsAiEA4/FUCvthwohm3KQXJHY52OGmP4+h+omLg+PpYSbjPAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145508},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"ab355d89aaf244ca84656d635523aa27b829b93c","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.8_1757788847708_0.5647736655000348","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"svelte-streamdown","version":"1.0.9","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@1.0.9","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"9402946a408907283760f251facfb03305333912","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-1.0.9.tgz","fileCount":65,"integrity":"sha512-vm8nIixz7zL+bWm4uBh/h59hEp/tMWuJ19Nu8PoMExQKJyA3nQkOX8x36qhFe4DpZmxRL82MnPd3Ad4D+BTgDA==","signatures":[{"sig":"MEUCIAYUhMdKHkbSodig1wBHQrQOmDLJTMvVysr3nMHKEmMIAiEAq0h5MGN0UzIzbfmxHCCha5C1rLiqEbWxv36sICB0YR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159927},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"ab355d89aaf244ca84656d635523aa27b829b93c","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1","@fsegurai/marked-extended-lists":"^15.2.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_1.0.9_1757810528952_0.32092480838204795","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"svelte-streamdown","version":"2.0.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.0.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"3393da0119a6db6dc5b0fd59cadb2077e949da18","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.0.0.tgz","fileCount":67,"integrity":"sha512-U6ShJkMlZZXxX9ipvs4ugn+YaM+zokzFIgzjSWute12wH6AwqVfE7jL8Vmhed9mMlJ5ZXiFhhyPhw1wyW6CI4Q==","signatures":[{"sig":"MEYCIQCasN0X4yYL14b7rl7XyPiMAUSg91JIdZjanl/kOo2omQIhAIcifNU5ft+jBX+r6f/N2DbLOuf3gik2ABW32JmhhKcr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183258},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"4886fa1427edbd5865885c96a64eab83d881ac76","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.0.0_1757852840585_0.4826999464484454","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"svelte-streamdown","version":"2.0.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.0.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"366a3edbd347d0399673a9ce38316f0c7e1bc10d","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.0.1.tgz","fileCount":67,"integrity":"sha512-e/mL6nLAZtoLMaX/nM27WMR4y7ETpl9tBZ0u4f3kUf6cxIIJ44diL2NQNIfiM/Ne3hAGlzZt9JOhSxyUea81Lw==","signatures":[{"sig":"MEQCIEtY4c3PhLtYusR4XuyW/HvfzUhDG7H3XD5yyKG1qT99AiApReg0x6UV+D9Qbz98hx8itHZ80vgPk/rpAZcCRb94ZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183175},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"31b90f63279b5002b100fbc2ba64e4b7263576ac","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.0.1_1757863670902_0.8887636317655325","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"svelte-streamdown","version":"2.0.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.0.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ad7de3560f08a6cecaff748bfce8079f6895f390","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.0.2.tgz","fileCount":67,"integrity":"sha512-cfke3loEhrFmLPSyRpLoFWiiQtE7g3RBVe5HGipfXubXXM6E6WgRvTvLKdmHDx6oEzolAEcjxAOcXkUf47MNgA==","signatures":[{"sig":"MEUCIQCJ0+I4J0qAa6gGQQAI7usE6Hl0b21JDYNlWJDCDzwHugIgaPeFLsE4/SR5N8sQp8lWADFdXeUwnUx629CpWaEEI7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183209},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"815b7c7eb79168a8e881593b3e100df5f86db213","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.0.2_1757863923272_0.7947625145243136","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"svelte-streamdown","version":"2.0.3","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.0.3","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ec64db6a83a0c9bf1127db771854f8e052723bd0","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.0.3.tgz","fileCount":67,"integrity":"sha512-iz2MVStN9AXkrtjUeRT1zBJShHoH1Yw2jVbMf7K/tVz+OBQ2Jus+mdKEqv68yOqySIfzVaOBrJKDpqAp0tyOUw==","signatures":[{"sig":"MEUCIBo+v+RbaYFOtv2GPV4jb2Wa+HpkIaaafTlWuQyjbwdlAiEA37fmOyXtaXr9l56OKNxFhK5Vqd8k7BTl0RlTjjbHBiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183277},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"815b7c7eb79168a8e881593b3e100df5f86db213","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.0.3_1757865920131_0.7945673787701348","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"svelte-streamdown","version":"2.0.4","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.0.4","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"19244babf7e0d51652e7390e26fda9cd48f0cb3c","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.0.4.tgz","fileCount":67,"integrity":"sha512-mj4EnEqQ6HoOkWYaqbQLzSK8sU+/fbtZHw2KXPcIziR5nYE+ahzDwhLfqtmmTnjaY4MaXzriZzucpqLzgLzZ/Q==","signatures":[{"sig":"MEUCIQD01CxrUPWhLO1Cv+inKIr/jC0vSSqrzrja4bR1ju4a4QIgH4IZV2uAiIZKpgdDUTxnbEaaIPc1maWVOepzgDjrJXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186724},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"815b7c7eb79168a8e881593b3e100df5f86db213","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.0.4_1757928008568_0.4792791323436876","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"svelte-streamdown","version":"2.1.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.1.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"99b7c2baf006858f7e4806c8285184b3a4bce3ed","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.1.0.tgz","fileCount":67,"integrity":"sha512-v+tIlWmLXwqVNk90Li5YK3BemsCxhedZ7Yeo36PId1z7x3NLqeRXSNppw5t/pjmk63uCoQjiBjPaUSSf01Om6w==","signatures":[{"sig":"MEUCIAzQ18kgNKyQ4DPl4z7YkYKfGFnKIy8Q/SoT8IXViWz9AiEAhb7et/hko6wQKc/YbuszGjqNP7Exwc47k903GRmq8MI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188828},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"5d06dc9337364ec4ad5e1cec19164acae167feef","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"[![npm version](https://badge.fury.io/js/svelte-streamdown.svg)](https://badge.fury.io/js/svelte-streamdown)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.1.0_1758098720563_0.3369801589382615","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"svelte-streamdown","version":"2.2.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"3cc8a6c330a51a07fc7d4b0adf9512fa40f7f1e8","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.0.tgz","fileCount":70,"integrity":"sha512-9Bkx2ANVz6nkR52OxJVLiXMqmafRO06g2niqBojLJE1LPDjNatUZuL1wPyICefr3Kh50oHd4Z9szcFPT/6cMsw==","signatures":[{"sig":"MEUCIFoJz5zp39VNGleG5iroWvIsn5iacVUsevs/0RYHLpwCAiEA94upKNLftj7tJDKol12xhigo9U7EJ99UiVYD3LtOGcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197829},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"568bf635e88bf17e2efa9664a8259612ca2549ac","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.0_1758195936692_0.08473168458990443","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"svelte-streamdown","version":"2.2.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"216c91e3360c1d9e4132248f18a7e2473a627086","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.1.tgz","fileCount":70,"integrity":"sha512-WJ3lXbsSLBS870z8KTs9WMaXB4mq2NhKidUuPjF7Gb/sYUJ5fpEnhsejo97HMe2HVeZ4AqzZ/L/QxsXWRybEGw==","signatures":[{"sig":"MEQCIHs6+wyPDC1ow1xcgku2rmD/8rMOFCIa8TxmVqK86J64AiBlGpLoheh6KaEL27618v168rGHtcOcNKi+6SHHEzHHzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197937},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"0a6e9534c2dc29c89ee31d9e2b18f94d8bfa1718","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.1_1758204537263_0.8549137780108578","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"svelte-streamdown","version":"2.2.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"8e2c009547e2eb6ec2a31d19cbceea639e2f49b4","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.2.tgz","fileCount":70,"integrity":"sha512-GAZ5cuNq3Y3kRNxpPRE1pE1KRWOS4Z4w6NzpfSKc9BckSqnNJjKUYSUnCsoywSbjlHX6kj45bs5/iZjiQzYu0w==","signatures":[{"sig":"MEUCIQCLEOdZGojV9GV388jB16p/WddA/wayEo4Dxq2ag264vwIgUjdl8GvSxYn6NDat7VqcPVbgzbV54WWaK7tjBqF/8SU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198973},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"53b95721b2d53c48eda52bca028c0756aa284342","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.2_1758210333502_0.3159995709891317","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"svelte-streamdown","version":"2.2.3","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.3","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"db0a7961f0f0d6bd3047ef7aa26d368beb485ee3","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.3.tgz","fileCount":71,"integrity":"sha512-atJylAZ+7A9xSFy7pRchRHmIjTlCvC48U9CodNAsgoHgzwl3q6q0TIU3fi3pdBlDgbqdiEoDIZ6Buw90SC2QGA==","signatures":[{"sig":"MEUCIEa6DbQqevm5BOlzV5tGY1K3K1qJdKajj5eXCA1iss4UAiEApe2FLapxZERgFdS22m22MR4R88j9g9HD9utZ7k7VE0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199162},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"d7dc2971f2250ec78ff49f2c0810867a93a6470b","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.3_1758211162336_0.36777222283250843","host":"s3://npm-registry-packages-npm-production"}},"2.2.4":{"name":"svelte-streamdown","version":"2.2.4","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.4","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"81d3550efb6ea23c6475c7d0832cdb19e102e633","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.4.tgz","fileCount":71,"integrity":"sha512-nk1LWM2HA37q0CSSu914SSVJxirJhVEAnpYTO1bLzC40Ch+9It6nC6VEKnDpxoKrh4DAXBK6RdmwEEu5NSYpbA==","signatures":[{"sig":"MEQCID8dLXb6S8+aRdi7WmnG0QvsseS9fhY5xuERoh0jEOc8AiAC+RM+SGUWKPiZMvJc+IAzghBLeO2NWP+IvUPilzX0Vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199233},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"9c8d6224f1edcae626015d1a77815c68e7f0e9a4","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.4_1758216811336_0.38473165170379664","host":"s3://npm-registry-packages-npm-production"}},"2.2.5":{"name":"svelte-streamdown","version":"2.2.5","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.5","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"b3d84996850ca180669a277cc0e010518132a188","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.5.tgz","fileCount":71,"integrity":"sha512-9k/F7En/wZv2EyJDlgY9jEZYrCNfHttNBu9oVk9k4+enpbplyLs0H/oNlB2k6VnHc8CDI6QXTjFZR6pkSZtARw==","signatures":[{"sig":"MEUCIA3ahPWJEUVMhlRCPugif/+r23HX9PF6SppekOCsiDFDAiEAosae1miG212leBgH7SyotlLoqijnAivKuVi04SyM3uU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199365},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"00758d5e6fe45f6a6f650177188ff6291def28d4","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.5_1758219517692_0.7515275440344884","host":"s3://npm-registry-packages-npm-production"}},"2.2.6":{"name":"svelte-streamdown","version":"2.2.6","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.6","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"03fe8c6aea4b474e339a6409632469980ff719a0","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.6.tgz","fileCount":71,"integrity":"sha512-NFQ5u+c7aSNd/kygP0KXzzZlpu6nh5J6pdALTEipZxRmnW1xbF2CKX3pWOLBGRE/n9koTKX/fnDxWF++oVrcNA==","signatures":[{"sig":"MEUCIEAzcfyn26Z/HhxOV74FCZ1Nf7vOJYNHz/4YWgGH/GTAAiEAtEQRrMk+kxRdAwfr03Nq1iLMAtuTELJ4WqypRNC60D8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199355},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"00758d5e6fe45f6a6f650177188ff6291def28d4","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.6_1758220614989_0.46363061801176353","host":"s3://npm-registry-packages-npm-production"}},"2.2.7":{"name":"svelte-streamdown","version":"2.2.7","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.2.7","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"cb4676d937f8123f3ca8df606a8de8425525a282","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.2.7.tgz","fileCount":71,"integrity":"sha512-t3EtYeIGu4Ovtf+JtjrKKh1eJ+Av1gtT7hVHeoC8SpEp9oc0cysywCJPQwxXRBEnFZ143DcAbG448afB97jSRw==","signatures":[{"sig":"MEQCIGDWGAtOfCgf6H7cXXkHqGXxX+1YlmhNtZB+/yFSaDBlAiAwRklNFeu1t9pMUYrUelkilc0j1WBj2yF0beHFX1i6ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199576},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"748b829e038b9b5b70c08230a9ccf9ccc0f31dfc","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.12.2","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.2.7_1758269613316_0.6116840522943701","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"svelte-streamdown","version":"2.3.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.3.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"c93c4ef1917f9929888c27503f41b02c7aa35c91","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.3.0.tgz","fileCount":73,"integrity":"sha512-ea5FVPwVFekdEjftJzLd4E5xCzuTNZ+/7gu8zhPkqTy1lWOXYIgzWFIryYLzfup1s9KQ1hsyj8OPKz1VHRrWBQ==","signatures":[{"sig":"MEQCIDultaTueMAQAPVDoDamP1sSzj9j9YrAbwH7XFCSA4RTAiAthLxipLQsRW0d7pZMXpX3TvuoNqVrF6TomdcSePI1iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218210},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"af7bb05752031f4680bdbe218ed710237919f480","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.3.0_1758451984322_0.6829612132190572","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"svelte-streamdown","version":"2.3.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.3.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"e67557788786000b3b196ced0bc5510b4e982a94","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.3.1.tgz","fileCount":73,"integrity":"sha512-pfvDRlH1aAbUuVSaZuauepZGPnjUQIczZHuPuGJyz1PedSXUNpsgeqxbXsZNrmwT7mt/Y9cyeOLFQ34NX1XYcw==","signatures":[{"sig":"MEUCIFxMauyz1xyrjYKApg/qFYskNnoTcdj19LXcLkWBWFhuAiEAq7+XcuZLGsO3WUEwJ8yPLzZ9S7WgVfWtpcc5fQ1MaUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220438},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"4fa87c23b8316abf9cc80ecd091e5a01b27fba99","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","html-url-attributes":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.3.1_1758529808895_0.08248805165793982","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"svelte-streamdown","version":"2.3.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.3.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"a11ddd30082ba5ef1cd6266b6cc0aaba2d32f0ed","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.3.2.tgz","fileCount":73,"integrity":"sha512-Jkv00P66xbfcRxsp+J1TpIrAP8/1sVaDLOZa+eStqxHi2zzK5n6pKoKzi8hIhnU23OxRFk+ZcE/mOPiEi7S2xg==","signatures":[{"sig":"MEYCIQDBG+uZQfLLfhHa5cCCZxL6V0toe5iJD6fHvMjwcJNtngIhANq9HNFDtLggSI5bCSmSDJj+r4D4CeBPTzeFxmc+3dkw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215609},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"428a4a2f608d0ac134b8766a5d3dbd98df1f856e","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.3.2_1758662258904_0.22410733674434336","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"svelte-streamdown","version":"2.3.3","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.3.3","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"2e603ed402e13fac991105ca1f9141e6903b5c92","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.3.3.tgz","fileCount":75,"integrity":"sha512-2/sT+f4Fvm7gCcIWMpRokobPTxFNhaU6OJBfC08suAueXql9FDp+27eIXD9/c06oKQyuSNY2TqgpSWoszs1r2w==","signatures":[{"sig":"MEYCIQDsNgPCIGaCODsa+8tRl+nRiAC2wK1LT8TD97vFBH4k3wIhAL6/QcJQRJaVgiaQ4goDsHINqLrhyZxkM/G8AYpr/l5t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220525},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"a9295a98858ca8ec97c24175a4750e26a2f54af1","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.3.3_1758667641832_0.9386458255181978","host":"s3://npm-registry-packages-npm-production"}},"2.3.4":{"name":"svelte-streamdown","version":"2.3.4","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.3.4","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"5cbc8f7068c8f99d3a15217fa6bd022bef7595d2","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.3.4.tgz","fileCount":75,"integrity":"sha512-6kd6nMz3rh+fHzssffC4zm+Goc+Mv4SSEqaZFailwqEX5vggcEH4w9NV+xAJwuWhzPTDB6NdJRn16w+rZguqpg==","signatures":[{"sig":"MEUCIQCRFUknNHIgf95Ct9G27dv1xSZBf312VpADtDoLWV1W0QIgYnLqzru/v5x51bRdU8LpuyojTBShwA7xmDnYDGwfcIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220452},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"6b0f5edc61c6b3089796d6423c07bd81dcd869ec","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.3.4_1758724377278_0.5605150139840676","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"svelte-streamdown","version":"2.4.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.4.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"de97494c73a80eb04af54acbb1c1bff17049c69c","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.4.0.tgz","fileCount":73,"integrity":"sha512-b73Jqnj0RzRlRWtLl4jcJ8HaOGi0s6wZVKsCLuWjsvgT6aq7Zf1FwzVx9QkF9kQSsmpOXo1o8q97Xq7VoBXA6A==","signatures":[{"sig":"MEUCIFkObuFTthtnnfMsgIVHPdTvMie+cQbJGDL4EdFM6u75AiEAhGgb5v3cxe5iowSkUok1xa8It8EKE+mmpQxipOpFxKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222999},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"c9f41115e47b078305bd97287aaf98b05852673c","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.4.0_1758734643270_0.8452476645248714","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"svelte-streamdown","version":"2.4.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.4.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"9ffd9d66bc473637fbaff5c9e629c2404de3b7d1","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.4.1.tgz","fileCount":73,"integrity":"sha512-zHGBahtmukE40rAycK73dqzsNgYIUskWDBk80b/WjywP8x4d+9B1TUW2CH8t+goq/+isVYp7yK2o1Sm9Fotp/A==","signatures":[{"sig":"MEQCIBoibi0dUSaEUo7knextvXGBX2pc183eMSstNkybyBzyAiAQN61GjxcNYUGeSIfY8t7djE6ml+fla2I/DsuPGxY3sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223064},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"2f95dd05c0e3bf312bca2bb780e53ef288ae1dfd","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.4.1_1758734947000_0.5934283116649071","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"svelte-streamdown","version":"2.4.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.4.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"11525ae25ac596606e09ba82f910a62e188f5e30","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.4.2.tgz","fileCount":73,"integrity":"sha512-2nxlXA4QbWe3KttbCXJq8aTzWFZlGu5nSHeI4uZX4cV7ZMc951SiiROkEdF4+mFnOaftj6/0JG48d8OG4a+Xdg==","signatures":[{"sig":"MEYCIQDrj+9Rd9RXI2WXLD+eImFZBgt7L5Uc3+tAlUhwmeJfAQIhAMmKIUeWjFsgFYq+YWa8fYRnrAZQVu9H0t7pwOP0e/6Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213389},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"e4123d3c8c88d0b323ba45b1e772878362ebb293","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.4.2_1758790849286_0.4454379450376964","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"svelte-streamdown","version":"2.4.3","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.4.3","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"bced63c09d38016cce47ba5c44b0f5adb94770ef","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.4.3.tgz","fileCount":73,"integrity":"sha512-Vf6xKLt15JKyrspKUItofiozBDuo7JY53xpE90MT83ZvW37ettZrP2E0cpy5NfGapzz4EssorSQ5q/BcP2m/Bg==","signatures":[{"sig":"MEUCIBWZw668QzM8IabxtaSBkOTWqQeVt6Z6E6nK4XloQnxpAiEAgrJvOfe6nJJ7RnHQDeCoCtIX/9ryXLZqkJfrvxNnacQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213527},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"92f43c47aff5aaea4cb61c31abc087d8576bba2b","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.4.3_1758795759693_0.5413778760890093","host":"s3://npm-registry-packages-npm-production"}},"2.4.5":{"name":"svelte-streamdown","version":"2.4.5","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.4.5","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ce060ceb896ba7d92d5e479f78f21e1b6fe099ba","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.4.5.tgz","fileCount":73,"integrity":"sha512-fTForS6buZ9ZDFx3RbvAY3ZQaFtff5gJMSVvprYuMp7ULCZF4T1hB5Oa7INEhOt/Jrnr24zWI6/+yWmvTD5GrQ==","signatures":[{"sig":"MEUCIGd8ftrJLVM9F/maia1WX+JEklZYv4cQFgbP91lhHP95AiEAr0+6I5rLQuATdKk+X0U5llcysXuLWtKh2FtNqKReZmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214667},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"5dd49c47c0a3fa20a6c8b3c1c7b3eac4a82d0327","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.4.5_1758797096876_0.011598137268829634","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"svelte-streamdown","version":"2.5.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.5.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"44a0c6d128fccca11fcd80bf455d030bbe4a646d","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.5.0.tgz","fileCount":85,"integrity":"sha512-LWxfRk6c9N78xScvT0q6xc/5L2lpARCabPCGu+lXF4oFy3WwkFvuWh+VNmXpHeCy6Rn47XOBJ7s5HWqhagRLNA==","signatures":[{"sig":"MEYCIQDfLlNFd7e6QlF31GwFnf+5WPJFgu76/2M7w5Tceg8IDAIhAIAsIi5cshyQdXbfxk6VI4W/Qrqw0l0fi1o5TYPa38J6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245992},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"a07211d21211a7e827d02552aac9906ddefddc53","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.5.0_1760533786757_0.7848749628102722","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"svelte-streamdown","version":"2.5.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.5.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ccb03475320b4ff3875933a4a7e28223d447f8c3","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.5.1.tgz","fileCount":89,"integrity":"sha512-PnBH1eY9FAXlfQ2BcvW3T7Jheu6Dsbqwda+0OPts8BWKgwh/Q7vu/Y6axv4PtrzXmXGMUxtmFbb1T8EMnG5tig==","signatures":[{"sig":"MEUCIQD0zrFHblC5+37ydnz9PBpBasxEWmPDb7GgyJIO+RYEnQIgbVg2ze02JK+sHSk3Hq0YRpAB6KebBC9oX2Ba9xBryus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257503},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"39abbe55086de6b350729ecf0d6f2674ae942f35","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.5.1_1760599590194_0.8405814330262478","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"svelte-streamdown","version":"2.5.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.5.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"d329a230528ff634831166dfadbaaa75ca5ab828","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.5.2.tgz","fileCount":89,"integrity":"sha512-okKW7A/r8pG6HM5cIhnrQUjpBKZEz5XABC/UO3Kn98bNTNlsd4vH2JLAdKOwkNwg0m1xXJY7ZBHbSj3v6GZzpQ==","signatures":[{"sig":"MEUCIQC5ZucMRiLA4JVXexa90BD3EBCLu/rXUx6YE5kILXAAmwIgGarKIFBHIQsEG54g3lNDnup5C/Q+U2xpRCzAMzqECfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258093},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"e68a4688bf30d958d0cee3af2ce35b841ae9e281","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.5.2_1760601708092_0.07070001431014727","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"svelte-streamdown","version":"2.6.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.6.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"131c4fd764bf60951a50a35698eee89b45a98272","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.6.0.tgz","fileCount":91,"integrity":"sha512-D3FQ5hPjMsAQFeHuMoqreiBT4FUHlbdxq0ZaHd+3zR9cCBG4RY0SKLUtLxAgaE37q6yjY/vh2Zsq2kYjEL4iAA==","signatures":[{"sig":"MEQCIG2KMBquLXWYVS/YIwARZEDt7uC//6uq7FKSS6mCRk7TAiAjKGnuBv7E9P5wAgVXoH4BL5D0tZyULSUEigekG4eXtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273745},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"0dae8e5590322585f39aa04ae333f477489eea2c","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.6.0_1761412519101_0.8224850936502515","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"svelte-streamdown","version":"2.6.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@2.6.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"4fba7fa1da1f0c8e54ea4be4979b4be22040632c","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-2.6.1.tgz","fileCount":91,"integrity":"sha512-0mt8sEKRIrO1ZDI04CXxkqqiOAkzjUzMLrXeJoyhnEv605hYC9yASFb2sECDnD+CEI2toUfXRu4YAx32tD5rOQ==","signatures":[{"sig":"MEUCICXRNXbCO6dn8r8ADG+XEenQkFoXkRr+A3ClRw5ZGuyQAiEA5liVHxhSPJnMXocyYvWvqnlE0pwrBa+9rTQMFuvHs/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276271},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"gitHead":"3ebe2c9c88d0286d630ee4ae6e2cf0c4dffdb97c","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_2.6.1_1761417579349_0.14234432332820157","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"svelte-streamdown","version":"3.0.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@3.0.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"ad7a5708b13bc4bf816221e6b1dd2f86174da394","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-3.0.0.tgz","fileCount":105,"integrity":"sha512-pD1ztYix/La5TLJg5BfUG4L+NsnIHMyh5blE07i5nQIgH3jx8w7Aty7PqjL7VaHepI2UigTaNVd2K1F7+gj2wQ==","signatures":[{"sig":"MEUCIGW+8O08X+k+l0SoOsi0oRy2YoVq8ZyC9etwEVaQEqAZAiEAr9SlmS+LRslPalfHb5SnkSu5SaqujIAGarAyAyMF33g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300768},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"2641733ef8e0bf16289a2186f7bd9b3e0c64767f","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","@shikijs/langs":"^3.17.1","tailwind-merge":"^3.3.1","@shikijs/themes":"^3.17.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_3.0.0_1764673694441_0.9682657383410964","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"svelte-streamdown","version":"3.0.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@3.0.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"dist":{"shasum":"5bb90485a812c00c70638a144bc4ba8661de2270","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-3.0.1.tgz","fileCount":105,"integrity":"sha512-P3x892AXc8mWtyrNIBXmxlF4RBMGDdlK9ndmG4lnXqPhUtHkYAsz5eD/n7w36tG8ENptJJUg3YXxvCV9771w+w==","signatures":[{"sig":"MEQCIFCbEapKikHOfrkEGNMFlbujCg1n3A9yz+7wT0rvjb2QAiBeEeOlj/LjoCyVmGl8418N9z7JZ0KBNb1SBAVNdnsQFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300900},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"64c2aeb60bd65a9e8876d077346770c0c5a197ba","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"aderbey","email":"a.derbey@gmail.com"},"_npmVersion":"10.9.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.15.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","@shikijs/langs":"^3.17.1","tailwind-merge":"^3.3.1","@shikijs/themes":"^3.17.1","@floating-ui/dom":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_3.0.1_1765025141455_0.5388204688688614","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"svelte-streamdown","version":"3.1.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@3.1.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"5a6a59caa5bf65052869d20b3dda5d5ad90917d4","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-3.1.0.tgz","fileCount":105,"integrity":"sha512-BLLbsLUZbJRMCoRQwFFjuRMzidnTQC2aeXuuTfdMRdTgcJ/SyZqezqcNDwzfjgYmOtWrOATl1/vwgvemmEfbLg==","signatures":[{"sig":"MEQCIHiLogrFL9tyV5fAK9l+LHxq7qb3HOdPAXkEZzslVBZ7AiBEdCLK9eYB1eak5bcx4ORB5/E2XvfQ7QIYVHp3NH8thQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324840},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"1533164e0b791c4330314696b0fabee6a516f3c9","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"11.16.0","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.3","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","@shikijs/langs":"^3.17.1","tailwind-merge":"^3.3.1","@shikijs/themes":"^3.17.1","@floating-ui/dom":"^1.7.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_3.1.0_1781117707512_0.12288266046582152","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"svelte-streamdown","version":"3.1.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@3.1.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"3ada1115e220dc3b02b786cd5fbcf2fd2fe36959","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-3.1.1.tgz","fileCount":105,"integrity":"sha512-ChIdBDcCluwDlO2b5J/++FBVHRvLoy9PVjC4Ojcvq92xR7VvhFSwHf3IqkhVI0JSbQEavftu+Qd+hAJN11oqAQ==","signatures":[{"sig":"MEQCIA2ku9czk/ceV/QP9Yv5B3DRD0WrZwFfJ73sVBeRHmbqAiA7WuFQ9Pjcom+ZRX98IZlqAKV8Z2wXxvKOJj1DWTykpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324858},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"91519f7d64d5ecc07109d2370ed19b20044b6157","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"11.16.0","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.3","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.11.0","@shikijs/langs":"^3.17.1","tailwind-merge":"^3.3.1","@shikijs/themes":"^3.17.1","@floating-ui/dom":"^1.7.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_3.1.1_1781189432813_0.9024977678978536","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"svelte-streamdown","version":"3.1.2","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@3.1.2","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"e8225206b2d8b98b6179151dcf6dfa6e6024355a","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-3.1.2.tgz","fileCount":105,"integrity":"sha512-yGbe24Bodv/xiPc36+YRAmhb/js+aIPpNud4GMb4qT93yviln40/qMWBw8VfaHOmQ/oQtuTtpr+pyqzEzQa2Zg==","signatures":[{"sig":"MEYCIQDr1hRuTmn/nHQX2p2hDroSsvvmouIlQHgIq5YfuSbZbAIhAICy03GNIrs45+7116++iaa3VJ9bGUPqHX9puOXB5qA1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@3.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":325621},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"1d4d65563d8d9c26d8abaf535115925066a528a6","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"11.18.0","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.23.1","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","shiki":"^3.13.0","marked":"^16.2.1","mermaid":"^11.15.0","@shikijs/langs":"^3.17.1","tailwind-merge":"^3.3.1","@shikijs/themes":"^3.17.1","@floating-ui/dom":"^1.7.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_3.1.2_1782898472951_0.855512767743484","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"svelte-streamdown","version":"4.0.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@4.0.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"2d940e471b17fd0a4044377b968639207177af9f","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-4.0.0.tgz","fileCount":105,"integrity":"sha512-9qgPRZ5PYgqI1dNlZINCDAPmMwVKwLGVvdGjkNiZX1zclsnQwW9V0rO7zHcSy4iNxiJGF3MjvpJNoghjGi+Pjg==","signatures":[{"sig":"MEUCIQCZpvb/n0QuXmmW4+kYOwvZ4y7199kPeyDHrrrOLcxLxwIgEubbOxNfNWggFRSLcqzmL3KzO52XX1ZVRbNDfOpBAj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDjLxlgeUYsMjkRyTuiZdlSxWj93GMVG3BE/xZGyZgH5gIgXcGPqJ310doiU/dVTKWua8oiXLnx/AHg0EVC08bI39Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324133},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"a30abba7443f759385e3358dd102b64a4bb06010","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"12.0.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.23.2","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","marked":"18.0.12","mermaid":"^11.15.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","@tanstack/highlight":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_4.0.0_1789335861158_0.6841745235938641","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"svelte-streamdown","version":"4.0.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@4.0.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"8164cdfed16003c1a73bd78a786bfd822c03fb1a","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-4.0.1.tgz","fileCount":105,"integrity":"sha512-Lxz0M/iXdpQEECSEMCblVuJlHxuXiSwK7NMAESJC8+yRA7hY6hKDxGgyW/weKjAeGun1glZVg4FyxieYFEoEyg==","signatures":[{"sig":"MEUCIQD5hb+DCW1oIV9+f6P/8zayEsSI8KZPrDzu0zyTn33aDAIgGrBG5GEAlSVqn1AgUPqznst/TjmrBzZ3GHy6443jt/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDMdrjc40bt3Pw1tt3aX3mekBqjr04gI2pCx6gniJNmYAiEAsSqT9VWd1imfj7HWM1SnZJD00i9wrDaNQaAgw5YLzXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":336333},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"a2ca83b1a6561eb9cb90dc052f893e83ced5dbac","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run --project server","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","test:browser":"vitest --run --project client"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"12.0.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.23.2","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","marked":"18.0.12","mermaid":"^11.15.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","@tanstack/highlight":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_4.0.1_1789397367337_0.4570515935808943","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"svelte-streamdown","version":"4.1.0","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@4.1.0","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"659c3d40fa476e6523cd1dbaa33c793fe7511bbc","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-4.1.0.tgz","fileCount":113,"integrity":"sha512-zbNIoZgxTmHlEAANUiuPVsQ+qPXZSIgVisG+1R1pQSoLk3kTqmMr3PV0ohN68SK1vbnvwmseQNx0ZS0/kXRb8w==","signatures":[{"sig":"MEQCIG3L83Vrvvn7hO/5iUogKCPn6n2uDAXAiogMkQ2H07QfAiBoOzGs7cvk5QUwNnPy6tEG000mzst95vGibCLcKj/oRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEOWGWFxsAGZwgYaMHfk65sj4R/9MaSaNTgHo8Mbzl2QAiEAsyxGku7/E9NzsM6zBqnHwwV28pMxYEz1ZHC/8xQyRqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@4.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":378575},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"668e328e6d23598f3dd38eb3bbe1fd73c30703f8","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run --project server","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:size":"vitest --run --project server src/tests/bundle-size.test.ts","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","test:browser":"vitest --run --project client"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"12.0.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.23.2","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","marked":"18.0.12","mermaid":"^11.15.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","@tanstack/highlight":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_4.1.0_1789400193231_0.13836469157179399","host":"s3://npm-registry-packages-npm-production"}},"4.1.1":{"name":"svelte-streamdown","version":"4.1.1","keywords":["svelte"],"license":"MIT","_id":"svelte-streamdown@4.1.1","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"homepage":"https://github.com/beynar/svelte-streamdown#readme","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"bc8e747d595b2106839ac675ce07ef91823a16f6","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-4.1.1.tgz","fileCount":113,"integrity":"sha512-oHDINETwlHxubzIOticWp0tEPqAwb1n+QvrvkcCturCRczhqbcXFgXCW5zXPW7uhhOHE2xiSKbv5tOTjqoRq9Q==","signatures":[{"sig":"MEUCIEOl/Mp9K4+LFHmGwaI4MhR0xZ32gM6uwB8LmZAtTdgEAiEArntoVesRfCMqQQqu+KgU8592s4yZgxSUBR9dQSe98wI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDD5Gio0QEeezLqaYh8LafFM/1na9gIsMOIRWBWO8laYgIhAKEYtYgb+Uw+DWQ44Zkn30oFbujVtJav7Cvtti1FheR+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@4.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":383664},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"8a92e05a497d7d459d3ece530da8051ef00e7c2e","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run --project server","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:size":"vitest --run --project server src/tests/bundle-size.test.ts","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","test:browser":"vitest --run --project client"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"12.0.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.23.2","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","marked":"18.0.12","mermaid":"^11.15.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","@tanstack/highlight":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-streamdown_4.1.1_1789414262326_0.8701630490168317","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"_id":"svelte-streamdown@4.2.0","bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"dist":{"shasum":"7597e343a061b242f0aa1dadf918dd26f6dab4e3","tarball":"https://registry.npmjs.org/svelte-streamdown/-/svelte-streamdown-4.2.0.tgz","fileCount":119,"integrity":"sha512-VEJxXxA162NLvxNoXmJHuzi6uY3NeWmV2fcRuy8MIYvhRM0/8proibAowti28inAXGBgFUwqSHFhnyXCB6tYVQ==","signatures":[{"sig":"MEQCIFnZH/xn6zEFDaOPYceLhfWQDzB6Cja/oJnkRsweggFvAiBFajHgrfJLNHHO883Z63IZ9cirJL4XKVib/+xsxXwYRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCYUas+MJaAHztUWy4dYs5nZl+r99gzjPFbpeDm3YhmVwIgH/6rc3SoU9pnzgs1p89gqETKZBB8Et6OGF0vfhYlRp8="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/svelte-streamdown@4.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":414278},"name":"svelte-streamdown","pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"},"./code":{"types":"./dist/Elements/Code.svelte.d.ts","svelte":"./dist/Elements/Code.svelte"},"./math":{"types":"./dist/Elements/Math.svelte.d.ts","svelte":"./dist/Elements/Math.svelte"},"./mermaid":{"types":"./dist/Elements/Mermaid.svelte.d.ts","svelte":"./dist/Elements/Mermaid.svelte"}},"gitHead":"085b97daaa046d1ddd5b73354322e6f16c7b6628","license":"MIT","scripts":{"dev":"vite dev","lint":"prettier --check .","test":"npm run test:unit -- --run --project server","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","format":"prettier --write .","prepack":"svelte-kit sync && svelte-package && publint","prepare":"svelte-kit sync || echo ''","preview":"vite preview","test:ui":"vitest --ui","test:size":"vitest --run --project server src/tests/bundle-size.test.ts","test:unit":"vitest","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","test:browser":"vitest --run --project client"},"version":"4.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0030d3a1-3ffc-4bbd-b6d2-d6f53d97cb06"}},"homepage":"https://github.com/beynar/svelte-streamdown#readme","keywords":["svelte"],"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"_npmVersion":"12.0.2","description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","directories":{},"maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"sideEffects":["**/*.css"],"_nodeVersion":"22.23.2","dependencies":{"clsx":"^2.1.1","katex":"^0.16.22","marked":"18.0.12","mermaid":"^11.15.0","tailwind-merge":"^3.3.1","@floating-ui/dom":"^1.7.4","@tanstack/highlight":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@10.32.1","devDependencies":{"vite":"^7.0.4","svelte":"^5.0.0","vitest":"^3.2.3","publint":"^0.3.2","prettier":"^3.4.2","wrangler":"^4.34.0","@vitest/ui":"^3.2.4","playwright":"^1.53.0","typescript":"^5.0.0","@types/node":"^25.9.2","tailwindcss":"^4.0.0","svelte-check":"^4.0.0","@sveltejs/kit":"^2.22.0","svelte-themes":"^2.0.8","@vitest/browser":"^3.2.3","@sveltejs/package":"^2.0.0","@tailwindcss/vite":"^4.0.0","vitest-browser-svelte":"^0.1.0","prettier-plugin-svelte":"^3.3.3","stick-to-bottom-svelte":"^1.0.1","@cloudflare/workers-types":"^4.20250906.0","vite-plugin-devtools-json":"^1.0.0","prettier-plugin-tailwindcss":"^0.6.11","@sveltejs/adapter-cloudflare":"^7.0.0","@sveltejs/vite-plugin-svelte":"^6.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/svelte-streamdown_4.2.0_1789427747797_0.6624690791640777"}}},"time":{"created":"2025-09-08T14:54:35.883Z","modified":"2026-09-14T23:15:48.469Z","0.0.1":"2025-09-08T14:54:36.071Z","1.0.0":"2025-09-09T13:19:10.388Z","1.0.1":"2025-09-09T13:57:17.289Z","1.0.2":"2025-09-09T14:08:15.007Z","1.0.3":"2025-09-10T11:08:10.775Z","1.0.4":"2025-09-10T11:11:14.065Z","1.0.5":"2025-09-11T09:27:12.419Z","1.0.6":"2025-09-11T09:28:27.015Z","1.0.7":"2025-09-13T18:38:56.737Z","1.0.8":"2025-09-13T18:40:47.902Z","1.0.9":"2025-09-14T00:42:09.130Z","2.0.0":"2025-09-14T12:27:20.775Z","2.0.1":"2025-09-14T15:27:51.105Z","2.0.2":"2025-09-14T15:32:03.459Z","2.0.3":"2025-09-14T16:05:20.303Z","2.0.4":"2025-09-15T09:20:08.742Z","2.1.0":"2025-09-17T08:45:20.758Z","2.2.0":"2025-09-18T11:45:36.873Z","2.2.1":"2025-09-18T14:08:57.430Z","2.2.2":"2025-09-18T15:45:33.709Z","2.2.3":"2025-09-18T15:59:22.566Z","2.2.4":"2025-09-18T17:33:31.521Z","2.2.5":"2025-09-18T18:18:37.906Z","2.2.6":"2025-09-18T18:36:55.163Z","2.2.7":"2025-09-19T08:13:33.484Z","2.3.0":"2025-09-21T10:53:04.529Z","2.3.1":"2025-09-22T08:30:09.102Z","2.3.2":"2025-09-23T21:17:39.103Z","2.3.3":"2025-09-23T22:47:22.076Z","2.3.4":"2025-09-24T14:32:57.452Z","2.4.0":"2025-09-24T17:24:03.494Z","2.4.1":"2025-09-24T17:29:07.197Z","2.4.2":"2025-09-25T09:00:49.491Z","2.4.3":"2025-09-25T10:22:39.881Z","2.4.5":"2025-09-25T10:44:57.070Z","2.5.0":"2025-10-15T13:09:46.944Z","2.5.1":"2025-10-16T07:26:30.388Z","2.5.2":"2025-10-16T08:01:48.270Z","2.6.0":"2025-10-25T17:15:19.321Z","2.6.1":"2025-10-25T18:39:39.566Z","3.0.0":"2025-12-02T11:08:14.633Z","3.0.1":"2025-12-06T12:45:41.622Z","3.1.0":"2026-06-10T18:55:07.684Z","3.1.1":"2026-06-11T14:50:32.965Z","3.1.2":"2026-07-01T09:34:33.100Z","4.0.0":"2026-09-13T21:44:21.263Z","4.0.1":"2026-09-14T14:49:27.445Z","4.1.0":"2026-09-14T15:36:33.343Z","4.1.1":"2026-09-14T19:31:02.417Z","4.2.0":"2026-09-14T23:15:47.892Z"},"bugs":{"url":"https://github.com/beynar/svelte-streamdown/issues"},"license":"MIT","homepage":"https://github.com/beynar/svelte-streamdown#readme","keywords":["svelte"],"repository":{"url":"git+https://github.com/beynar/svelte-streamdown.git","type":"git"},"description":"![npm version](https://badge.fury.io/js/svelte-streamdown.svg)","maintainers":[{"name":"aderbey","email":"a.derbey@gmail.com"}],"readme":"# Svelte Streamdown\n\n![npm version](https://badge.fury.io/js/svelte-streamdown.svg)\n\nA **Svelte port** of [Streamdown](https://streamdown.ai/) by Vercel - an all in one markdown renderer, designed specifically for AI-powered streaming applications.\n\n## 📦 Installation\n\n```bash\nnpm install svelte-streamdown\n# or\npnpm add svelte-streamdown\n# or\nyarn add svelte-streamdown\n```\n\n## 🚀 Overview\n\nPerfect for AI-powered applications that need to stream and render markdown content safely and beautifully, with support for incomplete markdown blocks, security hardening, and rich features like code highlighting, math expressions, and interactive diagrams.\n\n## ✨ Main Features\n\n### 🔄 Streaming-Optimized\n\n- **Incomplete Markdown Parsing**: Handles unterminated blocks gracefully\n- **Progressive Rendering**: Perfect for streaming AI responses\n- **Real-time Updates**: Optimized for dynamic content\n- **Smooth Animations**: Animate tokens and blocks as they are streamed.\n- **An [`incomplete` signal](#the-incomplete-signal)** on the block still being streamed, so\n  expensive renderers can wait and loading states need no JavaScript\n- **Capped, self-scrolling blocks**: `codeBlockMaxHeight` / `tableMaxHeight` keep a long snippet or\n  table pinned to its newest line while it streams\n\n### 🔒 Security Hardening\n\n- **Image Origin Control**: Whitelist allowed image sources\n- **Link Safety**: Control link destinations\n\n### 🎯 Fully Customizable Components & Theming\n\n- **Every component customizable** with Svelte snippets\n- **Granular theming system** - customize every part of every component\n- Override default styling and behavior for any markdown element\n- Full control over rendering with type-safe props\n- Seamless integration with your design system\n\n### 🎨 Built-in Typography Styles\n\nBeautiful, responsive typography with **built-in Tailwind CSS classes** for headings, lists, code blocks, and more. Comes with a complete default theme that works out of the box.\n\n### 📝 Extensive Markdown Features\n\nFull support for\n\n- Basic text marks: **bold**, _italic_, `code`, ~~Strikethrough~~\n- ~Subscript~ and ^Superscript^\n- [Links](https://svelte-streamdown.beynar.workers.dev/)\n- Headings (H1–H6)\n- Blockquotes\n- Github alert\n- Ordered & unordered lists (including roman, alpha, nested)\n- Task lists ([ ] and [x])\n- Code blocks\n- Mermaid diagrams\n- Math $expressions$, in `$…$` / `$$…$$` or the LaTeX `\\(…\\)` / `\\[…\\]` delimiters\n- Escaping currency symbols ($140)\n- Complex tables\n- Footnotes [^1]\n- Inline citations [ref] [ref2]\n- MDX components (embed custom Svelte components)\n\n[^1]:\n    Reference render in a popover by default.\n    with _rich_ **content** support\n    and multiline\n\n> [!NOTE]\n> 🧠 **AI Prompting Tip:** For best results, use our [comprehensive prompt](/prompting) covering all supported markdown features.\n\n### 🏷️ Raw HTML\n\n`renderHtml` decides what happens to HTML in the markdown: off (the default) shows the source as\nliteral text, `true` renders it, and a function lets you sanitize it yourself and return the string.\n\nPretty-printed HTML has one markdown trap: four leading spaces after a blank line is an indented\ncode block, tag or not, so a nested `<div>` shows up in a code box instead of rendering.\n`normalizeHtmlIndentation` dedents tag lines before parsing and leaves `<pre>` and `<code>` bodies\nbyte-for-byte:\n\n```svelte\n<Streamdown {content} renderHtml normalizeHtmlIndentation />\n```\n\nThe trap only bites where blocks are not trimmed: `static`, `parseIncompleteMarkdown={false}`,\nor calling the exported function on raw text. The default streaming path trims each block, which\nstrips the leading four spaces, so it never sees the code box in the first place.\n\nIt is off by default because dedenting is lossy, and it is exported as a plain function\n(`import { normalizeHtmlIndentation } from 'svelte-streamdown'`) if you would rather pre-process\nthe string yourself.\n\n### 💻 Interactive Code Blocks\n\n- Syntax highlighting powered by [@tanstack/highlight](https://github.com/TanStack/highlight) (synchronous, SSR-friendly, ~31KB min / ~11KB gzip for every language)\n- Copy-to-clipboard functionality\n- Download the snippet with the extension of its language\n- Support any `@tanstack/highlight` theme, or your own\n- Optional line numbers (`lineNumbers`, off by default)\n\n#### Line numbers\n\n`lineNumbers` numbers every code block. It is a CSS counter on the line that is already\nrendered — no extra element per line, and the numbers are pseudo-content, so copy,\ndownload and text selection only ever give you the code.\n\n```svelte\n<Streamdown {content} lineNumbers />\n```\n\nThree words in the fence's info string, after the language, override the prop for\nthat block: `lineNumbers` numbers it even when the prop is off, `noLineNumbers` leaves\nit unnumbered even when the prop is on, and `startLine=N` starts the count at N instead\nof 1 (anything non-numeric is ignored).\n\n````markdown\n```ts startLine=10\nconst a = 1;\n```\n\n```ts noLineNumbers\nconst b = 2;\n```\n````\n\nThe gutter's width and colour are theme data (`theme.code.lineNumber`), so they follow\nyour theme like every other class.\n\n### 🔢 Mathematical Expressions\n\nLaTeX math support through KaTeX. Both delimiter styles are supported — dollars and the LaTeX delimiters LLMs usually emit:\n\n- Inline math: `$E = mc^2$` or `\\(E = mc^2\\)` renders inline as $E = mc^2$\n- Block (display) math: `$$ … $$` or `\\[ … \\]`\n\n> `\\(` and `\\[` are always read as math delimiters — in static rendering as well as while streaming. Prose that uses them as literal-bracket escapes renders as math: `\\[optional\\]` is a display-math token, and an unterminated `Use \\[ to open a bracket` is auto-closed into one by the completer (`parseIncompleteMarkdown={false}` stops that half). Escape the backslash — `\\\\[` — to keep the sequence literal. See the [4.1.0 behaviour changes](CHANGELOG.md#410).\n\n$$\nf(x) = \\frac{1}{\\sigma\\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2}\n$$\n\nKaTeX is an **opt-in** heavy component, so you must import the `Math` component and pass it via the `components` prop. Without it, math is rendered as raw text:\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\timport Math from 'svelte-streamdown/math'; // KaTeX math rendering\n</script>\n\n<Streamdown {content} components={{ math: Math }} />\n```\n\nPass KaTeX options through the [`katexConfig`](#-props-api) prop (e.g. to set `throwOnError` or macros). See [Bundle Optimization](#-bundle-optimization) for details on enabling heavy components.\n\n### 🧜‍♀️ Mermaid Diagrams\n\n- Render Mermaid diagrams from code blocks\n- **Incremental rendering** during streaming content\n- Pan and Zoom\n- Full screen mode\n- Download as PNG, SVG or `.mmd` source\n\n# **Example:**\n\n```mermaid\ngraph TD\n    A[Start] --> B{Is it working?}\n    B -->|Yes| C[Great!]\n    B -->|No| D[Debug]\n    D --> B\n    C --> E[End]\n```\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant Frontend\n    participant API\n    participant Database\n\n    User->>Frontend: Submit form\n    Frontend->>API: POST /api/data\n    API->>Database: INSERT query\n    Database-->>API: Success\n    API-->>Frontend: 200 OK\n    Frontend-->>User: Show success message\n```\n\n```mermaid\npie title Project Time Allocation\n    \"Development\" : 45\n    \"Testing\" : 25\n    \"Documentation\" : 15\n    \"Meetings\" : 15\n```\n\n### Complex table support\n\nTables copy and download as Markdown, HTML, CSV or TSV — see [Controls](#-controls) for the\nseparator and filename options, and for the exported table utilities.\n\n#### Fullscreen\n\nWide tables get an expand toggle next to copy and download: it lifts the table out of the flow\n(`position: fixed`, the whole viewport) so all of its columns are reachable, and the toolbar is\nrepositioned to the top right so copy and download stay usable. `Escape` or the same button — now a\nclose icon — collapses it and puts focus back on the toggle. While expanded the wrapper is a\n`role=\"dialog\"` container labelled with `translations.controls.table`, and it carries\n`data-expanded=\"true\"` plus the `theme.table.expanded` classes. It is deliberately not\n`aria-modal`: the toolbar is a sibling of the wrapper, not a child, so marking the wrapper modal\nwould hide those buttons from assistive tech — that comes with a focus trap in a later release.\nTurn it off with `controls={{ table: { fullscreen: false } }}`.\n\n#### Colspan\n\n| H1                        | H2  | H3  |\n| ------------------------- | --- | --- |\n| This cell spans 3 columns |     |     |\n\n| Header 1                  | Header 2 | Header 3 |\n| ------------------------- | -------- | -------- |\n| This cell spans 2 columns |          | Normal   |\n| Normal                    | Normal   | Normal   |\n\n#### Rowspan\n\n| Header 1        | Header 2 |\n| --------------- | -------- |\n| This cell spans | Cell A   |\n| two rows ^      | Cell B   |\n\n#### Footer\n\n| Header 1        | Header 2 |\n| --------------- | -------- |\n| Cell B          | Cell A   |\n| --------------- | -------- |\n| Footer          |          |\n\n#### Column alignment\n\n| Left | Center | Right |\n| :--- | :----: | ----: |\n| A    |   B    |     C |\n\n#### Multiple headers and very complex layout\n\n| Product Category ||| Sales Data Q1-Q4 2024 ||||\n| Product | Region || Q1 | Q2 | Q3 | Q4 |\n| Name | Type | Area | Revenue | Revenue | Revenue | Revenue |\n|-------------|---------|------------|---------|---------|---------|---------|\n| Laptop Pro | Electronics | North America || $45,000 | $52,000 | $48,000 |\n| Laptop Pro ^ | ^ | Europe | $32,000 | $38,000 | $41,000 | $44,000 |\n| Laptop Pro ^ | ^ | Asia || $28,000 | $35,000 | $42,000 |\n| Office Chair | Furniture | North America | $15,000 | $18,000 | $16,000 | $17,000 |\n| Office Chair ^ | ^ | Europe | $12,000 | $14,000 | $15,000 | $16,000 |\n| Wireless Mouse | Electronics | Global ||| $25,000 | $28,000 |\n|-------------|---------|------------|---------|---------|---------|---------|\n| **Total Revenue** ||| **$152,000** | **$185,000** | **$187,000** | **$205,000** |\n\n### Complex list support\n\n#### decimal\n\n1. First item\n2. Second item\n3. Third item\n\n#### lower-alpha\n\na. First item  \nb. Second item  \nc. Third item\n\n#### upper-alpha\n\nA. First item  \nB. Second item  \nC. Third item\n\n#### lower-roman\n\ni. First item  \nii. Second item  \niii. Third item\n\n#### upper-roman\n\nI. First item  \nII. Second item  \nIII. Third item\n\n#### Nested Lists\n\n1. First level (numeric)\n   a. Second level (lowercase alpha)\n   i. Third level (lowercase roman) - Fourth level (bullet)\n   I. Fifth level (uppercase roman)\n   A. Sixth level (uppercase alpha)\n\n2. Back to the first level\n\n#### Task List\n\n- [ ] Uncompleted task\n- [x] Completed task\n- [ ] Another uncompleted task\n  - [ ] Nested uncompleted subtask\n  - [x] Nested completed subtask\n\n### Alert Support\n\n> [!IMPORTANT]\n> Native support for Github style Alert\n\n### Description List\n\n    :   Topic 1   :  Description 1\n    : **Topic 2** : *Description 2*\n    :   Topic 3   :  Description 3\n    :   Topic 3   :  Description 3\n\n### Citation Support\n\nStreamdown supports inline citations that allow you to reference external sources and display them in interactive popovers. Citations work out-of-the-box with a simple object structure and support nested references like this `[cloudflare.website, vercel]` will render into [cloudflare.website, vercel]\n\nTo enable inline citations, pass a `sources` object as a prop to the `Streamdown` component.\n\n#### Basic Usage\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\n\tlet content = `According to [smith2023], AI is advancing rapidly. See also [nested.subsection] for related work.`;\n\n\tlet sources = {\n\t\tsmith2023: {\n\t\t\ttitle: 'AI Research Paper',\n\t\t\turl: 'https://example.com/paper',\n\t\t\tcontent: 'Detailed content of the citation...'\n\t\t},\n\t\tnested: {\n\t\t\tsubsection: {\n\t\t\t\ttitle: 'Nested Citation',\n\t\t\t\turl: 'https://example.com/nested'\n\t\t\t}\n\t\t}\n\t};\n</script>\n\n<Streamdown {content} {sources} />\n```\n\n#### Default Citation Structure\n\nCitations work with objects containing these properties:\n\n- `title (or name or author)`: Display title for the citation\n- `url (or href, url, link or source)`: Link to the source\n- `content (or text, summary or excerpt)`: Rich content to display in carousel mode\n\n#### Display Modes\n\nStreamdown offers two ways to display citations:\n\n- **List View**: Shows all citations in a compact list format\n- **Carousel View** (default): Step-through navigation for multiple citations with full content display\n\nYou can control the display mode using the `inlineCitationsMode` prop:\n\n```svelte\n<!-- List view -->\n<Streamdown {content} {sources} inlineCitationsMode=\"list\" />\n\n<!-- Carousel view (default) -->\n<Streamdown {content} {sources} inlineCitationsMode=\"carousel\" />\n```\n\n#### Citation Popovers\n\nCitations appear as clickable buttons that open popovers when clicked. The popover shows:\n\n- Source title and URL (when available)\n- Favicon from the source domain\n- Rich content (in carousel mode)\n- Navigation controls (in carousel mode for multiple citations)\n\n#### Custom Citation Rendering\n\nIf your citation data structure doesn't match the default format, you can customize how citations are rendered using `inlineCitationPreview`, `inlineCitationContent` or `inlineCitationPopover` snippets:\n\n```svelte\n<Streamdown {content} {sources}>\n\t{#snippet inlineCitationPreview({ token })}\n\t\t<!-- Customize the clickable citation button -->\n\t\t{token.keys[0]}\n\t{/snippet}\n\n\t{#snippet inlineCitationContent({ source, key, token })}\n\t\t<!-- Customize content displayed in popover -->\n\t\t<div class=\"custom-content\">\n\t\t\t<h4>{source.customTitle || key}</h4>\n\t\t\t<p>{source.customDescription}</p>\n\t\t</div>\n\t{/snippet}\n</Streamdown>\n```\n\nThese snippets allow you to:\n\n- **`inlineCitationPreview`**: Customize the content of the clickable button that appears in the text\n- **`inlineCitationContent`**: Customize how individual citation content is displayed within popovers\n- **`inlineCitationPopover`**: Completely customize the list of citations\n\n## 🔄 Differences from Original React Version\n\nThis Svelte port maintains feature parity with the original [Streamdown](https://streamdown.ai/) while adapting to Svelte's patterns:\n\n| Aspect            | Original (React)         | Svelte Port                              |\n| ----------------- | ------------------------ | ---------------------------------------- |\n| **Framework**     | React                    | Svelte 5                                 |\n| **Component API** | JSX Components           | Svelte Snippets                          |\n| **Styling**       | Tailwind CSS             | Tailwind CSS (compatible)                |\n| **Context**       | React Context            | Svelte Context                           |\n| **Build System**  | Vite/React               | Vite/SvelteKit                           |\n| **TypeScript**    | Full TS support          | Full TS support                          |\n| **Engine**        | Remark / Rehype + marked | marked only                              |\n| **Memoization**   | Memoized `Block` (LRU)   | Svelte reactivity (per-block `$derived`) |\n\n### Tailwind CSS Setup\n\n> [!NOTE]\n> Streamdown comes with **built-in Tailwind CSS classes** for beautiful default styling. To ensure all styles are included in your build, add the following to your `app.css` or main CSS file:\n> This setup is primarily necessary if you're using Tailwind CSS v4's new `@source` directive or if you have aggressive purging enabled in older versions. If you're using standard Tailwind CSS v3+ with default purging, Streamdown's styles should be automatically included when the component is imported and used in your application.\n>\n> This ensures that all Streamdown's default styling is included in your Tailwind build process.\n\n```css\n@import 'tailwindcss';\n/* Add Streamdown styles to your Tailwind build */\n@source \"../node_modules/svelte-streamdown/**/*\";\n```\n\n> [!IMPORTANT]\n> The `@source` path is **relative to the stylesheet file** that contains the directive, so adjust the number of `../` segments to match where your stylesheet lives. The example above assumes `src/app.css`. If your global stylesheet lives one level deeper (e.g. `src/routes/+layout.css`, the default in newer SvelteKit projects), add one more `../` so the glob still resolves to your project's `node_modules`:\n\n```css\n@import 'tailwindcss';\n/* Add Streamdown styles to your Tailwind build (stylesheet inside src/routes) */\n@source \"../../node_modules/svelte-streamdown/**/*\";\n```\n\n## ⚡ Streaming Performance & Memoization\n\nLike the original [Streamdown](https://streamdown.ai/), `svelte-streamdown` avoids re-parsing the whole document on every streaming update — but it achieves this through Svelte 5's fine-grained reactivity rather than an explicit parse cache.\n\nHere is how it works on each content update:\n\n1. **Block splitting**: the incoming `content` is split into top-level markdown blocks with `parseBlocks`. This is a lightweight lexer pass that only computes each block's raw string.\n2. **Keyed rendering**: blocks are rendered with a keyed `{#each}`, so existing block components are preserved across updates instead of being torn down and recreated.\n3. **Per-block memoized lexing**: each block component derives its tokens from its own raw string (`const tokens = $derived(lex(...))`). A Svelte `$derived` only recomputes when its inputs change, so a block is only re-lexed (the expensive inline tokenization step) when **its own** raw string changes.\n\nDuring streaming, newly received text almost always only changes the **last** block (and occasionally starts a new one). Every earlier block keeps an identical raw string, so Svelte skips its `lex()` call entirely — this is the equivalent of the memoized `Block` component in the React version. The block-splitting pass itself runs on every update, but it is the cheap pass; the costly inline parsing is what gets reused.\n\nCode highlighting is incremental as well: a code block is only re-highlighted when its text changes. Highlighting itself is synchronous and runs during SSR, so there is no grammar to load, no loading state and no hydration flash.\n\n> [!NOTE]\n> There is intentionally no separate block-level parse cache (e.g. an LRU keyed by block content). For the common append-only streaming case the reactivity-based approach above already avoids redundant work, and a standalone cache would add memory usage and invalidation complexity without a measurable benefit. If you have a workload where this matters, please [open an issue](https://github.com/beynar/svelte-streamdown/issues) with a repro — we're happy to revisit.\n\n### The incremental block cache contract\n\nStep 1 above keeps a small per-instance cache so that block splitting costs O(new text) rather than O(document) on each update. It seals every block except the last two and re-splits only the live tail.\n\nDeciding whether an update is an append has to be cheap, so the sealed prefix is **sampled, not rescanned**: the first character of every sealed block, plus a fixed number of evenly spaced characters. Anything that fails a sample falls back to a full parse.\n\nWhat that means in practice:\n\n- **Append-only updates are exact.** This is what an LLM stream does, and what the component does with its own `content` prop.\n- **Replacing, shortening or restructuring the content is detected** — a different length, a moved block boundary, or a changed block start all fail the checks and trigger a full reparse.\n- **A same-length edit in the middle of a sealed block can be missed**, and that block will keep rendering its old text. If you bind `content` to an editor, or regenerate a block in the middle of a finished document, either pass `static` (which skips the streaming path) or force a fresh parse by re-keying the component:\n\n```svelte\n{#key documentVersion}\n\t<Streamdown content={editorValue} />\n{/key}\n```\n\n### The `incomplete` signal\n\nWhile a fence is still streaming, the block it produces is a guess: the closing ``` has not arrived,\nso the language, the last line and even whether it is a diagram at all can still change. Streamdown\nnow says so out loud.\n\n- The `code` and `mermaid` snippets receive an extra `incomplete: boolean` prop, as do custom\n  `components.code` / `components.mermaid` components.\n- The rendered container carries `data-incomplete=\"true\"` while the fence is open, so a loading\n  style needs no JavaScript: `[data-streamdown-code][data-incomplete] { opacity: 0.7 }`.\n- Only the **last** block of a streaming document can be incomplete, and `static` never marks\n  anything.\n\n```svelte\n{#snippet code({ token, children, incomplete })}\n\t<pre class:animate-pulse={incomplete}>{@render children()}</pre>\n{/snippet}\n```\n\nThe built-in Mermaid component already acts on it: it skips `mermaid.render` while the fence is\nopen and keeps the last good diagram on screen, instead of re-parsing a half-written graph on every\nchunk and flashing an error.\n\n## 🎭 Animation System\n\nStreamdown includes an animation system designed specifically for streaming AI content, providing smooth and engaging visual feedback as text appears on screen.\n\n### How It Works\n\nThe animation system works by:\n\n1. **Tokenization**: Text is broken down into tokens (words or characters) based on your configuration\n2. **Sequential Animation**: Each token animates as it is received\n3. **Block-level Animation**: Entire blocks (paragraphs, headings, code blocks) animate as units\n\n> [!NOTE]\n> Only text that arrives in **streamed-sized appends** to `content` is animated. A bulk update — `content` replaced by a different document, a jump back to an earlier prefix, or a single append of more than ~2 KB such as pasting a whole answer or a \"show all\" — renders without animation, and the next streamed append animates again. Animating a whole document at once would start thousands of CSS animations in a single frame and stall the page.\n\n### Animation Types\n\nChoose from 4 distinct animation styles:\n\n#### `fade`\n\nA clean fade-in effect where text smoothly appears from transparent to opaque.\n\n#### `blur`\n\nText starts slightly blurred and comes into focus while fading in, creating a smooth reveal effect.\n\n#### `slideUp`\n\nText slides up from below while fading in, creating a dynamic upward motion.\n\n#### `slideDown`\n\nText slides down from above while fading in, creating a dynamic downward motion.\n\n> [!TIP]\n> For production applications where the LLM is not streaming (static content), disable animations entirely by setting `animation.enabled = false` to minimize DOM elements and improve performance.\n>\n> If using AI SDK mind to smooth stream the content to using word-level tokenization to avoid partial words not being animated.\n\n> [!WARNING]\n> Character-level tokenization (`tokenize: 'char'`) creates significantly more DOM elements than word-level tokenization. Use character tokenization sparingly and only when the typewriter effect is essential for your user experience.\n\n## 🚀 Quick Start\n\n### Basic Usage\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\n\tlet content = `# Hello World\n\nThis is a **bold** text and this is *italic*.\n\n\\`\\`\\`javascript\nconsole.log('Hello from Streamdown!');\n\\`\\`\\`\n`;\n</script>\n\n<Streamdown {content} />\n```\n\n### Advanced Usage with Custom Components\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\n\tlet content = `# Custom Components Example\n\nThis heading will use a custom component!`;\n</script>\n\n<Streamdown {content}>\n\t{#snippet heading({ children })}\n\t\t<h1 class=\"mb-4 text-4xl font-bold text-blue-600\">\n\t\t\t{@render children()}\n\t\t</h1>\n\t{/snippet}\n</Streamdown>\n```\n\n### Security Configuration\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\n\tlet markdown = `![Safe Image](https://trusted-domain.com/image.jpg)\n[Safe Link](https://trusted-domain.com/page)`;\n</script>\n\n<Streamdown\n\t{content}\n\tallowedImagePrefixes={['https://trusted-domain.com']}\n\tallowedLinkPrefixes={['https://trusted-domain.com']}\n/>\n```\n\nPrefixes can also be **protocol-only**, which allows any URL using that protocol. For example, `'https://'` allows every HTTPS link while still blocking insecure `http://` links, and `'mailto:'` / `'tel:'` allow email and phone links:\n\n```svelte\n<Streamdown\n\t{content}\n\tallowedLinkPrefixes={['https://', 'mailto:']}\n\tallowedImagePrefixes={['https://']}\n/>\n```\n\n> [!NOTE]\n> `'*'` allows every `http:`, `https:`, `mailto:` and `tel:` URL — the protocols a document can legitimately link to. `javascript:`, `data:` and `vbscript:` stay blocked under the wildcard because they execute in the page's origin. A protocol-only prefix only allows that exact protocol, so list each one you want to permit. Only add a protocol you trust — e.g. do not add `'javascript:'`.\n\n## 📦 Bundle Optimization\n\nStreamdown is optimized for minimal bundle size by making heavy components **opt-in**. By default, Code blocks, Mermaid diagrams, and Math expressions render as lightweight fallbacks (plain text). To enable full functionality, import and pass the components you need:\n\n### Enabling Heavy Components\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\t// Import only the components you need\n\timport Code from 'svelte-streamdown/code'; // syntax highlighting\n\timport Mermaid from 'svelte-streamdown/mermaid'; // Mermaid diagrams\n\timport Math from 'svelte-streamdown/math'; // KaTeX math rendering\n</script>\n\n<Streamdown {content} components={{ code: Code, mermaid: Mermaid, math: Math }} />\n```\n\n### Component Dependencies\n\n| Component | Import Path                 | Dependency            | Size Impact                                          |\n| --------- | --------------------------- | --------------------- | ---------------------------------------------------- |\n| `Code`    | `svelte-streamdown/code`    | `@tanstack/highlight` | ~31KB min / ~11KB gzip (all 30 languages + 2 themes) |\n| `Mermaid` | `svelte-streamdown/mermaid` | Mermaid.js            | ~1.5MB                                               |\n| `Math`    | `svelte-streamdown/math`    | KaTeX                 | ~300KB                                               |\n\n> [!TIP]\n> Only import the components your application actually uses. If your content doesn't include code blocks, mermaid diagrams, or math expressions, you can skip those imports entirely for a much smaller bundle.\n\n### Fallback Behavior\n\nWhen a heavy component is not provided:\n\n- **Code blocks**: Render as plain `<pre><code>` without syntax highlighting\n- **Mermaid**: Renders the mermaid source as a code block\n- **Math**: Renders the raw LaTeX/math text\n\n### Highlight themes\n\nThe `Code` component bundles two themes out of the box: **`github-dark`** and **`github-light`**. By default `highlightTheme` follows the active color scheme (`github-dark` in dark mode, `github-light` otherwise), so basic light/dark theming works with no extra configuration.\n\nTo use any other theme (`aurora-x`, `dracula`, `gruvbox-dark`, `gruvbox-light`, `monokai`, `nord`, `one-dark-pro`, `solarized-dark`, `solarized-light`), import it from `@tanstack/highlight/themes/<name>` and register it via the `highlightThemes` prop. The **key** you register it under is the value you pass to `highlightTheme`:\n\n```svelte\n<script lang=\"ts\">\n\timport { Streamdown } from 'svelte-streamdown';\n\timport Code from 'svelte-streamdown/code'; // enables highlighting\n\timport dracula from '@tanstack/highlight/themes/dracula';\n\n\tlet { content } = $props();\n</script>\n\n<Streamdown\n\t{content}\n\tcomponents={{ code: Code }}\n\thighlightThemes={{ dracula }}\n\thighlightTheme=\"dracula\"\n/>\n```\n\n> [!NOTE]\n> An unknown `highlightTheme` key falls back to the built-in `github-dark` / `github-light` (following the color scheme) instead of leaving the code block unhighlighted.\n\nA custom theme is just an object of the `HighlightTheme` shape (exported from `svelte-streamdown`) — a `name`, `type`, `background`, `foreground` and a color per token class:\n\n```svelte\n<script lang=\"ts\">\n\timport { Streamdown, type HighlightTheme } from 'svelte-streamdown';\n\timport Code from 'svelte-streamdown/code';\n\timport githubDark from '@tanstack/highlight/themes/github-dark';\n\n\tconst myTheme: HighlightTheme = {\n\t\t...githubDark,\n\t\tname: 'my-theme',\n\t\ttokens: { ...githubDark.tokens, keyword: '#ff0088', comment: '#5a5a5a' }\n\t};\n</script>\n\n<Streamdown\n\t{content}\n\tcomponents={{ code: Code }}\n\thighlightThemes={{ 'my-theme': myTheme }}\n\thighlightTheme=\"my-theme\"\n/>\n```\n\n#### Dynamic (light/dark) theme switching\n\nRegister every theme you intend to switch between in `highlightThemes`, then drive `highlightTheme` from your color-scheme store. Switching is fully reactive:\n\n```svelte\n<script lang=\"ts\">\n\timport { Streamdown } from 'svelte-streamdown';\n\timport Code from 'svelte-streamdown/code';\n\timport { mode } from 'mode-watcher';\n\timport oneDarkPro from '@tanstack/highlight/themes/one-dark-pro';\n\timport solarizedLight from '@tanstack/highlight/themes/solarized-light';\n\n\tlet { content } = $props();\n\n\tconst highlightTheme = $derived(mode.current === 'dark' ? 'one-dark-pro' : 'solarized-light');\n</script>\n\n<Streamdown\n\t{content}\n\tcomponents={{ code: Code }}\n\tbaseTheme=\"shadcn\"\n\thighlightThemes={{\n\t\t'one-dark-pro': oneDarkPro,\n\t\t'solarized-light': solarizedLight\n\t}}\n\t{highlightTheme}\n/>\n```\n\n> [!NOTE]\n> The built-in `github-dark` / `github-light` themes can be switched dynamically with just `highlightTheme` (no `highlightThemes` registration needed).\n\n#### Styling tokens with CSS\n\nEvery token span carries `th-token` plus a `th-<class>` class (`th-keyword`, `th-string`, `th-comment`, `th-function`, `th-number`, `th-operator`, `th-tag`, `th-attr`, …) alongside its inline color from the active theme, so you can tweak or override token styles from CSS:\n\n```css\n[data-streamdown-code] .th-comment {\n\tfont-style: italic;\n}\n```\n\n### Supported languages\n\nAll 30 scanners ship in the same ~31KB bundle, so there is nothing to lazy-load:\n\n`apache`, `cmake`, `cpp`, `css`, `diff`, `dockerfile`, `ejs`, `env`, `go`, `html`, `http`, `js`, `json`, `jsx`, `markdown`, `mermaid`, `nginx`, `php`, `plaintext`, `python`, `scheme`, `shell`, `sql`, `svelte`, `toml`, `ts`, `tsrx`, `tsx`, `vue`, `yaml`.\n\nCommon aliases are normalized (`javascript` → `js`, `typescript` → `ts`, `bash`/`sh`/`zsh` → `shell`, `py` → `python`, `jsonc`/`json5` → `json`, `xml`/`htm` → `html`, `md` → `markdown`, `yml` → `yaml`, `docker` → `dockerfile`).\n\n> [!IMPORTANT]\n> Any other language — including `java`, `rust`, `c`, `c#`, `swift`, `kotlin`, `ruby` and `graphql` — is **not** highlighted as of `@tanstack/highlight@0.1.0`: the code block still renders (and keeps its copy/download UI), but as plaintext.\n\nYou can add your own language with `defineLanguage` and the `highlightLanguages` prop. A language is a tokenizer returning `{ className, start, end }` ranges:\n\n```svelte\n<script lang=\"ts\">\n\timport { Streamdown, defineLanguage } from 'svelte-streamdown';\n\timport Code from 'svelte-streamdown/code';\n\n\tconst brainfuck = defineLanguage({\n\t\tname: 'brainfuck',\n\t\ttokenize: (code) =>\n\t\t\t[...code.matchAll(/[+\\-<>]+/g)].map((match) => ({\n\t\t\t\tclassName: 'operator' as const,\n\t\t\t\tstart: match.index,\n\t\t\t\tend: match.index + match[0].length\n\t\t\t}))\n\t});\n</script>\n\n<Streamdown {content} components={{ code: Code }} highlightLanguages={[brainfuck]} />\n```\n\n> [!NOTE]\n> Keep the array passed to `highlightLanguages` referentially stable (define it outside the template): a new array builds a new highlighter.\n\n### Migrating from v3 (shiki)\n\nv4 replaces shiki with `@tanstack/highlight`. Highlighting is now synchronous, renders during SSR and no longer has a skeleton/loading state. Remove `shiki` / `@shikijs/*` from your dependencies and rename the props:\n\n```diff\n- shikiTheme=\"nord\"\n- shikiThemes={{ nord }}\n- shikiLanguages={[{ id: 'haskell', name: 'Haskell', import: () => import('@shikijs/langs/haskell') }]}\n+ highlightTheme=\"nord\"\n+ highlightThemes={{ nord }}\n+ highlightLanguages={[myLanguage]}\n```\n\n- Theme objects come from `@tanstack/highlight/themes/<name>` instead of `@shikijs/themes/<name>`, and follow the `HighlightTheme` shape (not shiki's `ThemeRegistration`).\n- `highlightLanguages` takes `LanguageDefinition`s built with `defineLanguage`, not lazy shiki grammar loaders.\n- `bundledLanguagesInfo`, `createLanguageSet` and `LanguageInfo` are gone; `defineLanguage`, `LanguageDefinition` and `HighlightTheme` are exported instead.\n- The `code.skeleton` theme key is gone (there is no loading state anymore).\n- Languages shiki covered but `@tanstack/highlight@0.1.0` does not (`java`, `rust`, `c`, `c#`, `swift`, `kotlin`, `ruby`, `graphql`, …) now render as plaintext.\n\n## 📋 Props API\n\n| Prop                       | Type                                                                             | Default                | Description                                                                                                                                                                                                                       |\n| -------------------------- | -------------------------------------------------------------------------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `content`                  | `string`                                                                         | -                      | **Required.** The markdown content to render                                                                                                                                                                                      |\n| `sources`                  | `Record<string, any>`                                                            | -                      | Citation data object for inline citations                                                                                                                                                                                         |\n| `class`                    | `string`                                                                         | -                      | CSS class names for the wrapper element                                                                                                                                                                                           |\n| `parseIncompleteMarkdown`  | `boolean`                                                                        | `true`                 | Parse and fix incomplete markdown syntax                                                                                                                                                                                          |\n| `defaultOrigin`            | `string`                                                                         | -                      | Default origin for relative URLs                                                                                                                                                                                                  |\n| `allowedLinkPrefixes`      | `string[]`                                                                       | `['*']`                | Allowed URL prefixes for links                                                                                                                                                                                                    |\n| `allowedImagePrefixes`     | `string[]`                                                                       | `['*']`                | Allowed URL prefixes for images                                                                                                                                                                                                   |\n| `renderHtml`               | `boolean \\| ((token) => string)`                                                 | `false`                | Render raw HTML blocks and inline tags. When off, the HTML source is shown as literal text instead of being dropped. Pass a function to sanitize and return the HTML string yourself.                                             |\n| `inlineCitationsMode`      | `'list' \\| 'carousel'`                                                           | `'carousel'`           | How an inline citation popover presents its sources                                                                                                                                                                               |\n| `translations`             | `{ alert?: {...}, controls?: {...} }`                                            | `defaultTranslations`  | Override the built-in alert titles and control labels — see [Translations](#-translations)                                                                                                                                        |\n| `icons`                    | `Partial<Record<IconName, Snippet>>`                                             | -                      | Replace any built-in icon (`copy`, `check`, `download`, `fullscreen`, `close`, `zoomIn`, `zoomOut`, `fitView`, `chevronLeft`, `chevronRight`, `note`, `tip`, `warning`, `caution`, `important`) with your own snippet             |\n| `static`                   | `boolean`                                                                        | `false`                | Render finished content: skips the incomplete-markdown pass and the streaming animation                                                                                                                                           |\n| `element`                  | `HTMLElement`                                                                    | -                      | `bind:element` to get the wrapper node                                                                                                                                                                                            |\n| `streamdown`               | `StreamdownContext`                                                              | -                      | `bind:streamdown` to read the resolved context (theme, controls, footnotes, sources)                                                                                                                                              |\n| `theme`                    | `DeepPartial<Theme>`                                                             | -                      | Custom theme overrides                                                                                                                                                                                                            |\n| `baseTheme`                | `'tailwind' \\| 'shadcn'`                                                         | `'tailwind'`           | Base theme to use before applying overrides                                                                                                                                                                                       |\n| `mergeTheme`               | `boolean`                                                                        | `true`                 | Whether to merge theme with base theme                                                                                                                                                                                            |\n| `highlightTheme`           | `string`                                                                         | auto (dark-mode aware) | Code highlighting theme. Defaults to `github-dark` in dark mode / `github-light` otherwise. Any other value must be a key registered via `highlightThemes`. See [Highlight themes](#highlight-themes).                            |\n| `highlightThemes`          | `Record<string, HighlightTheme>`                                                 | -                      | Register additional pre-imported themes (e.g. `{ dracula }`) so they can be selected via `highlightTheme`, including dynamic light/dark switching.                                                                                |\n| `highlightLanguages`       | `LanguageDefinition[]`                                                           | -                      | Additional languages built with `defineLanguage` (merged with the 30 built-in ones)                                                                                                                                               |\n| `mermaidConfig`            | `MermaidConfig`                                                                  | -                      | Mermaid diagram configuration                                                                                                                                                                                                     |\n| `katexConfig`              | `KatexOptions \\| ((inline: boolean) => KatexOptions)`                            | -                      | KaTeX math rendering options                                                                                                                                                                                                      |\n| `animation`                | `AnimationConfig`                                                                | -                      | Animation configuration for streaming content                                                                                                                                                                                     |\n| `animation.enabled`        | `boolean`                                                                        | `false`                | Enable/disable animations                                                                                                                                                                                                         |\n| `animation.type`           | `'fade' \\| 'blur' \\| 'slideUp' \\| 'slideDown'`                                   | `'blur'`               | Animation style for text appearance                                                                                                                                                                                               |\n| `animation.duration`       | `number`                                                                         | `500`                  | Animation duration in milliseconds                                                                                                                                                                                                |\n| `animation.timingFunction` | `'ease' \\| 'ease-in' \\| 'ease-out' \\| 'ease-in-out' \\| 'linear'`                 | `'ease-in'`            | CSS timing function for animations                                                                                                                                                                                                |\n| `animation.tokenize`       | `'word' \\| 'char'`                                                               | `'word'`               | Tokenization method for text animations                                                                                                                                                                                           |\n| `animation.animateOnMount` | `boolean`                                                                        | `false`                | Run the token animation on mount or not, useful if you render the Streamdown component in the same time as the first token is receive from the LLM                                                                                |\n| `extensions`               | `Array<Extension>`                                                               | `[]`                   | Custom marked tokenizers to render special markdown blocks or inline tokens                                                                                                                                                       |\n| `mdxComponents`            | `Record<string, Component>`                                                      | `{}`                   | Map of MDX component names to Svelte components (e.g., `{ Card, Button }`)                                                                                                                                                        |\n| `customTags`               | `string[]`                                                                       | `[]`                   | Extra tag names the MDX tokenizer accepts on top of PascalCase, so `<ai-thinking>` becomes a component instead of a raw HTML block. Keys of `mdxComponents` are allowed automatically — see [Component Naming](#component-naming) |\n| `literalTagContent`        | `string[]`                                                                       | `[]`                   | Tags whose children render verbatim: no markdown parsing, `**` and `_` left exactly as written. Listing a tag here also allows it, like `customTags`                                                                              |\n| `normalizeHtmlIndentation` | `boolean`                                                                        | `false`                | Dedent pretty-printed HTML before parsing, so a nested tag indented four spaces after a blank line is not read as an indented code block. `<pre>` and `<code>` bodies are never touched                                           |\n| `components`               | `{ code?, mermaid?, math? }`                                                     | -                      | Optional heavy components for syntax highlighting, diagrams, and math rendering                                                                                                                                                   |\n| `controls`                 | `boolean \\| { code?, table?, mermaid? }`                                         | all `true`             | Toggle and configure the action toolbars for code blocks, tables and mermaid diagrams — see [Controls](#-controls)                                                                                                                |\n| `lineNumbers`              | `boolean`                                                                        | `false`                | Number the lines of every code block. A fence can override it with a `lineNumbers` / `noLineNumbers` meta word, and start the count at N with `startLine=N`.                                                                      |\n| `codeBlockMaxHeight`       | `string`                                                                         | -                      | CSS length that caps the height of code blocks (e.g. `'24rem'`). While content streams in, the block stays scrolled to the bottom unless the reader has scrolled up.                                                              |\n| `tableMaxHeight`           | `string`                                                                         | -                      | CSS length that caps the height of tables, with the same streaming auto-scroll as `codeBlockMaxHeight`.                                                                                                                           |\n| `children`                 | `Snippet<[{token:GenericToken, streamdown: StreamdownContext, children: Snippet` | `undefined`            | Snippet used to render elements not supported by Streamdown, custom extensions, and MDX components                                                                                                                                |\n\n#### All Available Customizable Elements:\n\n**Text Elements**: `heading`, `p`, `strong`, `em`, `del`\n\n**Links & Media**: `a`, `img`\n\n**Lists**: `ul`, `ol`, `li`\n\n**Code**: `code`, `codespan` — `code` and `mermaid` also receive [`incomplete`](#the-incomplete-signal)\n\n**Tables**: `table`, `thead`, `tbody`, `tr`, `th`, `td`, `tfoot`\n\n**Special Content**: `blockquote`, `hr`, `alert`, `mermaid`, `math`, `footnoteRef`, `inlineCitation`\n\n**MDX Components**: Handled via a single `mdx` snippet that receives `token`, `props`, and `children`. Use `token.tagName` to differentiate between components.\n\n**Note**: The above elements are **supported by Streamdown** and should be customized using individual props or the theme system. MDX components require the `mdx` snippet.\n\n## 🌍 Translations\n\nEvery string the components render themselves — alert titles, button labels, download menu entries, the copy announcements screen readers hear, the blocked-URL tooltips — comes from one nested `translations` object. Pass only the keys you want to change; the rest fall back to `defaultTranslations`, which is exported so you can read the shipped English values (or diff against them when a new key appears).\n\n```svelte\n<script>\n\timport { Streamdown, defaultTranslations } from 'svelte-streamdown';\n</script>\n\n<Streamdown\n\t{content}\n\ttranslations={{\n\t\talert: { note: 'remarque', warning: 'attention' },\n\t\tcontrols: {\n\t\t\tcopyCode: 'Copier le code',\n\t\t\tcopiedCode: 'Code copié',\n\t\t\tdownloadCode: 'Télécharger le code'\n\t\t}\n\t}}\n/>\n```\n\n| Namespace  | Keys                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `alert`    | `note`, `tip`, `warning`, `caution`, `important`                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| `controls` | `copyCode`, `copiedCode`, `downloadCode`, `copyTable`, `copiedTable`, `downloadTable`, `tableFormatMarkdown`, `tableFormatHtml`, `tableFormatCsv`, `tableFormatTsv`, `tableFullscreen`, `exitTableFullscreen`, `table`, `downloadDiagram`, `downloadDiagramPng`, `downloadDiagramSvg`, `downloadDiagramMmd`, `zoomIn`, `zoomOut`, `resetView`, `fullscreen`, `exitFullscreen`, `diagram`, `previousCitation`, `nextCitation`, `blockedUrl`, `imageBlocked`, `imageNoDescription`, `linkBlocked` |\n\nThe alert defaults are lowercase because the theme capitalizes them with CSS; if you drop that class, capitalize them here instead.\n\nControl labels are used as both the `title` and the `aria-label` of the matching icon-only button, so translating them translates the accessible name too. `copiedCode` / `copiedTable` are announced through a visually hidden `aria-live` region after a copy.\n\n## 🎛️ Controls\n\n`controls` turns the code / table / mermaid toolbars on and off and configures what they do.\n`controls={false}` turns every control off, `controls={true}` (the default) turns them all on,\nand each section takes a boolean or an object:\n\n```ts\ntype Controls =\n\t| boolean\n\t| {\n\t\t\tcode?:\n\t\t\t\t| boolean\n\t\t\t\t| {\n\t\t\t\t\t\tenabled?: boolean;\n\t\t\t\t\t\tcopy?: boolean;\n\t\t\t\t\t\tdownload?: boolean | { filename?: string | ((token: CodeToken) => string) };\n\t\t\t\t  };\n\t\t\ttable?:\n\t\t\t\t| boolean\n\t\t\t\t| {\n\t\t\t\t\t\tenabled?: boolean;\n\t\t\t\t\t\tcopy?: boolean;\n\t\t\t\t\t\tdownload?: boolean | { filename?: string | ((token: TableToken) => string) };\n\t\t\t\t\t\tfullscreen?: boolean;\n\t\t\t\t\t\tcsvSeparator?: ',' | ';' | '\\t' | 'auto';\n\t\t\t\t  };\n\t\t\tmermaid?:\n\t\t\t\t| boolean\n\t\t\t\t| {\n\t\t\t\t\t\tenabled?: boolean;\n\t\t\t\t\t\tdownload?: boolean | { filename?: string | ((token: CodeToken) => string) };\n\t\t\t\t\t\tmouseWheelZoom?: boolean;\n\t\t\t\t  };\n\t  };\n```\n\n```svelte\n<Streamdown\n\t{content}\n\tcontrols={{\n\t\tcode: { download: { filename: (token) => `snippet-${token.lang}` } },\n\t\ttable: { copy: false, csvSeparator: 'auto' },\n\t\tmermaid: { mouseWheelZoom: false }\n\t}}\n/>\n```\n\n- `filename` is the **base name**; the extension still comes from the content — `languageExtensionMap`\n  for code (`.ts`, `.py`, … `.txt`), `.csv` / `.tsv` / `.md` / `.html` for tables, `.svg` / `.png` / `.mmd`\n  for diagrams. The defaults are `file`, `table` and `diagram`.\n- `csvSeparator: 'auto'` picks `;` when the browser locale writes decimals with a comma (Excel reads\n  `,` as a decimal point there), otherwise `,`. CSV downloads carry a UTF-8 BOM so accented and CJK\n  text opens correctly in Excel.\n- `mouseWheelZoom` is a gesture rather than a button: it stays on unless you set it to `false` or\n  turn every control off with `controls={false}`.\n- `table.fullscreen` is the expand toggle in the table toolbar (on by default). It is a third\n  action, so the toolbar survives `copy: false, download: false`; set all three to `false` to get\n  rid of it.\n\n### Table export utilities\n\nThe table toolbar's DOM walk is exported, so a custom `table` snippet can build its own copy or\ndownload menu:\n\n```ts\nimport {\n\textractTableData,\n\ttableDataToCSV,\n\ttableDataToTSV,\n\ttableDataToMarkdown,\n\ttableDataToHTML,\n\ttype TableData\n} from 'svelte-streamdown';\n\nconst data = extractTableData(document.querySelector('[data-streamdown-table=\"...\"]')!);\n// { headers: string[], rows: string[][] } — <br> becomes \\n, colspan/rowspan become empty cells\ntableDataToCSV(data, ';');\ntableDataToTSV(data);\n```\n\n`tableDataToMarkdown` and `tableDataToHTML` are there for callers that only hold a DOM table; the\nbuilt-in menu copies Markdown from `token.raw` instead, which keeps the author's original inline\nformatting.\n\n## 🎨 Theming System\n\n### Built-in Themes\n\nStreamdown comes with two built-in themes:\n\n- **Default Theme**: The standard theme with gray-based colors\n- **Shadcn Theme**: A theme that uses shadcn/ui design tokens for seamless integration with shadcn-based projects\n\nBeyond custom snippets, Streamdown provides a **granular theming system** that lets you customize every part of every component without writing custom snippets. You can use the built-in themes (default and shadcn) or create completely custom themes using the `mergeTheme` utility.\n\n### Theme Structure\n\nEvery component has multiple themeable parts. For example, the `code` component has:\n\n```typescript\ncode: {\n  base: 'bg-gray-100 rounded p-2 font-mono text-sm',           // Main code block\n  container: 'my-4 w-full overflow-hidden rounded-xl border',   // Wrapper container\n  header: 'flex items-center justify-between bg-gray-100/80',  // Header with language\n  button: 'cursor-pointer p-1 text-gray-600 transition-all',   // Copy button\n  language: 'ml-1 font-mono lowercase',                        // Language label\n  pre: 'overflow-x-auto font-mono p-0 bg-gray-100/40'        // Pre element\n}\n```\n\n### Using Custom Themes\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\n\tlet content = `# Custom Theme Example\n\n\\`\\`\\`javascript\nconsole.log('Beautiful code blocks!');\n\\`\\`\\`\n\n> This blockquote is also themed\n\n| Header 1 | Header 2 |\n|----------|----------|\n| Cell 1   | Cell 2   |\n`;\n\n\t// Custom theme overrides\n\tlet customTheme = {\n\t\tcode: {\n\t\t\tcontainer: 'my-6 rounded-2xl border-2 border-purple-200 shadow-lg',\n\t\t\theader: 'bg-purple-50 text-purple-700 font-medium',\n\t\t\tbutton: 'text-purple-600 hover:text-purple-800 hover:bg-purple-100'\n\t\t},\n\t\tblockquote: {\n\t\t\tbase: 'border-l-8 border-purple-400 bg-purple-50 p-4 italic text-purple-800'\n\t\t},\n\t\ttable: {\n\t\t\tbase: 'border-purple-200 shadow-md',\n\t\t\tcontainer: 'my-6 rounded-lg overflow-hidden'\n\t\t},\n\t\tth: {\n\t\t\tbase: 'bg-purple-100 px-6 py-3 text-purple-900 font-bold'\n\t\t},\n\t\ttd: {\n\t\t\tbase: 'px-6 py-3 border-purple-100'\n\t\t}\n\t};\n</script>\n\n<Streamdown {content} theme={customTheme} />\n```\n\n### All Themeable Components\n\nEach component supports multiple themeable parts:\n\n**Headings (`h1`-`h6`)**: `base`\n\n**Text Elements (`p`, `strong`, `em`, `del`)**: `base`\n\n**Lists (`ul`, `ol`, `li`)**: `base`\n\n**Links (`a`)**: `base`, `blocked` (for blocked/unsafe links)\n\n**Code (`code`)**: `base`, `container`, `header`, `buttons`, `language`, `line`, `lineNumber`, `pre`\n\n**Inline Code (`inlineCode`)**: `base`\n\n**Images (`img`)**: `container`, `base`, `downloadButton`\n\n**Tables (`table`, `thead`, `tbody`, `tr`, `th`, `td`)**: `base`, plus `table` and `expanded` (table only)\n\n**Blockquotes (`blockquote`)**: `base`\n\n**Alerts (`alert`)**: `base`, `title`, `icon`, plus type-specific styles (`note`, `tip`, `warning`, `caution`, `important`)\n\n**Mermaid (`mermaid`)**: `base`, `downloadButton`\n\n**Math (`math`, `inlineMath`)**: `base`\n\n**Other (`hr`, `sup`, `sub`)**: `base`\n\n### Theme Merging\n\nThemes are intelligently merged using Tailwind's class merging utility, so you only need to override the specific parts you want to customize while keeping the default styling for everything else.\n\n## 🧩 MDX Component Support\n\nStreamdown supports MDX-style JSX components, allowing you to embed custom Svelte components directly in your markdown content.\n\n### Basic Usage\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\n\tlet content = `\n# Using MDX Components\n\n<Card title=\"Hello\" count={42}>\nThis is **markdown content** inside a component!\n</Card>\n\n<Button label=\"Click me\" active={true} />\n`;\n</script>\n\n<Streamdown {content}>\n\t{#snippet mdx({ token, props, children })}\n\t\t{#if token.tagName === 'Card'}\n\t\t\t<div class=\"rounded-lg border border-gray-200 p-4 shadow-sm\">\n\t\t\t\t<h3 class=\"text-xl font-bold\">{props.title}</h3>\n\t\t\t\t<p class=\"text-gray-600\">Count: {props.count}</p>\n\t\t\t\t<div class=\"mt-2\">\n\t\t\t\t\t{@render children()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else if token.tagName === 'Button'}\n\t\t\t<button class=\"rounded px-4 py-2 {props.active ? 'bg-blue-500 text-white' : 'bg-gray-200'}\">\n\t\t\t\t{props.label}\n\t\t\t</button>\n\t\t{:else}\n\t\t\t{@render children()}\n\t\t{/if}\n\t{/snippet}\n</Streamdown>\n```\n\n### Alternative: Using Svelte Components Directly\n\nInstead of using the `mdx` snippet with conditional logic, you can pass Svelte components directly using the `mdxComponents` prop:\n\n```svelte\n<script>\n\timport { Streamdown } from 'svelte-streamdown';\n\timport Card from './Card.svelte';\n\timport Button from './Button.svelte';\n\n\tlet content = `\n# Using MDX Components\n\n<Card title=\"Hello\" count={42}>\nThis is **markdown content** inside a component!\n</Card>\n\n<Button label=\"Click me\" active={true} />\n`;\n</script>\n\n<Streamdown {content} mdxComponents={{ Card, Button }} />\n```\n\n**Your Svelte components** (`Card.svelte`, `Button.svelte`) should accept props and a `children` snippet:\n\n```svelte\n<!-- Card.svelte -->\n<script>\n\tlet { title, count, children } = $props();\n</script>\n\n<div class=\"rounded-lg border border-gray-200 p-4 shadow-sm\">\n\t<h3 class=\"text-xl font-bold\">{title}</h3>\n\t<p class=\"text-gray-600\">Count: {count}</p>\n\t<div class=\"mt-2\">\n\t\t{@render children()}\n\t</div>\n</div>\n```\n\n```svelte\n<!-- Button.svelte -->\n<script>\n\tlet { label, active } = $props();\n</script>\n\n<button class=\"rounded px-4 py-2 {active ? 'bg-blue-500 text-white' : 'bg-gray-200'}\">\n\t{label}\n</button>\n```\n\nThis approach is cleaner when you have standalone component files, while the `mdx` snippet approach is better for inline component definitions or when you need shared logic across components.\n\n### Supported Syntax\n\n**Self-closing components:**\n\n```markdown\n<Component attr=\"value\" count={42} enabled={true} />\n```\n\n**Components with markdown children:**\n\n```markdown\n<Component title=\"Hello\">\n# This is a heading\nThis **markdown** content will be parsed!\n</Component>\n```\n\n### Attribute Types\n\nMDX components support three attribute value types:\n\n- **Strings**: `attr=\"hello\"` → `\"hello\"`\n- **Numbers**: `count={42}` or `value={3.14}` → `42`, `3.14`\n- **Booleans**: `active={true}` or `disabled={false}` → `true`, `false`\n- **Expressions**: `value={variableName}` → `\"variableName\"` (stored as string)\n\n### Component Naming\n\n- PascalCase names are **always** components: `<Card />`, `<MyComponent />`, `<Component123 />`\n- Lowercase and hyphenated names are **opt-in**. `<card />`, `<ai-thinking>` and `<mention>` are plain HTML unless you list them, so nothing you write today changes meaning.\n- A name is listed by putting it in `customTags`, or simply by registering it in `mdxComponents` — its keys are allowlisted for you.\n\n```svelte\n<Streamdown\n\tcontent={`<ai-thinking>\\nLet me **check** that.\\n</ai-thinking>`}\n\tcustomTags={['ai-thinking']}\n>\n\t{#snippet mdx({ token, children })}\n\t\t{#if token.tagName === 'ai-thinking'}\n\t\t\t<aside class=\"text-sm text-gray-500\">{@render children()}</aside>\n\t\t{/if}\n\t{/snippet}\n</Streamdown>\n```\n\nThe allowlist is compiled once and shared by the tokenizer and the streaming completer, so a half-typed `<ai-think` is hidden while it streams rather than flashing as text.\n\n### Literal Tag Content\n\nSome tags carry data, not markdown. List them in `literalTagContent` and their children become a single text token — underscores, asterisks and backticks survive untouched:\n\n```svelte\n<!-- Markdown: <mention user_id=\"1\">@_john_doe_</mention> -->\n<Streamdown {content} literalTagContent={['mention']} />\n<!-- renders @_john_doe_, not @john_doe with an italic run -->\n```\n\nAttribute names may contain hyphens (`<mention data-id=\"7\">`), and values use the same `attr=\"string\"` / `attr={expression}` forms as PascalCase components.\n\n### Streaming Safety\n\nMDX components are streaming-safe. Incomplete components are automatically handled during AI streaming:\n\n- Incomplete tags like `<Component attr` not rendered to prevent runtime errors\n- Unclosed components like `<Card>content` are auto-closed with `</Card>`\n- Malformed attributes are escaped to prevent rendering errors\n- Half-typed **HTML** tags are hidden too: `Hello <div cla` renders as `Hello` until the `>` arrives. This only ever applies to the very end of the block still streaming, and only to a name that could still grow into a common HTML element, a PascalCase component or a `customTags` entry, followed by nothing but attributes. A paragraph reading `if a <b then c` keeps its text wherever it sits, and so do `Use the <div element to wrap it.` and `3 < 5`.\n\nThis ensures your UI remains stable even when receiving partial markdown from streaming AI responses.\n\n### Component Props\n\nThe `mdx` snippet receives three parameters:\n\n- `token`: The full MdxToken with `tagName`, `attributes`, `selfClosing`, etc.\n- `props`: Object containing all parsed attributes (e.g., `props.title`, `props.count`)\n- `children`: Snippet containing parsed markdown content\n\nUse `token.tagName` to determine which component is being rendered:\n<Card title=\"Hello\" count={5}>Content</Card>\n\n```svelte\n<!-- Markdown: <Card title=\"Hello\" count={5}>Content</Card> -->\n<Streamdown {content}>\n\t{#snippet mdx({ token, props, children })}\n\t\t{#if token.tagName === 'Card'}\n\t\t\t<div>\n\t\t\t\t<h3>{props.title}</h3>\n\t\t\t\t<span>Count: {props.count}</span>\n\t\t\t\t{@render children()}\n\t\t\t</div>\n\t\t{:else if token.tagName === 'Alert'}\n\t\t\t<div class=\"alert alert-{props.type}\">\n\t\t\t\t{@render children()}\n\t\t\t</div>\n\t\t{:else}\n\t\t\t<!-- Fallback for unknown components -->\n\t\t\t{@render children()}\n\t\t{/if}\n\t{/snippet}\n</Streamdown>\n```\n\n## 💉 Extensibility\n\nStreamdown is extensible through the use of custom extensions.\n\nAn extension is an object that has a `name`, a `level` and a `tokenizer` function.\n\n- `name`: The name of the extension\n- `level`: The level of the extension, can be `block` or `inline`\n- `tokenizer`: The tokenizer function, see [marked](https://github.com/markedjs/marked) for more information\n\nTo render the extension custom tokens, you can then simply use the `children` snippet.\n\n### Example\n\n```svelte\n<script lang=\"ts\">\n\timport { Streamdown, type Extension } from 'svelte-streamdown';\n\tconst markedCollapsible: Extension = {\n\t\tname: 'collapsible',\n\t\tlevel: 'block',\n\t\ttokenizer(this, src) {\n\t\t\t// Match [detail]...[detail] blocks (case insensitive)\n\t\t\tconst detailMatch = src.match(/^\\[detail\\](.*?)\\[detail\\]/is);\n\n\t\t\tif (detailMatch) {\n\t\t\t\tconst content = detailMatch[1] || '';\n\t\t\t\tconst tokens = this.lexer.blockTokens(content);\n\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'detail',\n\t\t\t\t\traw: detailMatch[0], // The entire matched string including tags\n\t\t\t\t\ttokens\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\t};\n</script>\n\n<Streamdown\n\textensions={[markedCollapsible]}\n\tcontent={`\n[detail]\t\nThis is a collapsible **section**\n[detail]`}\n>\n\t{#snippet children({ token, streamdown, children })}\n\t\t{#if token.type === 'detail'}\n\t\t\t<details>\n\t\t\t\t<summary> Detail </summary>\n\t\t\t\t<div>\n\t\t\t\t\t{@render chil","readmeFilename":"README.md"}