{"_id":"@humanspeak/svelte-purify","_rev":"5-e9a22ebecb11e2b4e26136f453f33477","name":"@humanspeak/svelte-purify","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.1":{"name":"@humanspeak/svelte-purify","version":"0.0.1","keywords":["svelte","sveltekit","dompurify","sanitize","sanitization","xss","security","html","safe-html","render","renderer","ssr","edge","browser","browser-only","svelte-component","svelte-library","svelte-plugin","dom","dompurify-config"],"author":{"name":"Humanspeak, Inc."},"license":"MIT","_id":"@humanspeak/svelte-purify@0.0.1","maintainers":[{"name":"humanspeakadmin","email":"admin@humanspeak.com"}],"homepage":"https://github.com/humanspeak/svelte-purify#readme","bugs":{"url":"https://github.com/humanspeak/svelte-purify/issues"},"dist":{"shasum":"5b535d0ab8f129b31a2507bfc575559a927cd33d","tarball":"https://registry.npmjs.org/@humanspeak/svelte-purify/-/svelte-purify-0.0.1.tgz","fileCount":7,"integrity":"sha512-Sn+IunEip1zHT9wEGNlQWb9pW9LJlgwapxzdJx1GIH1hnQ3pJiPZlBCLTdrLDRJVH74mYNUz9K2m3uYFn0Eh9A==","signatures":[{"sig":"MEQCIDWstD0UD9fCBR0qYKm/LfxRwe03kYWSGVnBvYFWEZt5AiBBk2gmANTwFWYDW/NdLsovdPBV1XjiRImxbXW7Sy/Z7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@humanspeak%2fsvelte-purify@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6493},"tags":["svelte","satori","opengraph"],"type":"module","_from":"file:humanspeak-svelte-purify-0.0.1.tgz","types":"./dist/index.d.ts","svelte":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/humanspeak","type":"github"},"scripts":{"dev":"vite dev","lint":"prettier --check . && eslint .","test":"vitest --coverage --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","husky":"husky","format":"prettier --write .","preview":"vite preview","test:unit":"vitest --coverage --run","test:watch":"vitest --coverage","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"humanspeakadmin","email":"admin@humanspeak.com"},"_resolved":"/tmp/2dba6c13d210eb6142154d09f5dc49f2/humanspeak-svelte-purify-0.0.1.tgz","_integrity":"sha512-Sn+IunEip1zHT9wEGNlQWb9pW9LJlgwapxzdJx1GIH1hnQ3pJiPZlBCLTdrLDRJVH74mYNUz9K2m3uYFn0Eh9A==","repository":{"url":"git+https://github.com/humanspeak/svelte-purify.git","type":"git"},"_npmVersion":"10.9.3","description":"Safe HTML rendering for Svelte powered by DOMPurify. SSR-ready, browser-only entry, and edge-friendly options.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.19.0","dependencies":{"dompurify":"^3.2.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","husky":"^9.1.7","jsdom":"^26.1.0","eslint":"^9.35.0","svelte":"^5.38.7","vitest":"^3.2.4","globals":"^16.3.0","publint":"^0.3.12","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^24.3.1","svelte-check":"^4.3.1","@sveltejs/kit":"^2.37.1","@eslint/compat":"^1.3.2","@sveltejs/package":"^2.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"3.2.4","eslint-plugin-svelte":"^3.12.2","@sveltejs/adapter-auto":"^6.1.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^3.4.0","@testing-library/svelte":"^5.2.8","@testing-library/jest-dom":"^6.8.0","prettier-plugin-sort-json":"^4.1.1","@sveltejs/vite-plugin-svelte":"^6.1.4","prettier-plugin-organize-imports":"^4.2.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-purify_0.0.1_1757350261939_0.2554322812409613","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@humanspeak/svelte-purify","version":"0.0.2","keywords":["svelte","sveltekit","dompurify","sanitize","sanitization","xss","security","html","safe-html","render","renderer","ssr","edge","browser","browser-only","svelte-component","svelte-library","svelte-plugin","dom","dompurify-config"],"author":{"name":"Humanspeak, Inc."},"license":"MIT","_id":"@humanspeak/svelte-purify@0.0.2","maintainers":[{"name":"humanspeakadmin","email":"admin@humanspeak.com"}],"homepage":"https://github.com/humanspeak/svelte-purify#readme","bugs":{"url":"https://github.com/humanspeak/svelte-purify/issues"},"dist":{"shasum":"7a048f9741befe4b8df0c234a99d6975924631f7","tarball":"https://registry.npmjs.org/@humanspeak/svelte-purify/-/svelte-purify-0.0.2.tgz","fileCount":9,"integrity":"sha512-V3QXNnOBgvR1Yeesuc2cLbbg3Y/Df6TkSf//FmoW9ENiNXuYcA1XsIFqhuH98SpjHWtB2NBDiifFNk2y2YdIlg==","signatures":[{"sig":"MEUCIQCAj1bOXJ8MZma54Pdd1UxV5/eUU2bktHcDWpNXrBc1RgIgMmMZ9y5KbQPoSZUosDVeY3obR7QiSFKHFejpEDshyok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@humanspeak%2fsvelte-purify@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10259},"tags":["svelte","DOMPurify"],"type":"module","_from":"file:humanspeak-svelte-purify-0.0.2.tgz","types":"./dist/index.d.ts","svelte":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/humanspeak","type":"github"},"scripts":{"dev":"vite dev","lint":"prettier --check . && eslint .","test":"vitest --coverage --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","husky":"husky","format":"prettier --write .","preview":"vite preview","test:unit":"vitest --coverage --run","test:watch":"vitest --coverage","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"humanspeakadmin","email":"admin@humanspeak.com"},"_resolved":"/tmp/e8d448787ea84a34491375b2db1bd4f9/humanspeak-svelte-purify-0.0.2.tgz","_integrity":"sha512-V3QXNnOBgvR1Yeesuc2cLbbg3Y/Df6TkSf//FmoW9ENiNXuYcA1XsIFqhuH98SpjHWtB2NBDiifFNk2y2YdIlg==","repository":{"url":"git+https://github.com/humanspeak/svelte-purify.git","type":"git"},"_npmVersion":"10.9.3","description":"Safe HTML rendering for Svelte powered by DOMPurify. SSR-ready, browser-only entry, and edge-friendly options.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.19.0","dependencies":{"dompurify":"^3.2.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.5","husky":"^9.1.7","jsdom":"^26.1.0","eslint":"^9.35.0","svelte":"^5.38.7","vitest":"^3.2.4","globals":"^16.3.0","publint":"^0.3.12","prettier":"^3.6.2","@eslint/js":"^9.35.0","typescript":"^5.9.2","@types/node":"^24.3.1","@types/jsdom":"^21.1.7","svelte-check":"^4.3.1","@sveltejs/kit":"^2.37.1","@eslint/compat":"^1.3.2","@sveltejs/package":"^2.5.0","typescript-eslint":"^8.42.0","@vitest/coverage-v8":"3.2.4","eslint-plugin-svelte":"^3.12.2","@sveltejs/adapter-auto":"^6.1.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^3.4.0","@testing-library/svelte":"^5.2.8","@testing-library/jest-dom":"^6.8.0","prettier-plugin-sort-json":"^4.1.1","@sveltejs/vite-plugin-svelte":"^6.1.4","prettier-plugin-organize-imports":"^4.2.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-purify_0.0.2_1757357603046_0.14810094963409748","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@humanspeak/svelte-purify","version":"0.0.4","keywords":["svelte","sveltekit","dompurify","sanitize","sanitization","xss","security","html","safe-html","render","renderer","ssr","edge","browser","browser-only","svelte-component","svelte-library","svelte-plugin","dom","dompurify-config"],"author":{"name":"Humanspeak, Inc."},"license":"MIT","_id":"@humanspeak/svelte-purify@0.0.4","maintainers":[{"name":"humanspeakadmin","email":"admin@humanspeak.com"}],"homepage":"https://github.com/humanspeak/svelte-purify#readme","bugs":{"url":"https://github.com/humanspeak/svelte-purify/issues"},"dist":{"shasum":"3a331878ec1dc456a3244b2f08a71034a7286d65","tarball":"https://registry.npmjs.org/@humanspeak/svelte-purify/-/svelte-purify-0.0.4.tgz","fileCount":9,"integrity":"sha512-oBF/CWddS14GRKT2qak61SYmC1IN0qVy3Mbf9kCyGGenPsbvIg0J6JPMWNyZvF9/HnFDenTirYIcxp9FhrWDzw==","signatures":[{"sig":"MEUCIQCCRf9SpjmIN13pchWfoLq6cZn/3y6OiJXepFH0A1aDigIgedVAJnJ2a3kYjimtJLB1ac50PIJssWcc6/lBj0YNJCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@humanspeak%2fsvelte-purify@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11878},"tags":["svelte","DOMPurify"],"type":"module","_from":"file:humanspeak-svelte-purify-0.0.4.tgz","types":"./dist/index.d.ts","svelte":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","svelte":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/humanspeak","type":"github"},"scripts":{"dev":"vite dev","lint":"prettier --check . && eslint .","test":"vitest --coverage --run","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","husky":"husky","format":"prettier --write .","preview":"vite preview","test:unit":"vitest --coverage --run","test:watch":"vitest --coverage","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"},"_npmUser":{"name":"humanspeakadmin","email":"admin@humanspeak.com"},"_resolved":"/tmp/5be3c2731b9efc67732df19e7dcd7cef/humanspeak-svelte-purify-0.0.4.tgz","_integrity":"sha512-oBF/CWddS14GRKT2qak61SYmC1IN0qVy3Mbf9kCyGGenPsbvIg0J6JPMWNyZvF9/HnFDenTirYIcxp9FhrWDzw==","repository":{"url":"git+https://github.com/humanspeak/svelte-purify.git","type":"git"},"_npmVersion":"10.9.3","description":"Safe HTML rendering for Svelte powered by DOMPurify. SSR-ready, browser-only entry, and edge-friendly options.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.20.0","dependencies":{"dompurify":"^3.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.10","husky":"^9.1.7","jsdom":"^27.0.0","eslint":"^9.37.0","svelte":"^5.39.13","vitest":"^3.2.4","globals":"^16.4.0","publint":"^0.3.14","prettier":"^3.6.2","@eslint/js":"^9.37.0","typescript":"^5.9.3","@types/node":"^24.7.2","@types/jsdom":"^27.0.0","svelte-check":"^4.3.3","@sveltejs/kit":"^2.46.5","@eslint/compat":"^1.4.0","@sveltejs/package":"^2.5.4","typescript-eslint":"^8.46.1","@vitest/coverage-v8":"3.2.4","eslint-plugin-svelte":"^3.12.4","@sveltejs/adapter-auto":"^6.1.1","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^3.4.0","@testing-library/svelte":"^5.2.8","@testing-library/jest-dom":"^6.9.1","prettier-plugin-sort-json":"^4.1.1","@sveltejs/vite-plugin-svelte":"^6.2.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-purify_0.0.4_1760472034723_0.23267564204764102","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@humanspeak/svelte-purify","version":"0.0.6","keywords":["svelte","sveltekit","dompurify","sanitize","sanitization","xss","security","html","safe-html","render","renderer","ssr","edge","browser","browser-only","svelte-component","svelte-library","svelte-plugin","dom","dompurify-config"],"author":{"name":"Humanspeak, Inc."},"license":"MIT","_id":"@humanspeak/svelte-purify@0.0.6","maintainers":[{"name":"humanspeakadmin","email":"admin@humanspeak.com"}],"homepage":"https://github.com/humanspeak/svelte-purify#readme","bugs":{"url":"https://github.com/humanspeak/svelte-purify/issues"},"dist":{"shasum":"fe2198841956f8795c5d21c6b6badeddb480fd0f","tarball":"https://registry.npmjs.org/@humanspeak/svelte-purify/-/svelte-purify-0.0.6.tgz","fileCount":9,"integrity":"sha512-nPklQhQhlnmHaEKVqqsl7gPNC231moreRtE7ey5Ys9r0p20Zj95MRt3KMFctUMwE9Y3pNmbNG6fWvSxGmmdaqQ==","signatures":[{"sig":"MEUCIQD5RSdWjeUvK79NSS0ATxxPjjmnvsMwU6VOM1Xm5qwkAgIgcK5fiGmp6ChLW22cICL3jucXSMjz9tDMVNgm72MutUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@humanspeak%2fsvelte-purify@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12357},"tags":["svelte","DOMPurify"],"type":"module","_from":"file:humanspeak-svelte-purify-0.0.6.tgz","types":"./dist/index.d.ts","svelte":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","svelte":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/humanspeak","type":"github"},"scripts":{"dev":"vite dev","lint":"prettier --check . && eslint .","test":"vitest run --coverage","build":"vite build && npm run prepack","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","husky":"husky","format":"prettier --write .","dev:all":"concurrently -k -n pkg,docs -c green,cyan \"pnpm -w -r --filter @humanspeak/svelte-purify run dev\" \"pnpm --filter docs run dev\"","dev:pkg":"svelte-kit sync && svelte-package --watch","preview":"vite preview","test:e2e":"playwright test","test:unit":"vitest --coverage --run","test:watch":"vitest --coverage","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","test:e2e:ui":"playwright test --ui","test:e2e:debug":"playwright test --debug","test:e2e:report":"playwright show-report"},"_npmUser":{"name":"humanspeakadmin","email":"admin@humanspeak.com"},"_resolved":"/tmp/e3f7440b854b19e8784e5fdabda91642/humanspeak-svelte-purify-0.0.6.tgz","_integrity":"sha512-nPklQhQhlnmHaEKVqqsl7gPNC231moreRtE7ey5Ys9r0p20Zj95MRt3KMFctUMwE9Y3pNmbNG6fWvSxGmmdaqQ==","repository":{"url":"git+https://github.com/humanspeak/svelte-purify.git","type":"git"},"_npmVersion":"10.9.3","description":"Safe HTML rendering for Svelte powered by DOMPurify. SSR-ready, browser-only entry, and edge-friendly options.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.20.0","dependencies":{"dompurify":"^3.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","husky":"^9.1.7","jsdom":"^27.0.1","eslint":"^9.38.0","svelte":"^5.41.3","vitest":"^3.2.4","globals":"^16.4.0","publint":"^0.3.15","prettier":"^3.6.2","@eslint/js":"^9.38.0","playwright":"^1.56.1","typescript":"^5.9.3","@types/node":"^24.9.1","@types/jsdom":"^27.0.0","concurrently":"^9.2.1","svelte-check":"^4.3.3","@sveltejs/kit":"^2.47.3","@eslint/compat":"^1.4.0","@playwright/test":"^1.56.1","@sveltejs/package":"^2.5.4","typescript-eslint":"^8.46.2","@vitest/coverage-v8":"^3.2.4","eslint-plugin-svelte":"^3.12.5","@sveltejs/adapter-auto":"^7.0.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^3.4.0","@testing-library/svelte":"^5.2.8","@testing-library/jest-dom":"^6.9.1","prettier-plugin-sort-json":"^4.1.1","@sveltejs/vite-plugin-svelte":"^6.2.1","prettier-plugin-organize-imports":"^4.3.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/svelte-purify_0.0.6_1761325807578_0.6484170279882506","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@humanspeak/svelte-purify","version":"0.0.8","description":"Safe HTML rendering for Svelte powered by DOMPurify. SSR-ready, browser-only entry, and edge-friendly options.","keywords":["svelte","sveltekit","dompurify","sanitize","sanitization","xss","security","html","safe-html","render","renderer","ssr","edge","browser","browser-only","svelte-component","svelte-library","svelte-plugin","dom","dompurify-config"],"homepage":"https://github.com/humanspeak/svelte-purify#readme","bugs":{"url":"https://github.com/humanspeak/svelte-purify/issues"},"repository":{"type":"git","url":"git+https://github.com/humanspeak/svelte-purify.git"},"funding":{"type":"github","url":"https://github.com/sponsors/humanspeak"},"license":"MIT","author":{"name":"Humanspeak, Inc."},"sideEffects":["**/*.css"],"type":"module","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","import":"./dist/index.js","default":"./dist/index.js"}},"svelte":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"dompurify":"^3.4.7"},"devDependencies":{"@eslint/compat":"^2.1.0","@eslint/js":"^10.0.1","@playwright/test":"^1.60.0","@sveltejs/adapter-auto":"^7.0.1","@sveltejs/kit":"^2.61.1","@sveltejs/package":"^2.5.7","@sveltejs/vite-plugin-svelte":"^7.1.2","@testing-library/jest-dom":"^6.9.1","@testing-library/svelte":"^5.3.1","@types/jsdom":"^28.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7","concurrently":"^9.2.1","eslint":"^10.4.0","eslint-config-prettier":"^10.1.8","eslint-plugin-svelte":"^3.18.0","globals":"^17.6.0","husky":"^9.1.7","jsdom":"^29.1.1","playwright":"^1.60.0","prettier":"^3.8.3","prettier-plugin-organize-imports":"^4.3.0","prettier-plugin-sort-json":"^4.2.0","prettier-plugin-svelte":"^4.0.1","publint":"^0.3.21","svelte":"^5.55.9","svelte-check":"^4.4.8","typescript":"^6.0.3","typescript-eslint":"^8.60.0","vite":"^8.0.14","vitest":"^4.1.7"},"peerDependencies":{"svelte":"^5.0.0"},"engines":{"node":">=18"},"volta":{"node":"24.16.0"},"publishConfig":{"access":"public"},"tags":["svelte","DOMPurify"],"scripts":{"build":"vite build && npm run prepack","cf-typegen":"pnpm --filter docs cf-typegen","check":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json","check:watch":"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch","dev":"vite dev","dev:all":"concurrently -k -n pkg,docs -c green,cyan \"pnpm -w -r --filter @humanspeak/svelte-purify run dev\" \"pnpm --filter docs run dev\"","dev:pkg":"svelte-kit sync && svelte-package --watch","format":"prettier --write .","husky":"husky","lint":"prettier --check . && eslint .","preview":"vite preview","test":"vitest run --coverage","test:e2e":"playwright test","test:e2e:debug":"playwright test --debug","test:e2e:report":"playwright show-report","test:e2e:ui":"playwright test --ui","test:unit":"vitest --coverage --run","test:watch":"vitest --coverage"},"_id":"@humanspeak/svelte-purify@0.0.8","_integrity":"sha512-ByYysJM6FaJWQWwLLa/mL3pkr43D+C1py8CcS9cSmfvwfiw6kf5yDRg4ziApOxRVE9N8dqPt7lOtwPAuvj/MAg==","_resolved":"/tmp/c72c1e75b4d123543402089adbf7a241/humanspeak-svelte-purify-0.0.8.tgz","_from":"file:humanspeak-svelte-purify-0.0.8.tgz","_nodeVersion":"24.17.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-ByYysJM6FaJWQWwLLa/mL3pkr43D+C1py8CcS9cSmfvwfiw6kf5yDRg4ziApOxRVE9N8dqPt7lOtwPAuvj/MAg==","shasum":"978a1bc3dab61a5053c344bee554118616e215ef","tarball":"https://registry.npmjs.org/@humanspeak/svelte-purify/-/svelte-purify-0.0.8.tgz","fileCount":9,"unpackedSize":13547,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@humanspeak%2fsvelte-purify@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCi+ttjwx1RX7f0dXbnRlcgYA+nY0vh2jAf9LStjuC0ZQIhAN8E16dKFJeA4eREkhktWGISZb/IaET/tveuOeROA0xy"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c0f7868-b009-4c31-81e3-dba3b6dfe27c"}},"directories":{},"maintainers":[{"name":"humanspeakadmin","email":"admin@humanspeak.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/svelte-purify_0.0.8_1782420071592_0.542108774367269"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-08T16:51:01.806Z","modified":"2026-06-25T20:41:12.090Z","0.0.1":"2025-09-08T16:51:02.142Z","0.0.2":"2025-09-08T18:53:23.253Z","0.0.4":"2025-10-14T20:00:34.888Z","0.0.6":"2025-10-24T17:10:07.864Z","0.0.8":"2026-06-25T20:41:11.733Z"},"bugs":{"url":"https://github.com/humanspeak/svelte-purify/issues"},"author":{"name":"Humanspeak, Inc."},"license":"MIT","homepage":"https://github.com/humanspeak/svelte-purify#readme","keywords":["svelte","sveltekit","dompurify","sanitize","sanitization","xss","security","html","safe-html","render","renderer","ssr","edge","browser","browser-only","svelte-component","svelte-library","svelte-plugin","dom","dompurify-config"],"repository":{"type":"git","url":"git+https://github.com/humanspeak/svelte-purify.git"},"description":"Safe HTML rendering for Svelte powered by DOMPurify. SSR-ready, browser-only entry, and edge-friendly options.","maintainers":[{"name":"humanspeakadmin","email":"admin@humanspeak.com"}],"readme":"# @humanspeak/svelte-purify\n\nA tiny, friendly sanitizer for Svelte that keeps your HTML shiny and safe using DOMPurify. SSR-ready by default.\n\n[![NPM version](https://img.shields.io/npm/v/@humanspeak/svelte-purify.svg)](https://www.npmjs.com/package/@humanspeak/svelte-purify)\n[![Build Status](https://github.com/humanspeak/svelte-purify/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/humanspeak/svelte-purify/actions/workflows/npm-publish.yml)\n[![Coverage Status](https://coveralls.io/repos/github/humanspeak/svelte-purify/badge.svg?branch=main)](https://coveralls.io/github/humanspeak/svelte-purify?branch=main)\n[![License](https://img.shields.io/npm/l/@humanspeak/svelte-purify.svg)](https://github.com/humanspeak/svelte-purify/blob/main/LICENSE)\n[![Downloads](https://img.shields.io/npm/dm/@humanspeak/svelte-purify.svg)](https://www.npmjs.com/package/@humanspeak/svelte-purify)\n[![CodeQL](https://github.com/humanspeak/svelte-purify/actions/workflows/codeql.yml/badge.svg)](https://github.com/humanspeak/svelte-purify/actions/workflows/codeql.yml)\n[![Install size](https://packagephobia.com/badge?p=@humanspeak/svelte-purify)](https://packagephobia.com/result?p=@humanspeak/svelte-purify)\n[![Code Style: Trunk](https://img.shields.io/badge/code%20style-trunk-blue.svg)](https://trunk.io)\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\n[![Types](https://img.shields.io/npm/types/@humanspeak/svelte-purify.svg)](https://www.npmjs.com/package/@humanspeak/svelte-purify)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/humanspeak/svelte-purify/graphs/commit-activity)\n\n## Features\n\n- 🚀 **Fast and tiny**: DOMPurify under the hood, minimal wrapper\n- 🔒 **XSS protection**: strips scripts, unsafe URLs, and sneaky attributes\n- 🧰 **Options passthrough**: you control DOMPurify via `options`\n- 🧭 **SSR-ready**: default component works on server and client\n- 🧪 **Tested**: unit tests with Vitest/JSDOM\n- 🧑‍💻 **Full TypeScript**: proper types for options and props\n- 🧿 **Svelte 5 runes-friendly**: clean, modern Svelte API\n\n## Installation\n\n```bash\nnpm i -S @humanspeak/svelte-purify\n# or\npnpm add @humanspeak/svelte-purify\n# or\nyarn add @humanspeak/svelte-purify\n```\n\n## Basic Usage\n\n### Default\n\n```svelte\n<script lang=\"ts\">\n    import { SveltePurify } from '@humanspeak/svelte-purify'\n\n    const html = `<p>Hello <strong>world</strong><script>alert(1)</script></p>`\n</script>\n\n<SveltePurify {html} />\n```\n\n### Limit output length\n\n```svelte\n<SveltePurify {html} maxLength={120} />\n```\n\n### Render hooks (preHtml/postHtml)\n\nYou can render UI before and after the sanitized HTML. Each hook receives the sanitized HTML length as a number.\n\n```svelte\n<script lang=\"ts\">\n    import { SveltePurify } from '@humanspeak/svelte-purify'\n    const html = `<p><strong>Hello</strong> world!</p>`\n</script>\n\n<SveltePurify\n    {html}\n    preHtml={(len) => <>Sanitized length: {len}</>}\n    postHtml={(len) => <> • {len} chars</>}\n/>\n```\n\n## Options (DOMPurify)\n\nPass any `DOMPurify.sanitize` options. We don’t hide anything—use the full power of DOMPurify.\n\n```svelte\n<script lang=\"ts\">\n    import { SveltePurify } from '@humanspeak/svelte-purify'\n\n    const html = `<a href=\"javascript:alert(1)\" title=\"nope\">click me</a>`\n    const options = {\n        ALLOWED_TAGS: ['a'],\n        ALLOWED_ATTR: ['href', 'title']\n    }\n</script>\n\n<SveltePurify {html} {options} />\n```\n\nNote: The component returns sanitized HTML as a string (not DOM nodes).\n\n## Props\n\n| Component      | Prop        | Type                                       | Description                                    |\n| -------------- | ----------- | ------------------------------------------ | ---------------------------------------------- |\n| `SveltePurify` | `html`      | `string`                                   | Raw HTML to sanitize and render                |\n|                | `options`   | `Parameters<typeof DOMPurify.sanitize>[1]` | DOMPurify options (all supported)              |\n|                | `maxLength` | `number`                                   | If set, truncates the sanitized HTML string    |\n|                | `preHtml`   | `Snippet<[number]>`                        | Renders before HTML; receives sanitized length |\n|                | `postHtml`  | `Snippet<[number]>`                        | Renders after HTML; receives sanitized length  |\n\n## Exports\n\n```ts\nimport { SveltePurify } from '@humanspeak/svelte-purify'\n```\n\n- **SveltePurify**: SSR-friendly sanitizer component\n\n## Security\n\nThis library delegates sanitization to [DOMPurify](https://github.com/cure53/DOMPurify), a battle-tested sanitizer. It removes script tags, event handler attributes (like `onerror`), and unsafe URLs (`javascript:`), among many other protections.\n\n## Examples\n\nStrip a specific tag with DOMPurify options:\n\n```svelte\n<SveltePurify html=\"<p>Hello <strong>world</strong></p>\" options={{ FORBID_TAGS: ['strong'] }} />\n```\n\nAllow an extra tag:\n\n```svelte\n<SveltePurify\n    html=\"<iframe src=\\\"about:blank\\\"></iframe>\"\n    options={{ ADD_TAGS: ['iframe'] }}\n/>\n```\n\n<!-- docs-kit:ecosystem start -->\n\n## Svelte 5 ecosystem\n\nPart of the [Humanspeak](https://humanspeak.com) family of runes-native Svelte 5 packages:\n\n| Package | Description |\n| --- | --- |\n| [@humanspeak/svelte-markdown](https://markdown.svelte.page) | Runtime markdown renderer for Svelte |\n| [@humanspeak/svelte-virtual-list](https://virtuallist.svelte.page) | Virtual scrolling for Svelte |\n| [@humanspeak/svelte-motion](https://motion.svelte.page) | Framer Motion for Svelte 5 |\n| [@humanspeak/svelte-headless-table](https://table.svelte.page) | Headless data tables for Svelte |\n| [@humanspeak/svelte-diff-match-patch](https://diff.svelte.page) | Diff comparison for Svelte |\n| **[@humanspeak/svelte-purify](https://purify.svelte.page)** — _this package_ | HTML sanitisation for Svelte |\n| [@humanspeak/svelte-virtual-chat](https://virtualchat.svelte.page) | Virtual chat viewport for Svelte 5 |\n| [@humanspeak/memory-cache](https://memory.svelte.page) | In-memory cache for TypeScript |\n| [@humanspeak/svelte-json-view-lite](https://jsonview.svelte.page) | JSON tree viewer for Svelte 5 |\n| [@humanspeak/svelte-scoped-props](https://scoped.svelte.page) | Scoped class props for Svelte |\n\n## License\n\nMIT © [Humanspeak, Inc.](LICENSE)\n\n## Credits\n\nMade with ❤️ by [Humanspeak](https://humanspeak.com)\n\n<!-- docs-kit:ecosystem end -->\n","readmeFilename":"README.md"}