{"_id":"domotion-svg","_rev":"39-4ce35d702ddf5ccb36d3374510b6270e","name":"domotion-svg","dist-tags":{"latest":"0.30.1"},"versions":{"0.1.1":{"name":"domotion-svg","version":"0.1.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.1.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"bin":{"domotion":"dist/cli.js"},"dist":{"shasum":"aaadf812d6b972aa624fff4d8d7e76f2717f38c8","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.1.1.tgz","fileCount":119,"integrity":"sha512-JVpbtGXkPeNtuJ7Ky5YN3p3BbgkGTid+ZAV8RoEbTZcMTandR0dbZA4zSFid0+pTNbGwsfyK6nYvcqxdkJVCwQ==","signatures":[{"sig":"MEQCIEMlN2HcAl3MKwHwcaNWbmEdPsAk00lOmEOqOVb+WHplAiA1RSMrVFKRA2i5aB0cx7HModOSYQA5nb/gXM+vRggVqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2208406},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"0d7b1f2c68de244ae87bc648e6cc7ae0b5da5fd1","scripts":{"test":"vitest run","build":"tsc","capture":"tsx src/cli.ts","release":"bash scripts/release.sh","typecheck":"tsc --noEmit","demos:test":"tsx tests/features.ts","test:watch":"vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx","demos:test:html":"tsx tests/html-test-suite.tsx","demos:test:showcase":"tsx tests/showcase.tsx","demos:test:real-world":"tsx tests/real-world.tsx","demos:test:snapshot-isolation":"tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"bwestphal","email":"brian.westphal@bleugris.com"},"_npmVersion":"11.11.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.5.1","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.1.1_1778466068709_0.9921815442094608","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"domotion-svg","version":"0.2.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.2.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"f9b386643dc48d926cf22c8af9854db09fa0131f","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.2.2.tgz","fileCount":264,"integrity":"sha512-nijqytzENe2N3hgyOIbZ9u2aVkWBBhyCtDllUc0iu4S5K7SRVnt4O290rF57TAsBJI6z3g3jEP2wINe5xZn1fg==","signatures":[{"sig":"MEUCID8LNEwBJASMwg/oXviNlcR8JE69LyGlHf4suwhCh6CZAiEAzZA3X716DjFT5r1EjIMQhFCdod07mFFOIgEECSLHEwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3027672},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"8ca764c7f5ee750fc8e59fce9e0e3baa3b8a4264","scripts":{"test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.14.1","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.6.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.2.2_1779069647948_0.9237438147908088","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"domotion-svg","version":"0.3.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.3.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"f2839cbd8493a69402a842ea984bb7822ce3f958","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.3.1.tgz","fileCount":283,"integrity":"sha512-ctuMdC6fpVQLANBaLclCv2rBHp0vfWvHpQ3GrCFPQHgNcVKXsMDgsqkPTu2mfDdCfO2r2pnl2yt9U8wpW9PHQQ==","signatures":[{"sig":"MEUCIQConKH6rQpi0HJ5fQ1o8hb+P7EkkHCyZmV2nNugjGrrmgIgToNelcE+UJ1CUpZkHhoi6MEYwxeU6Eh9D2u85JAmcXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3881480},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d5193c1af696a7afde21089492ceb235775c6f7a","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.15.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.13.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.13.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.3.1_1779663552279_0.6818380999379143","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"domotion-svg","version":"0.3.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.3.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"0478144b8653e0e61db936d05b6b268ce5efaf0a","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.3.2.tgz","fileCount":283,"integrity":"sha512-FFtMi0y7WJba0OXxRKeCVYiIJwg4mbqGFW9VGonUBjUDwI7YKEZPyZThdshH8qls7vksr2hvmwv2imW39tYNIw==","signatures":[{"sig":"MEQCIEn1EqQgh+fnSWJIcaVDK0abg3yKD07RXbLacZcyiHAkAiB3/xT767qkEBeDVO1W2qswSY6EmvnOUGcICkaYTTgYPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3881542},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"c9800fc083e5df3abe089292c4f7b0d67a14b5a9","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.15.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.13.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.13.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.3.2_1779667984349_0.3022818593653096","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"domotion-svg","version":"0.3.3","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.3.3","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"c31bcefbd4e65d7a4fbfbb4d2908813906c3acc1","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.3.3.tgz","fileCount":283,"integrity":"sha512-729+kJbIoPSeHPr/ZRMYy96eoj0hsoRihwgKcfZ6rVlzQjXeLmi4xlZqPxu7oAVARI8RPgCNEeslcRZOHITiRQ==","signatures":[{"sig":"MEYCIQDnI7uylDkYmJkeuW7/PbpASlec7dd+CYz7uNhtw59VZAIhAPn56cfWyIeXSxGYz/9k7unDdn3yCyTMZ5tNGGb0Ss8g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3881542},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"425c530c57cd008bc88049c7db2689aef57442f3","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.15.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.13.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.13.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.3.3_1779670014212_0.03409414845440284","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"domotion-svg","version":"0.4.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.4.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"d7d41115ce92457a99e459120af0aabb1f913a73","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.4.1.tgz","fileCount":283,"integrity":"sha512-3lPuVPYvu+R/1jWEmg39Rh//i7CizIia9HZvptXXgkfT2tQHnXiAg2WHNYdF5mQ5kW8UHqY1nB8gTS+OmHHSbQ==","signatures":[{"sig":"MEYCIQDlrL7kn8PEVib5H6xC248CeO2kenmtgrL6+kMI+hUq1wIhALlZA/DnXfd6sHv7Xcor0WhQE7p7j0u1Nr1TVe1jnDAp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3950276},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"4e69213376a88862fcd87fa5ff12cc6a891e75f3","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.15.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.13.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.13.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.4.1_1779677284421_0.27022072923489704","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"domotion-svg","version":"0.4.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.4.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"821e3bf3a7c1e09b55cfc01e6a8f54c7a3d8a662","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.4.2.tgz","fileCount":283,"integrity":"sha512-HZv6JllvLvyeXE3JhIQUTiy603Cu0chRefgMkU1fioeV8im0lWynCCYCkmtaX9B5qarC6yjMp6x+iwaGKCPGXQ==","signatures":[{"sig":"MEUCIAx/rmbaJw6zM+/2nSgLQ0EfntVEvCi8JtKr3wZasCKAAiEA4+mpMkSRNkDLv7t359nX3Hvo0/gJUk1/sldnSbmWgwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3964154},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"3d6ad460197a529e6f6a9e0f620ddd96b5ce7215","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.15.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.13.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.13.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.4.2_1779681294632_0.9647419572775398","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"domotion-svg","version":"0.5.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.5.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js"},"dist":{"shasum":"c56251edfb29cdd102aa18841f09f3a676b6dc24","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.5.0.tgz","fileCount":289,"integrity":"sha512-4Dk0Bg+Sneps1iAb54tiNmqHIymqNTwqVSVLGzw/3TVl0REVzL3rUtvs/4Tv5tBBUWGMStpqxHpj+DtSniDWrA==","signatures":[{"sig":"MEQCIHMuGaA3WpZQVJLQQRJhTiGv4CBMRHosKkiApfdH+LirAiAAhFXlwlIEPapwuhWJTWX7gZmlPGD+zR3y7rvNCFaYkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4072587},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"ea350a1b1965d1058d652c77def20e1f092aa52d","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && tsc","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.15.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.13.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.13.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.5.0_1779695687595_0.5474181297882224","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"domotion-svg","version":"0.6.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.6.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"ef6afc917433fab6a07b5e2f135609ef23823885","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.6.0.tgz","fileCount":152,"integrity":"sha512-wytqqRm2g/F7VTjrrWfh1qaPBavJzwgblNpoxGLuN99fFKrWoNqfO3fvZiui5jOpChRKjhQgORsrBcZcFdZpBQ==","signatures":[{"sig":"MEQCICqNdvTA6fAY9MdFone19OVmo5y4nUMAduBOetJ8gBsXAiA+gJ/eq3w6NhuQCwTfpFHgvAy5O00Bz45WIDZL6fDeGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2034760},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"0794a88514c5358c996e5707914c8c802998edce","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && npm run build:review-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.16.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.6.0_1780014636481_0.5032602614923887","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"domotion-svg","version":"0.7.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.7.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"25e308fd7dccb863f7d1b98a7a2cc1023e72c2fa","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.7.0.tgz","fileCount":152,"integrity":"sha512-syOlupgKjeocMe64Wj/VM/Yp9FVMQx/7NbB4qsF+eX1/vTHzxgylSNYeWhPx1j+lG8vZaddESXyfU3tkxU2xog==","signatures":[{"sig":"MEUCIEomcLNg+1gP+kgnKEYdY6tYrE2F+eCP1Qa6C4L0Q83aAiEA7nVbftyzFQuUBoWuUatbUIgan/t3g7Q7zs9g+Lk2Ivk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2088348},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"3e8a5d897e1441260a3de6c3a5960c3cbab29d8d","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && npm run build:review-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.16.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.7.0_1780101144291_0.7583340258813889","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"domotion-svg","version":"0.8.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.8.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"c4f961a66889b31aeeceddebacd65a2678450e52","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.8.0.tgz","fileCount":152,"integrity":"sha512-LVcUx/erizpugugMdmCNcPOSLs3mT//ea3UIpV/5IevsJEoMgNLkhgoJnXox6hZJrOBLISXCiHMSINmBvf7Bhg==","signatures":[{"sig":"MEQCIHxlDR8SHpxLZreZ8s5NvACM9okeN9rDvmKWFhp1mZjaAiADGfxsoi8H1Alx3w6Hd4ERJK9g9xsC6hT1zk+O+Azkbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2099359},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"8095ce83e5f65c51872a5fa955680e2a3ace9f52","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","typecheck":"npm run build:capture-script && npm run build:review-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:capture-script":"node scripts/build-capture-script.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.16.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.8.0_1780115948323_0.4538518296421561","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"domotion-svg","version":"0.10.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.10.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"e92022e32688be7e2bb908f5efb6fa0caae155e0","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.10.1.tgz","fileCount":189,"integrity":"sha512-VphS4HhhFRf6uBG27aUO2UUPlmP1bupke+SOVQ/1fNklinIc04u/lTAlKh/VgSOSEtmZNG+9yFkCxi0DRRRfZA==","signatures":[{"sig":"MEYCIQCFxK6hNuagEPZTvx+LbNmpRKOUEpMuYK7SDi+5UJlvFQIhAK0NgUmoVcYzLBy1cbd0qf/zPD4oJPe8pAf3ZvHc3F89","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3179595},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"89f6cb88f1c714a9f0d94952f7367b8ce361f42c","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.16.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.10.1_1780625071722_0.9630595745806745","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"domotion-svg","version":"0.11.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.11.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"ba66127af0fc6b6a3edf2f993ec5900958e3f235","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.11.0.tgz","fileCount":193,"integrity":"sha512-2R0wVyPVWhRYWgW4KhT+vj+ScfYk47dmIIoZFJ8j4WJARVdBpkuqacGS2NYNzTUvY7pfuPzuYv2wsErujkRAeQ==","signatures":[{"sig":"MEYCIQCn5BYZ3w5AqveyZYRtLrUmX3mwHPoGlYWso6eoaXML3AIhAJUqDdPHNkWEVZr4I4uw8veWKEkhDUvZ9NKQ0JdKIIdm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3263122},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"0dcc5add0c72558b4de874a34fe4766ee775239b","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.16.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.11.0_1780717628601_0.05980648359538754","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"domotion-svg","version":"0.12.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.12.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"f37b9187940557d8cda0c40edb3fa749404d6d22","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.12.0.tgz","fileCount":193,"integrity":"sha512-L1FWVvaiT7ZwF8VpZs7y4j+oDkliYACcjxf+ZFnEAGm4KkUYLnyT+nNlZNjOXaVHJ2nenRM6xnQ1cosaglH2YA==","signatures":[{"sig":"MEQCIF7SWCmYyOWGmnRl8xyNQOTRnMYS0sh1LFYu6fD2Q/aoAiBM15VocYcSo4iSJKXqk5+EilDQE/C6o1IFwM3iu/jKyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3281731},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"96ffadc55177ead89ad579c25c51a0485f4d6c35","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.16.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.12.0_1780785691082_0.46755597937468907","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"domotion-svg","version":"0.13.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.13.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"aabcc1b6713ef1b9b5991973c38e190450f8943e","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.13.0.tgz","fileCount":201,"integrity":"sha512-KyPfXwV/k5UK0ORAbcn8T9okgwBmcnXqFQHQ1zZVjaNUi1pkBw1DuDuEXYohAeZSzXOt/mxreve3RCU2uOT98Q==","signatures":[{"sig":"MEYCIQCYF/G/O51j9T/iwqz3QgcRW4lufS8cfhwKvxqebncnZQIhAL+2Gl+qipbuLm95vLfVFgsiABlk9vkCJsVyXWNpU+UW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3388915},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"8d486efb13f81eeddc67322b00d0ebf742b2686e","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.13.0_1781653987716_0.5346486002870838","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"domotion-svg","version":"0.13.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.13.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"6ad70a8791a7d2e45d9b00a742538eaa4883154b","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.13.1.tgz","fileCount":201,"integrity":"sha512-2XGmY7RjbFMRIuKfz+XYdsI7CA7Aqc5PyguGE7G+9O/dAGe36fhhFHKZc/ICBTpT/ccZ0nzPcf7hG9dT3iqLUg==","signatures":[{"sig":"MEQCIFpITBfOBTOCRfJKfaxuaOwHiGg6Au3+3gqtEWCJGb+FAiAChAZCGnkCc0RGHnCp4OQmvObdBhIRZcddw7nw64X0JA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3389420},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"9de2f34182b9bc99b5bfc4b0cf3a287b2e93f3f5","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.13.1_1781663717183_0.26097348758915384","host":"s3://npm-registry-packages-npm-production"}},"0.13.2":{"name":"domotion-svg","version":"0.13.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.13.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"bfad7197391541b2e94ad0cfc1672ddd477dac59","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.13.2.tgz","fileCount":201,"integrity":"sha512-LJhhPybylC1wyMuzQ85Bx5b7rxQakdg1c+IwuGugT6m/FwUp4Lym0M+mkHvz2QIIP8WXpSa8GjtPANo8S4r1hg==","signatures":[{"sig":"MEQCIHpPm1C23lCEM8yZGoJwkIFKgwmaFQ3BAf5BXzq51vziAiBjhNgPSvJdYSaRvGBoSrubzhlVGhScmwEiKwIm8BxWNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.13.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3390444},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"97ac0e65d64fbd7dd4b6a11f37f58118ad6210f0","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.13.2_1781665826256_0.9342138625172098","host":"s3://npm-registry-packages-npm-production"}},"0.13.3":{"name":"domotion-svg","version":"0.13.3","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.13.3","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"a4888045f8cf373f65f7c116d1a8e690b3628554","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.13.3.tgz","fileCount":201,"integrity":"sha512-b5/SxXLQ78uI+un4xIE7K+SkGwqwKAOEnY3G2vsxEwpGkFymTPklsdnhUV4/NPjHQAHCzSzfUjQta80drBGGBg==","signatures":[{"sig":"MEQCIHp7D6ls3nY7G3yv84SqispnMTVy1RpkuDPVOamUuBhcAiBaExqyxFzXoKTP9wBDA+DGNrl6+kCgXByEv02xlZL8tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.13.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3391235},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"7a8220c215aacdae9132ee6e4df65f6266f21bc7","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","opentype.js":"^2.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.13.3_1781667172489_0.9545825188324104","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"domotion-svg","version":"0.14.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.14.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"c18a368949bcb0cdade3e206213a4164459ab22d","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.14.0.tgz","fileCount":221,"integrity":"sha512-2wWEIR5zp8vBOPgYfQLxppJMUhzHV4OkcThJwDNJVN2/bZXvsyHXDchn0GKfsrxYCfk6DA6abmoPx7vJR9OHhw==","signatures":[{"sig":"MEUCIQDZ1Yn+oSa4KCJk8VqSnR5y1OGv99+i7zB/o4xvM5/DMQIgVGHt+xb9QV/VHc/XfYFde4QpG+Xp+4bxQW5e5bQz0gU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3641121},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"7d24d074271c388664cebafabfa6df8edd3bae07","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.0.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.14.0_1782165572138_0.9103729351167051","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"domotion-svg","version":"0.15.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.15.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-to-video":"dist/cli/svg-to-video.js","animated-svg-scrubber":"dist/cli/scrubber.js"},"dist":{"shasum":"04a3a902522f8539f2ae954ebc5b3619e8cba7c0","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.15.0.tgz","fileCount":264,"integrity":"sha512-qrrWo8Q+VU4gV5u+XklhJrOPV6bD10GdKSpBo2MrU5g/nk0SzC2y87ikq0sNkEsiSrEnTz75vUnOTKdXHMZRTw==","signatures":[{"sig":"MEQCIGHtoxRM5rbttLh1wT0eToQoy111fKKXCRodBTaumgkyAiA2cXhyykqWpTkwJqAlApztH+wjl6KOUEHmcp1oMKIQ6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3860997},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2fba84bfbfa38215bacb4904b59be45528433f1b","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","manual:build":"tsx site/build.ts","manual:serve":"tsx site/serve.ts","release:beta":"bash scripts/release.sh --beta","manual:images":"tsx site/scripts/generate-images.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.0.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.15.0_1782280626362_0.2582978340326185","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"domotion-svg","version":"0.16.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.16.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"84b778a0831bf18e15b34eb272d275be86a93bae","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.16.0.tgz","fileCount":283,"integrity":"sha512-zeATOn2GO+moofw6Pcd2P2rU8B4WsrmaHiFb2J2enUrRhOOSk4To2E9mEY+8qwSNkdyU7LYRS6WRKRnyVmmrOA==","signatures":[{"sig":"MEUCID/hElP5zdrcTADwdn8Wx5NqX3CDpx7RoaqjvBKn7qPSAiEA8/uTpfFecLZnIOH5liM1kdq+7pN89EuoWAv2vQOm04s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3994771},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"3768a0625f3067e60185692ef0ec77eee5eddba0","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.17.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.0.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.16.0_1782468158687_0.09711340199107754","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"domotion-svg","version":"0.17.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.17.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"ebfebad197f22085d8df18e73ff4f55cbc65e50f","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.17.0.tgz","fileCount":293,"integrity":"sha512-xuaRXihfJx4kmI73xBi7XQevayMefx/Fi3D4oHPPGK/R95/xJMgIThHIW8jm/z0Et2Uq9Br11EOptbX0OvrUYw==","signatures":[{"sig":"MEUCIQCVHahKWUZY8vPWDiY1mcZbPDUohpI2gJfDBcjaRsPVHQIgfjj8X3H+2HnSvHk8bX5fVdu+jzREAWnOIEG8EMsCei4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4125285},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"e0a043b12588ed54839034909c6a0718e36a048a","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.18.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.1.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.17.0_1782778264006_0.7902918887707622","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"domotion-svg","version":"0.18.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.18.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"a391f57e7c7d3805ce25428ca29865832a88af2d","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.18.0.tgz","fileCount":297,"integrity":"sha512-PoqDz/dLJKIPuMjE33IKNGVYxMCf5mKpOPnOKmazIle53cmxrPWckVW375jo5ktSe10txHW2qsGYQH5boQl3ng==","signatures":[{"sig":"MEQCICVm61qA6xmEPz0BM5KxTeVYALZQKZsANh7KAJL8lrRvAiBUAo8Npv1JogChppn+nyaMW9OYh8R3IAbHUlfkjIiJCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4199648},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2b43240fee9cd0fab2292a472cf552fe08f02b09","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","test:coverage":"npm run build:capture-script && vitest run --coverage","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.18.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.14.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.1.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.14.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.18.0_1782866043769_0.6206323514326955","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"domotion-svg","version":"0.19.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.19.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"e4b35aac2cb91023805ae777d46648d107a1fb62","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.19.0.tgz","fileCount":297,"integrity":"sha512-oQqiUyAaqYGWE4ZGRYVSzCI0XpOeHhNxVYsLdntqpBNClDGtyf4I8HIKPE6TKoFiX8Eaguu0qP1ILKglE9gX5A==","signatures":[{"sig":"MEUCIA6uNdebotfS1qbcwwCxMPdL92J0biZ1qJE/Yh1GhLLJAiEAzMvnvBYA9H/Qi2MkJ4mnpz0Y8pqWGZoGPWqV11Pie7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4207264},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"1a22fa90bc5d47f02b67b3d82e984473843cbbe8","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.18.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.16.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.1.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.16.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.19.0_1782894244796_0.5175137791592974","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"domotion-svg","version":"0.19.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.19.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"dd17e5e0ab1db2dbd68a421aaece29cecd766a9c","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.19.1.tgz","fileCount":297,"integrity":"sha512-WUReXbgBwxwoNnszyVM3qv2O+cI0gXMwJVJYl4NvE1uv/dDhfSEM1V6ZuaIEoP7mGO95pBSTkCZ81sWXYkIgng==","signatures":[{"sig":"MEQCIEEDMm1bgc6/qwXmmRKDl3AA9xllf4Ttm3oaEj+RU2PZAiAISGgM+RDt6h53iOJNeINDkq5ICTdx6f/uzVhOmY2bdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4208778},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f9f16f81dccb6f3dc2055c64d8778ec7aba9b058","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.18.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.16.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.1.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.16.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.19.1_1782895561876_0.90486881762077","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"domotion-svg","version":"0.20.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.20.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"b630bf390158702488da574fb0a74a54d5d68a9b","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.20.0.tgz","fileCount":299,"integrity":"sha512-WtigDPbX0xQEVdexi4wPtsIb3rScyF3wp7NnR6mjsYWdXKQ7VIKB7i6eBfbsSt5/5NFEk61fQXZtie80OpJpUQ==","signatures":[{"sig":"MEUCIQC7EblI8fzxq6idHB+20PpUYtk0/wQlMBVdmlTnE456/wIgZ+/f7n/mnRQz8UOV2/aqFNce2aycmmxqJdfZlkxktAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4229875},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"1a8fbdd01eec2f7919bddc6daa356f712f7920bb","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/terminal-window-scroll.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.18.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.16.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.1.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.16.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.20.0_1782958394212_0.051642228647659216","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"domotion-svg","version":"0.21.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.21.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"33170cc215b0cea9f78ac9b7bef64438d3587ba0","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.21.1.tgz","fileCount":345,"integrity":"sha512-B191OrtyXHWBklblqtzh3iunhm7HaoxT2FMzMsW5J0r54YzJAMAh1b9+pUpGA7Yn2H4Bccm5KUbtGtfoJ3mzpg==","signatures":[{"sig":"MEUCIFQBpBlNjOMa8LSfCGU34V3xa5cjYW0TErd2QVEwK1qsAiEAyLEV91LD4UsueCcmoOYYG17/PIq8A/NOKsrg/fFf2F4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4773334},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2986baa292b747234e30a01506149026e10e9d71","scripts":{"lint":"eslint .","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=tests/output/html-test-unicode tsx tests/html-test-suite.tsx","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.18.0","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.1","sharp":"^0.34.5","kerfjs":"^0.16.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","wawoff2":"^2.0.1","harfbuzzjs":"^1.4.0","opentype.js":"^2.0.0","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.19.0","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.27.7","gitgist":"^1.1.0","happy-dom":"^20.9.0","typescript":"^5.8.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^3.2.4","eslint-plugin-kerfjs":"^0.16.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.21.1_1783124819929_0.5435385989957813","host":"s3://npm-registry-packages-npm-production"}},"0.22.2":{"name":"domotion-svg","version":"0.22.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.22.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"470db2d5804f691a8e8053ef3ba6d405bf6ab6b3","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.22.2.tgz","fileCount":421,"integrity":"sha512-bQVxEkEvW5bSe/TOEXZjOHyrLIBA5zFynpz/W6+xmJXCAsvcrxVgusAat+sBjBSZUB6g6oBTghcdxK80igM0ig==","signatures":[{"sig":"MEQCIGKZpKAEkA82/fcPuy9rAldagFVXp3YpF68cMJJtmCMKAiBdQIHN8uR3k3JZTJ0mh4CBZORIxRuytRjW0K5EOQR5qA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.22.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8278992},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"086b2183349cfb81fd5971c86129c9edeb3057ce","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.1.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.22.2_1786617165320_0.6295367763615147","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"domotion-svg","version":"0.23.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.23.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"3187a6b53999c4cd3cbd06a00b1e78355da2c85a","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.23.0.tgz","fileCount":423,"integrity":"sha512-veo6M0ejhy9vYdz4mFvMP7ve4DuG6c+GPNh6CZJA6J8RsiCEccmxVhHnKzsAQd4wIrNp5RUSVbccEiZawrjVEg==","signatures":[{"sig":"MEQCIATtxYHDbuuKLMqKVUelD2ILQfGfZULzRHlbHc9C9lKjAiAPbcaMtihncPtbnoUAQdtbukStR4qOLahcQH8OchFaUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8316067},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"048f1e613e68e0de539add1c4d4b229218adfd05","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.1.1","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.23.0_1786692963079_0.07906489972995967","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"domotion-svg","version":"0.24.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.24.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"08a492869af246f0f35b249da2e695567e747c55","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.24.0.tgz","fileCount":427,"integrity":"sha512-IkpoZu9nSbgt7Vwoqda6ImoaEhbBynA1fVdnN8r8xmAwSQ/wdQmuWCzsUtP/+HXiLfk7mLm6P4mtj3fPoC5Nbw==","signatures":[{"sig":"MEUCIEZSgZmhSbEcSZg/zvJYUMtLoMFrB6+t0fynZ+IBPQ8CAiEAvcMefWaRpSzBynXaZTzrl14GH0hpivxpv0ig/ACX4xU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8358543},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"e3681941848ecef8d405c72fe541771542e7667c","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","build:composite-schema":"tsx scripts/generate-composite-schema.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.1.1","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.24.0_1786840963262_0.6541935194090542","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"domotion-svg","version":"0.27.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.27.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"16861c1bb904fd7c504bfb04ef5c81235af8abcf","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.27.0.tgz","fileCount":610,"integrity":"sha512-AI30MWB/u0J7eS14gBdSOrie8B8kesXeN5Ew8gOxXF8FKO1p7rOUZRebBKPVgCmHh6MWBvSudv8vRCgGda8oZQ==","signatures":[{"sig":"MEQCIDp1vl6JbhhiR0FpWcZ6PcykgfpGHlLin8m8aPiVqq0UAiAxo8cX9oq5AcE9fxMPn6IH8wBo32pvQGlK+56WO8K0Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10504635},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"4c776e83d67733cc5708d96b3a4f11566bc5a1da","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.27.0_1788491527274_0.9539171679419631","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"domotion-svg","version":"0.27.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.27.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js"},"dist":{"shasum":"cc80b8b588f33ae6872f288084c4b84f855961ab","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.27.1.tgz","fileCount":612,"integrity":"sha512-TjH6szIdVOD6u7/RuyGevG4J2bsLVn5GPAUQcdLb5AjupQdiZXuBMP5M81YsXq32Nekdntx8JxWttFcsJYKAzg==","signatures":[{"sig":"MEQCICLHlHrM0tRYrwpqE3zsUsTraED7U9fxu+owIIswZvh1AiBSbHBk60YXmvKYWVRhYLZeqO0P3HoHKJ9OW/AQD/eI0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.27.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10509031},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d5a5b46f8953a8fd9539983ffc0526a464d77f41","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.27.1_1788559973508_0.6956871821739108","host":"s3://npm-registry-packages-npm-production"}},"0.27.2":{"name":"domotion-svg","version":"0.27.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.27.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js","domotion-studio":"dist/cli/studio.js"},"dist":{"shasum":"0a3a5e4e0d555f84cf745bf0325d90ff46050686","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.27.2.tgz","fileCount":663,"integrity":"sha512-lK0/0t4DaWzYFCz6zQVcDEKiXsTTSGkhG6G3Yyu/jo79gxY4/FUHfo9zFH5UiHafbYHXrjYMJ+GhAHWPo1VPHQ==","signatures":[{"sig":"MEYCIQCJbOi6S36Bl5LH8VbTrloysM64/GzhpuhWGHIp8yVbHwIhAP661LUwhRsXgdll4Gn0mN7MYFEb9TDGW1CVtZkhq7w2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.27.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12387936},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"93b0acf11a78fc48258fa181eb3c18f872f05f02","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && npm run build:studio-project-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","benchmark:glassbox":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","build:studio-client":"node scripts/build-studio-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","benchmark:glassbox:quick":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change --no-video --no-publish","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","build:studio-project-schema":"tsx scripts/generate-studio-project-schema.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","typecheck:glassbox-benchmark":"tsc --noEmit -p benchmarks/glassbox/tsconfig.json","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.27.2_1788740553289_0.6580285999529336","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"domotion-svg","version":"0.28.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.28.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js","domotion-studio":"dist/cli/studio.js"},"dist":{"shasum":"1282aad2a3ef70e0b11afd6fae7a11849ef97c17","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.28.0.tgz","fileCount":663,"integrity":"sha512-d8cl0FHm9QUAHf4PuDgtYPveWtuJVsPzY8+tKx5VWRpXGpHeLzlwibCzbbqQKyL+QGeiLv3Venby184CNsYPWg==","signatures":[{"sig":"MEYCIQDS/bm6o53A5aoMN9l7xHeYXZ92lY3xzgrdPOd2FtjA2gIhAIW1kmOJmeDx6pUrGySTJuRsTGXDf3MCj4dfNETUUbuu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12392081},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"c53705e00eac15f7d73bcce602f5cbbe165db149","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && npm run build:studio-project-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","benchmark:glassbox":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","build:studio-client":"node scripts/build-studio-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","benchmark:glassbox:quick":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change --no-video --no-publish","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","build:studio-project-schema":"tsx scripts/generate-studio-project-schema.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","typecheck:glassbox-benchmark":"tsc --noEmit -p benchmarks/glassbox/tsconfig.json","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.28.0_1788755301339_0.7336495212510272","host":"s3://npm-registry-packages-npm-production"}},"0.28.1":{"name":"domotion-svg","version":"0.28.1","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.28.1","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js","domotion-studio":"dist/cli/studio.js"},"dist":{"shasum":"45455de5071e3fa06165a11ef4a2834cbb5be656","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.28.1.tgz","fileCount":663,"integrity":"sha512-ql41tt1Msfw/9cW3uLTpBPb0WIRfJ1Z6webNMafS61hzGXiniXm96OJTMuOwI8L6U54DrO9yy6xBJDTDhRtlPA==","signatures":[{"sig":"MEUCIDKpQl0dLVG1kFjFLxnP92gwtvDZrOQmIcwPgLNEqfCUAiEA/tapT7rrB1DrmNK6FL2+Ou62sTjiQMD5UYB5KkYkDcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.28.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12393956},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"f0aa6669b2d75ee4e9a2ed6e198ffa0c6fbc3b64","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && npm run build:studio-project-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","benchmark:glassbox":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","build:studio-client":"node scripts/build-studio-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","benchmark:glassbox:quick":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change --no-video --no-publish","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","build:studio-project-schema":"tsx scripts/generate-studio-project-schema.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","typecheck:glassbox-benchmark":"tsc --noEmit -p benchmarks/glassbox/tsconfig.json","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.28.1_1788760958127_0.9279268742104412","host":"s3://npm-registry-packages-npm-production"}},"0.28.2":{"name":"domotion-svg","version":"0.28.2","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.28.2","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js","domotion-studio":"dist/cli/studio.js"},"dist":{"shasum":"ba6f14f1e4ed00ee7c9a10004279eb251423fe51","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.28.2.tgz","fileCount":663,"integrity":"sha512-c2j/URpQdIJVYVJVDTsBYnUTsO0aJPBgGrBHQFzzWKxm9CpbsrzqqApw+cr2VYv/rJ9sUrA3E0Ff2RNEpNx8/Q==","signatures":[{"sig":"MEYCIQDN/bvyxcrIol2Z1UuQD9V7ye62WSTopweTegOdjMvhWwIhAKbyagjouMUepLjyosMzpen59zBCQv5xHqYD/bLImxwO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.28.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12397935},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"c62f2b909b5a6801f28e8cea2d38fee1fdf8eecc","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && npm run build:studio-project-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","benchmark:glassbox":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","build:studio-client":"node scripts/build-studio-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","benchmark:glassbox:quick":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change --no-video --no-publish","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","build:studio-project-schema":"tsx scripts/generate-studio-project-schema.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","typecheck:glassbox-benchmark":"tsc --noEmit -p benchmarks/glassbox/tsconfig.json","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.28.2_1788768538315_0.5139549373115717","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"domotion-svg","version":"0.29.0","author":{"name":"Brian Westphal"},"license":"MIT","_id":"domotion-svg@0.29.0","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"homepage":"https://github.com/brianwestphal/domotion#readme","bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js","domotion-studio":"dist/cli/studio.js"},"dist":{"shasum":"a5834f8203115a83072bce36e7500df087eb94be","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.29.0.tgz","fileCount":681,"integrity":"sha512-tgwSPd2AHmtMcWlglngbO6l0fJzFBrFmVbTlF1hMXDvmNA61k7yZp9dQYNuazc/EZjHiXwhjQer14PbQTiyHiw==","signatures":[{"sig":"MEUCIDSGaj6v1bn/SvB1n2x8lXCDZV3UJDuboP2wXUhl/WzYAiEA9kynpf2bZn926KZ+sziu1UM6OkXnI0mlaHPvtTB915Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE5QF7Joie1pQcQZKSrY+HY2bxu5p6m9jAVrmX51seYEAiEAj+IEfPF8t2IIoAffMUjF8TP+55U6M2uKuND0MfGHOjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12649668},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d886b33ee3bfd2b108a7c687c86fb8040b2b565e","scripts":{"lint":"eslint . --max-warnings 0","test":"npm run build:capture-script && vitest run","build":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && npm run build:studio-project-schema && npm run build:paged-capture-schema && npm run build:paged-capture-helper-schema && tsc -p tsconfig.build.json","capture":"npm run build:capture-script && tsx src/cli/index.ts","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && tsc --noEmit","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","benchmark:glassbox":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","build:studio-client":"node scripts/build-studio-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","paged-page-record:smoke":"node tools/paged-page-record-smoke.mjs","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","benchmark:glassbox:quick":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change --no-video --no-publish","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","paged-page-record:compile":"cd .chromium-build/worktrees/dm2573/src && PATH=../../../depot_tools:$PATH ninja -C out/DM2573 obj/third_party/blink/renderer/core/core/domotion_paged_table_evidence.o obj/third_party/blink/renderer/core/core/web_local_frame_impl.o obj/components/printing/browser/print_to_pdf/print_to_pdf/pdf_print_job.o obj/components/printing/renderer/renderer/print_render_frame_helper.o obj/headless/headless_browser/page_handler.o","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","build:paged-capture-schema":"tsx scripts/generate-paged-capture-bundle-schema.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","paged-capture:release:gate":"node --import tsx tools/paged-capture-release-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","build:studio-project-schema":"tsx scripts/generate-studio-project-schema.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","paged-capture:helper:package":"node --import tsx tools/package-paged-capture-helper.ts","typecheck:glassbox-benchmark":"tsc --noEmit -p benchmarks/glassbox/tsconfig.json","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paged-capture:release:collect":"node --import tsx tools/paged-capture-release-collector.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","paged-page-record:verify-patch":"node tools/verify-paged-page-record-patch.mjs","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","build:paged-capture-helper-schema":"tsx scripts/generate-paged-capture-helper-bundle-schema.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","borders:paged-table-renderer:build":"node tools/build-paged-table-pinned-chromium-helper.mjs","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","borders:paged-table-renderer:collect":"node --import tsx tools/paged-table-renderer-evidence-collector.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","borders:paged-table-renderer:validate":"vitest run tests/paged-table-renderer-evidence-schema.test.ts tests/paged-collapsed-table-ownership-audit.test.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","borders:paged-collapsed-ownership-audit":"node --import tsx tools/paged-collapsed-table-ownership-audit.ts","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.0.2","sharp":"^0.35.3","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^4.1.10","esbuild":"^0.28.1","gitgist":"^1.2.0","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-kerfjs":"^4.1.0","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/domotion-svg_0.29.0_1789615865561_0.2934292231799862","host":"s3://npm-registry-packages-npm-production"}},"0.30.1":{"_id":"domotion-svg@0.30.1","bin":{"domotion":"dist/cli/index.js","svg-review":"dist/cli/review.js","svg-scrubber":"dist/cli/scrubber.js","svg-to-image":"dist/cli/svg-to-image.js","svg-to-video":"dist/cli/svg-to-video.js","domotion-studio":"dist/cli/studio.js"},"bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"dist":{"shasum":"117a6c7d6855efc943bf105ab3f44ed04f726e31","tarball":"https://registry.npmjs.org/domotion-svg/-/domotion-svg-0.30.1.tgz","fileCount":683,"integrity":"sha512-AUi+QXm5u92lVodrYEWhTk39G7Z84a7SL9QSdwIjIl1D+ltVd1VU44b61Y1GWytPIzGFLeDmWLl9L9yGjHkbZw==","signatures":[{"sig":"MEQCIDcXgbqVzHNimsRqmmSwgpSubrgvKD3OTrROGZ0M16QRAiBDpNc3rxwGre2nzW73Feaz9QDkZhm9Ksa4X5lZwSt/4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBcQZVVpuJKp4ZDLgHxW50YZu19+7b7TN1rKexdLZCUvAiEAmr7GLyUP5/roEStbwTb8TZCOznLnPctwlDaU3uACqrc="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/domotion-svg@0.30.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12549200},"main":"dist/index.js","name":"domotion-svg","type":"module","types":"dist/index.d.ts","author":{"name":"Brian Westphal"},"gitHead":"cc08f9a7a210dab43f9ab1461a64d77ea8db7365","license":"MIT","scripts":{"lint":"npm run format:check && eslint . --max-warnings 0 && npm run check:american-english","test":"npm run build:capture-script && vitest run","build":"npm run clean:dist && npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && npm run build:animate-schema && npm run build:composite-schema && npm run build:storyboard-schema && npm run build:studio-project-schema && tsc -p tsconfig.build.json && npm run check:package-dist","format":"prettier --write .","capture":"npm run build:capture-script && tsx src/cli/index.ts","prepack":"npm run build","release":"bash scripts/release.sh","site:dev":"cd site && npm install && npm run dev","test:e2e":"npm run build:capture-script && node scripts/run-e2e-tests.mjs","typecheck":"npm run build:capture-script && npm run build:review-client && npm run build:scrubber-client && npm run build:studio-client && tsc --noEmit","clean:dist":"node scripts/clean-dist.mjs","commit-msg":"gitgist --staged --commit-message","demos:test":"npm run build:capture-script && tsx tests/features.ts","site:build":"cd site && npm install && npm run build","test:watch":"npm run build:capture-script && vitest","demos:review":"tsx tests/review-server.tsx","format:check":"prettier --check .","release:beta":"bash scripts/release.sh --beta","site:preview":"cd site && npm install && npm run preview","fonts:shaping":"tsx tools/shaping-conformance.ts","test:coverage":"npm run build:capture-script && vitest run --coverage","check:features":"tsx tools/check-feature-coverage.ts","demos:examples":"npm run build:capture-script && tsx examples/terminal-demo.ts && tsx examples/terminal-onboarding.ts && tsx examples/progress-install.ts && tsx examples/hero-product-demo.ts && tsx examples/showcase-rendering.ts && tsx examples/showcase-transitions.ts && tsx examples/transition-tour.ts && tsx examples/transition-mixed.ts && tsx examples/svg-to-video-demo.ts && tsx examples/templates-demo.ts && tsx examples/brand-capture-demo.ts && tsx examples/kinetic-over-capture.ts && tsx examples/format-capture-demo.ts && tsx examples/terminal-window-scroll.ts && tsx examples/storyboard-demo.ts","demos:test:all":"npm run build:capture-script && (tsx tests/features.ts ; tsx tests/snapshot-isolation.tsx ; tsx tests/showcase.tsx ; tsx tests/animate-examples.tsx ; tsx tests/html-test-suite.tsx ; tsx tests/real-world.tsx)","demos:test:html":"npm run build:capture-script && tsx tests/html-test-suite.tsx","fonts:inventory":"node tools/font-inventory.mjs","fonts:shaper-ab":"tsx tools/shape-agreement.ts","docs:index:check":"node scripts/documentation-index.mjs","fonts:conformance":"tsx tools/font-conformance.ts","test:coverage:all":"npm run build:capture-script && node tools/coverage-all.mjs","test:linux-docker":"bash scripts/test-linux-docker.sh","benchmark:glassbox":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change","check:package-dist":"node scripts/check-package-dist.mjs","decorations:oracle":"tsx tools/decoration-oracle.ts","demos:test:animate":"npm run build:capture-script && tsx tests/animate-examples.tsx","demos:test:ci-fast":"node scripts/ci-run-fast-visuals.mjs","demos:test:unicode":"npm run build:capture-script && HTML_TEST_DIR=${HTML_TEST_DIR:-../html-test/unicode} HTML_TEST_OUTPUT_DIR=${HTML_TEST_OUTPUT_DIR:-tests/output/html-test-unicode} tsx tests/html-test-suite.tsx","fonts:family-match":"tsx tools/family-match-conformance.ts","fonts:shaping:runs":"tsx tools/shaping-conformance.ts --extract-runs","paint:order-oracle":"tsx tools/paint-order-oracle.ts","test:coverage:full":"npm run build:capture-script && node tools/coverage-all.mjs --full","build:review-client":"node scripts/build-review-client.mjs","build:studio-client":"node scripts/build-studio-client.mjs","demos:test:showcase":"npm run build:capture-script && tsx tests/showcase.tsx","docs:index:generate":"node scripts/documentation-index.mjs --write","fonts:layout:oracle":"tsx tools/layout-stage-oracle.ts","fonts:mathml-italic":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mathml-italic-token.e2e.test.ts","fonts:shaped-origin":"tsx tools/shaped-origin-oracle.ts","fonts:shaping:exact":"tsx tools/exact-shaping-oracle.ts","gate:parity-release":"tsx tools/check-parity-release.ts","sources:materialize":"node scripts/materialize-source-authorities.mjs","borders:phase-oracle":"tsx tools/border-phase-oracle.ts","borders:phase-ratify":"tsx tools/border-phase-ratifier.ts","build:animate-schema":"tsx scripts/generate-animate-schema.ts","build:capture-script":"node scripts/build-capture-script.mjs","check:parity-program":"node tools/check-parity-program.mjs","fonts:renderer-route":"tsx tools/renderer-font-route-oracle.ts","stage:evidence:build":"tsx tools/build-stage-evidence.ts","build:scrubber-client":"node scripts/build-scrubber-client.mjs","demos:test:real-world":"npm run build:capture-script && tsx tests/real-world.tsx","fonts:icu-conformance":"tsx tools/icu-conformance.ts","fonts:shaping:unicode":"tsx tools/shaping-unicode-corpus.ts","fonts:shaping:unified":"tsx tools/unified-shaping-oracle.ts","paint:geometry-oracle":"tsx tools/paint-geometry-oracle.ts","build:composite-schema":"tsx scripts/generate-composite-schema.ts","check:american-english":"node scripts/check-american-english.mjs","parity:composed-corpus":"node scripts/run-composed-parity.mjs","raster:boundary-oracle":"tsx tools/raster-boundary-oracle.ts","scrollbars:parity-gate":"tsx tools/check-native-scrollbar-release.ts","stage:evidence:collect":"tsx tools/collect-stage-evidence.ts","broken-image:hybrid-e2e":"vitest run --config vitest.e2e.config.ts src/capture/broken-image-fallback.e2e.test.ts tests/broken-image-fallback-render.e2e.test.ts","build:storyboard-schema":"tsx scripts/generate-storyboard-schema.ts","check:semantic-coverage":"tsx tools/check-semantic-coverage.ts","check:workflow-contexts":"node tools/check-github-workflows.mjs","mask:origin-clip-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/mask-origin-clip.e2e.test.ts tests/mask-url-repeat-geometry.e2e.test.ts","replaced:ownership-gate":"node --import tsx tools/replaced-geometry-oracle.ts --dpr 1,2","benchmark:glassbox:quick":"npm run build:capture-script && tsx benchmarks/glassbox/run.ts --simulate-ui-change --no-video --no-publish","broken-image:parity-gate":"tsx tools/broken-image-fallback-oracle.ts","fonts:conformance:stacks":"tsx tools/font-conformance.ts --extract-stacks","fonts:family-match:linux":"tsx tools/family-match-conformance-linux.ts","fonts:family-match:win32":"tsx tools/family-match-conformance-win32.ts","fonts:mixed-bidi-logical":"node --import tsx tools/mixed-bidi-logical-oracle.ts","fonts:palette-paint-gate":"node --import tsx tools/font-palette-paint-gate.ts","fonts:sfns-mask-baseline":"npm run build:capture-script && tsx tools/sfns-mask-baseline-oracle.ts","paint:blend-filter-stage":"node --import tsx tools/blend-filter-pixel-stage-oracle.ts","replaced:geometry-oracle":"node --import tsx tools/replaced-geometry-oracle.ts","check:activation-coverage":"tsx tools/check-activation-coverage.ts","fonts:cluster-conformance":"tsx tools/cluster-conformance.ts","fonts:conformance:iterate":"node scripts/font-conformance-iterate.mjs","fonts:generic-preferences":"node --import tsx tools/generic-family-preference-oracle.ts","fonts:linux-arm64-release":"node --import tsx tools/linux-arm64-release-evidence.ts","fonts:linux-terminal-mask":"tsx tools/linux-terminal-mask-oracle.ts","transform:geometry-oracle":"tsx tools/transform-geometry-oracle.ts","fonts:paths-raster:collect":"tsx tools/paths-native-raster-collector.ts","fonts:paths-raster:produce":"tsx tools/paths-native-raster-producer.ts","fonts:synthetic-bold-paint":"node --import tsx tools/synthetic-bold-paint-oracle.ts","forms:native-fallback-gate":"node --import tsx tools/native-control-fallback-gate.ts","scrollbars:ownership-audit":"tsx tools/native-scrollbar-ownership-audit.ts","transform:text-parity-gate":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:check":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs --check","background:clip-text-oracle":"node --import tsx tools/background-clip-text-oracle.ts","build:studio-project-schema":"tsx scripts/generate-studio-project-schema.ts","decorations:vertical-oracle":"vitest run tests/vertical-decoration-oracle.test.ts tests/vertical-decoration-browser-oracle.test.ts","fonts:macos-terminal-raster":"tsx tools/macos-terminal-raster-oracle.ts","fonts:sfns-pinned-ots:build":"node tools/build-sfns-pinned-ots-sanitizer.mjs","fonts:system-ui-preferences":"node --import tsx tools/system-ui-preference-route-oracle.ts","media:frame-ownership-audit":"node --import tsx tools/live-replaced-media-ownership-audit.ts","paint:backdrop-source-audit":"node --import tsx tools/backdrop-source-surface-audit.ts --strict","paint:summary-marker-oracle":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/summary-disclosure-marker.e2e.test.ts","stage:evidence:compare-roll":"tsx tools/compare-roll-evidence.ts","stage:evidence:source-drift":"tsx tools/source-drift-evidence.ts","fonts:generic-profile-target":"node --import tsx tools/generic-profile-target-oracle.ts","fonts:ideograph-cache:oracle":"tsx tools/ideograph-fallback-cache-oracle.ts","fonts:paths-raster:aggregate":"tsx tools/paths-native-raster-aggregate.ts","fonts:sfns-pinned-skia:build":"node tools/build-sfns-pinned-skia-collector.mjs","typecheck:glassbox-benchmark":"tsc --noEmit -p benchmarks/glassbox/tsconfig.json","animation:raf-clock-ownership":"vitest run --config vitest.e2e.config.ts tests/raf-clock.e2e.test.ts tests/raf-clock-workflow.test.ts","background:url-geometry-audit":"tsx tools/url-background-geometry-audit.ts","demos:test:snapshot-isolation":"npm run build:capture-script && tsx tests/snapshot-isolation.tsx","fonts:palette-ownership-audit":"node --import tsx tools/font-palette-ownership-audit.ts","fonts:paths-raster:adjudicate":"tsx tools/paths-native-raster-gate.ts","fonts:sfns-outline:adjudicate":"node --import tsx tools/sfns-outline-parity-gate.ts","forms:native-fallback-browser":"npm run build:capture-script && vitest run --config vitest.e2e.config.ts tests/native-control-fallback-activation.e2e.test.ts tests/effective-appearance.e2e.test.ts tests/native-control-decoration.e2e.test.ts tests/native-control-source-frame.e2e.test.ts tests/checkable-pseudo-indicators.e2e.test.ts tests/summary-disclosure-marker.e2e.test.ts","paint:geometry-browser-oracle":"tsx tools/paint-geometry-browser-oracle.ts","paint:mixed-color-space-stage":"node --import tsx tools/mixed-reference-color-space-oracle.ts","paint:svg-effect-combinations":"node --import tsx tools/svg-effect-combination-oracle.ts","pseudo:backdrop-source-oracle":"node --import tsx tools/pseudo-backdrop-source-oracle.ts","pseudo:fragment-render-oracle":"node --import tsx tools/pseudo-fragment-render-oracle.ts","transform:inline-svg-3d-audit":"tsx tools/inline-svg-3d-audit.ts","transform:text-fragment-spans":"npm run build:capture-script && node --import tsx tools/text-fragment-span-oracle.ts","transform:text-geometry-audit":"tsx tools/text-transform-geometry-audit.ts","unicode:cjk-property:generate":"node tools/generate-cjk-ideograph-or-symbol-ranges.mjs","fonts:generic-family-semantics":"node --import tsx tools/generic-family-semantics-audit.ts","fonts:sfns-pinned-skia:collect":"node --import tsx tools/sfns-pinned-skia-mask-collector.ts","test:linux-system-ui-alternate":"FONTCONFIG_FILE=/work/tests/fontconfig/alternate-system-ui.conf CMD='apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/assert-linux-system-ui-profile.ts && npm run fonts:conformance -- --stack-filter system-ui --range 0020-007f,0600-06ff,4e00-4e7f --max-rows 2000 --reset-every 1 --out tests/output/font-conformance-system-ui-alternate' bash scripts/test-linux-docker.sh","borders:fragmented-release-gate":"node --import tsx tools/fragmented-collapsed-table-release-gate.ts","fonts:sfns-pinned-skia:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts","pseudo:fragment-geometry-oracle":"node --import tsx tools/pseudo-fragment-geometry-oracle.ts","test:linux-fallback-diagnostics":"CMD='apt-get update && apt-get install -y --no-install-recommends build-essential cmake pkg-config libfreetype-dev libfontconfig-dev && bash tools/linux-glyph-extractor/build.sh && npx tsx tools/probe-linux-fallback-diagnostics.ts' bash scripts/test-linux-docker.sh","culling:animated-geometry-oracle":"tsx tools/animated-culling-geometry-oracle.ts","fonts:sfns-pinned-chromium:build":"node tools/build-sfns-pinned-chromium-validator.mjs","mathml:operator-dictionary:check":"node tools/generate-mathml-operator-dictionary.mjs --check","media:animated-image-frame-audit":"node --import tsx tools/animated-image-frame-selection-audit-cli.ts","transform:animated-3d-frame-gate":"tsx tools/animated-projective-frame-oracle.ts","transform:text-baseline-protocol":"node --import tsx tools/text-affine-baseline-protocol-oracle.ts","transform:text-fragment-protocol":"npm run build:capture-script && vitest run src/capture/text-fragment-geometry.test.ts && vitest run --config vitest.e2e.config.ts tests/text-paint-geometry.e2e.test.ts","fonts:sfns-terminal-mask:validate":"vitest run tests/sfns-terminal-mask-manifest.test.ts tests/sfns-pinned-skia-mask-schema.test.ts tests/sfns-pinned-chromium-validation-schema.test.ts tests/sfns-terminal-mask-adjudicator.test.ts","fonts:sfns-pinned-chromium:collect":"node --import tsx tools/sfns-pinned-chromium-validation-collector.ts","transform:projective-owner-release":"node --import tsx tools/check-projective-owner-release.ts","unicode:vertical-orientation:check":"node tools/generate-vertical-orientation-ranges.mjs --check","fonts:sfns-pinned-chromium:validate":"vitest run tests/sfns-pinned-chromium-validation-schema.test.ts","fonts:sfns-terminal-mask:adjudicate":"node --import tsx tools/sfns-terminal-mask-adjudicator.ts","mathml:operator-dictionary:generate":"node tools/generate-mathml-operator-dictionary.mjs","transform:projective-owner-producer":"node --import tsx tools/projective-owner-release-producer.ts","unicode:vertical-orientation:oracle":"node --import tsx tools/vertical-orientation-oracle.ts","fonts:browser-harfbuzz-substitutions":"node --import tsx tools/browser-harfbuzz-substitution-oracle.ts","fonts:paths-raster:linux-mathml:gate":"tsx tools/linux-mathml-greek-raster-gate.ts","borders:collapsed-fragmentation-audit":"node --import tsx tools/collapsed-border-fragmentation-oracle.ts","unicode:vertical-orientation:generate":"node tools/generate-vertical-orientation-ranges.mjs","fonts:paths-raster:linux-mathml:collect":"tsx tools/linux-mathml-greek-raster-collector.ts","media:animated-image-production-release":"node --import tsx tools/animated-image-production-release-gate-cli.ts","transform:nested-projective-owner-audit":"node --import tsx tools/nested-projective-ownership-audit.ts","fonts:emoji-presentation-ownership-audit":"node --import tsx tools/emoji-presentation-ownership-audit.ts"},"version":"0.30.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49583541-007a-42a6-99ad-30ff56c3e595"}},"homepage":"https://github.com/brianwestphal/domotion#readme","repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"_npmVersion":"11.6.2","description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","directories":{},"maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.4.3","svgo":"^4.1.0","sharp":"^0.35.4","kerfjs":"^4.4.0","bidi-js":"^1.0.3","fontkit":"^2.0.4","svg2ttf":"^6.1.0","wawoff2":"^2.0.1","@xterm/headless":"^6.0.0","@playwright/test":"^1.59.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.23.1","yaml":"^2.9.0","eslint":"^10.8.0","vitest":"^5.0.1","esbuild":"^0.28.1","gitgist":"^1.2.0","prettier":"^3.9.8","happy-dom":"^20.11.1","typescript":"^5.8.3","@types/node":"^25.6.0","opentype.js":"^2.0.0","v8-to-istanbul":"^9.3.0","istanbul-reports":"^3.2.0","@vitest/coverage-v8":"^5.0.1","istanbul-lib-report":"^3.0.1","eslint-plugin-kerfjs":"^4.1.0","istanbul-lib-coverage":"^3.2.2","@typescript-eslint/parser":"^8.59.4"},"optionalDependencies":{"node-pty":"^1.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/domotion-svg_0.30.1_1789988422401_0.0932856404347111"}}},"time":{"created":"2026-05-11T02:21:08.708Z","modified":"2026-09-21T11:00:23.049Z","0.1.1":"2026-05-11T02:21:08.892Z","0.2.2":"2026-05-18T02:00:48.148Z","0.3.1":"2026-05-24T22:59:12.485Z","0.3.2":"2026-05-25T00:13:04.542Z","0.3.3":"2026-05-25T00:46:54.390Z","0.4.1":"2026-05-25T02:48:04.614Z","0.4.2":"2026-05-25T03:54:54.827Z","0.5.0":"2026-05-25T07:54:47.758Z","0.6.0":"2026-05-29T00:30:36.672Z","0.7.0":"2026-05-30T00:32:24.531Z","0.8.0":"2026-05-30T04:39:08.574Z","0.10.1":"2026-06-05T02:04:31.908Z","0.11.0":"2026-06-06T03:47:08.787Z","0.12.0":"2026-06-06T22:41:31.250Z","0.13.0":"2026-06-16T23:53:07.980Z","0.13.1":"2026-06-17T02:35:17.446Z","0.13.2":"2026-06-17T03:10:26.491Z","0.13.3":"2026-06-17T03:32:52.665Z","0.14.0":"2026-06-22T21:59:32.337Z","0.15.0":"2026-06-24T05:57:06.530Z","0.16.0":"2026-06-26T10:02:38.903Z","0.17.0":"2026-06-30T00:11:04.221Z","0.18.0":"2026-07-01T00:34:03.937Z","0.19.0":"2026-07-01T08:24:04.997Z","0.19.1":"2026-07-01T08:46:02.041Z","0.20.0":"2026-07-02T02:13:14.412Z","0.21.1":"2026-07-04T00:27:00.125Z","0.22.2":"2026-08-13T10:32:45.536Z","0.23.0":"2026-08-14T07:36:03.291Z","0.24.0":"2026-08-16T00:42:43.493Z","0.27.0":"2026-09-04T03:12:07.489Z","0.27.1":"2026-09-04T22:12:53.743Z","0.27.2":"2026-09-07T00:22:33.533Z","0.28.0":"2026-09-07T04:28:21.567Z","0.28.1":"2026-09-07T06:02:38.380Z","0.28.2":"2026-09-07T08:08:58.540Z","0.29.0":"2026-09-17T03:31:05.796Z","0.30.1":"2026-09-21T11:00:22.636Z"},"bugs":{"url":"https://github.com/brianwestphal/domotion/issues"},"author":{"name":"Brian Westphal"},"license":"MIT","homepage":"https://github.com/brianwestphal/domotion#readme","repository":{"url":"git+https://github.com/brianwestphal/domotion.git","type":"git"},"description":"DOM-to-animated-SVG renderer. Captures HTML/CSS via Playwright Chromium and converts it to self-contained SVG with CSS animations — pixel-faithful demos that scale crisply and load lazily.","maintainers":[{"name":"bwestphal","email":"brian.westphal@bleugris.com"},{"name":"dgobaud","email":"dgobaud@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"examples/output/domotion-word-demo.svg\" alt=\"Domotion — an animated wordmark cycling through twenty neon-retro typographic variants of the word domotion\" width=\"600\">\n</p>\n\n<p align=\"center\">\n  <strong><a href=\"https://brianwestphal.github.io/domotion/\">🌐 Website &amp; docs</a></strong>\n  &nbsp;·&nbsp;\n  <a href=\"https://brianwestphal.github.io/domotion/showcase/\">Showcase</a>\n  &nbsp;·&nbsp;\n  <a href=\"https://brianwestphal.github.io/domotion/start/quickstart/\">Quick start</a>\n  &nbsp;·&nbsp;\n  <a href=\"https://github.com/brianwestphal/domotion\">GitHub</a>\n</p>\n\n**Domotion turns real HTML/CSS into one self-contained, animated SVG** — an accurate reproduction of the rendered page, with optional animation and simulated interaction built in. It embeds the exact captured glyph data and positioning, so playback never falls back to a viewer's system fonts; the output scales crisply at any size and embeds anywhere with a plain `<img>`, no external assets.\n\nBeyond raw capture it ships **Domotion Studio**, a local visual workspace for authoring and reviewing versioned projects; a **template library** that turns a few flags into a polished animated SVG; **terminal-session capture** (a recording → an animated terminal); **scroll capture** (a long page replayed as one self-contained scrolling SVG); multi-frame **animation** with parameterized and custom transitions, overlays, and simulated interaction; **scene storyboarding** (sequence distinct scenes end-to-end); **brand kits** and **social-format presets** (reel / square / portrait / landscape); **device-chrome** framing; **nested compositing** (animated layers inside animated layers); one-command **SVG → MP4/WebM**; and fidelity **review** tools.\n\n<p align=\"center\">\n  <img src=\"examples/output/hero-product-demo.svg\" alt=\"An analytics dashboard assembling itself inside a browser window — KPI cards rise in, a bar chart grows with its peak highlighted, a search query types itself, and a nav item is clicked — all in one self-contained animated SVG\" width=\"760\">\n</p>\n\n<p align=\"center\"><sub>A real UI captured and brought to life — one self-contained SVG. <a href=\"https://brianwestphal.github.io/domotion/showcase/\">More demos →</a></sub></p>\n\n## Why\n\nAnimated demos for product marketing and documentation usually mean either:\n\n- A bundle of MP4s — heavy, hard to scale, no inline embedding.\n- A live iframe — slow, requires the source app to be online, breaks accessibility.\n- Hand-authored SVG animations — accurate but enormously time-consuming for anything beyond a couple of frames.\n\nDomotion captures real HTML/CSS as it renders in Chromium, then emits a single inline-embeddable SVG that replays the same pixels with CSS keyframe transitions. Author the demo as plain HTML/CSS in your real app, capture frames, and ship the result as a `<img src=\"demo.svg\">` that loads lazily and scales without artifacts.\n\n## Status\n\nActively developed, with a broad shipped surface — capture, multi-frame animation (transitions, overlays, simulated interaction), the template library, terminal capture, nested compositing, and the video/image exports — exercised by an extensive visual-regression suite. The CLIs and the animate-config schema are stable in practice.\n\n## Platform support\n\nDomotion runs on **macOS, Linux, and Windows**, and all three are calibrated. It renders text by extracting the glyphs Chromium selected on the platform you run it on (CoreText on macOS, fontconfig on Linux, DirectWrite on Windows), then embeds those glyphs instead of asking the viewer's machine to perform font fallback. macOS is held to pixel-exact parity; Linux and Windows match Chromium's glyph selection and metrics within a documented native-hinting margin. Linux fidelity is a required CI check; Windows has first-class native validation and release checks, with its slower broad suites dispatched on demand.\n\nIssues, fixes, and platform feedback are welcome on [GitHub](https://github.com/brianwestphal/domotion).\n\n## Quick start\n\n```bash\nnpm install domotion-svg\nnpx domotion capture https://example.com -o example.svg\n```\n\nOpen `example.svg` in a browser. You should see a self-contained, scalable\ncapture of the page with no external fonts, images, or scripts.\n\nDomotion installs Playwright's Chromium binary on first use. CI jobs can run\n`npx playwright install chromium` ahead of time to keep capture runtime\npredictable. For a zero-install trial, run\n`npx -p domotion-svg domotion capture https://example.com -o example.svg`.\n\n## Choose your task\n\n- **Capture one page:** use `domotion capture`; see the\n  [capture guide](https://brianwestphal.github.io/domotion/usage/capture/).\n- **Animate a product flow:** use `domotion animate`; follow the\n  [animation guide](https://brianwestphal.github.io/domotion/usage/animate/).\n- **Generate a polished asset from flags:** use `domotion template`; browse the\n  [template guide](https://brianwestphal.github.io/domotion/usage/templates/).\n- **Author and review a versioned project visually:** use `domotion-studio`; see\n  the [Studio guide](https://brianwestphal.github.io/domotion/usage/studio/).\n\nThe [Quick start](https://brianwestphal.github.io/domotion/start/quickstart/)\nwalks through the first capture and animation end to end.\n\n## More capture inputs\n\nAfter the first capture works, the same CLI accepts local files, stdin, element\nselection, custom viewports, optimization, and scrolling pages:\n\n```bash\n# Capture one element from a local file at a specific viewport.\ndomotion capture ./demo.html \\\n  --width 1200 --height 600 \\\n  --selector \".hero\" \\\n  --optimize \\\n  -o hero.svg\n\n# Capture HTML from stdin.\ncat demo.html | domotion capture - -o demo.svg\n\n# Capture a long page as one animated scrolling SVG (scrolls to the bottom over 8s).\ndomotion capture https://example.com --scroll \"down:bottom/8s\" -o scroll.svg\n```\n\nNavigation waits for the page's `load` event, then Domotion applies its normal\nfont/image/paint readiness checks. Pages with a finite request chain can opt\ninto Playwright's stricter network-idle heuristic with `--network-idle`; it is\noff by default because analytics, long polling, and streaming requests may\nnever become idle.\n\nSame-origin `<iframe>` content is recursed into the capture as native SVG rather than flattened to a screenshot; opt into cross-origin frames you trust with `--cross-origin-frames \"<hosts>\"`.\n\nText defaults to self-contained, pixel-faithful embedded fonts. For inline SVG,\n`--real-text` adds a paintless authored-text layer for search, selection, copy,\nand assistive technology. `--text-mode system-font` instead paints authored\n`<text>` using the viewer's installed fonts; it can be smaller, but it is not\npixel-faithful and should be used only when those fonts are guaranteed.\n\nFor a multi-frame animated SVG, write a JSON config and run:\n\n```bash\ndomotion animate ./demo.json\n```\n\nThe config describes frames, timing, transitions, waits, overlays, and simulated\ninteraction. See `domotion --help` for the full grammar and the\n[animation guide](https://brianwestphal.github.io/domotion/usage/animate/) for\nexamples ranging from simple transitions to continuous interactive sessions.\n\nTransitions are not limited to fixed presets. Parameterized `push`, `reveal`,\n`zoom`, and `shine` forms control direction/angle, distance, origin, radius, and\nhighlight styling. A strict `custom` recipe can safely combine incoming/outgoing\nopacity, translate, scale, reveal clip, and shine channels—plus explicit reduced-\nmotion and loop behavior—without accepting raw CSS or script.\n\n### Templates — animated SVGs from a few flags\n\nThe fastest way to a polished result without writing any HTML. Each built-in is a parameterized generator; pass a few flags and get a self-contained animated SVG. `domotion template list` shows them, `domotion template <name> --help` shows a template's parameters.\n\n```bash\ndomotion template lower-third --title \"Ada Lovelace\" --subtitle \"First Programmer\" -o banner.svg\ndomotion template chart --type donut --data \"42,28,18,12\" --labels \"Search,Direct,Social,Email\" -o chart.svg\ndomotion template kinetic-text --text \"Ship it\" --variant pop --by char -o title.svg\n```\n\nBuilt-ins (14): **lower-third** (broadcast banner) · **kinetic-text** (animated typography) · **chart** (column / bar / line / pie / donut) · **chat** (message thread) · **subscribe** (follow pop-up) · **background-loop** (seamless looping background) · **device-mockup** (wrap a page in a phone / browser / window bezel) · and a **creative-template pack** of full-bleed text/number cards: **title-card**, **quote**, **caption**, **cta**, **counter**, **stat**, **compare**. Every template adapts to a `--format` social preset (reel / square / portrait / landscape) and a `--brand` kit (palette / type / logo). Third-party templates are npm packages named `domotion-template-<name>`.\n\n### Domotion Studio — visual project authoring\n\nDomotion Studio is a local, browser-based workspace for building and reviewing\nversioned Domotion projects. It provides story and scene authoring, a detailed\nmultitrack timeline, embedded playback and review annotations, real-interaction\nimport, and generation/review hooks while keeping project files as portable,\nvalidated JSON inside an explicitly scoped workspace.\n\n```bash\n# Open a workspace, or pass an existing Studio project JSON file.\ndomotion-studio --workspace ./demo-project\ndomotion-studio ./demo-project/product-tour.json\n```\n\nStudio opens locally by default. In automation, pass `--no-open` and use the\nprinted loopback URL. Run `domotion-studio --help` or read the\n[Studio guide](https://brianwestphal.github.io/domotion/usage/studio/).\n\n### Terminal sessions\n\nTurn a recorded terminal session into a self-contained animated SVG — real text, real color, native SVG (no raster frames). Record with [asciinema](https://asciinema.org), then convert:\n\n```bash\nasciinema rec demo.cast -c \"npm test\"\ndomotion term --cast demo.cast -o demo.svg\n```\n\n### Compositing — animated layers inside animated layers\n\n`domotion composite` stacks layers — a `cast`, a `template`, or a pre-rendered `svg`, any of which may be animated — into one SVG, each placed and on its own timeline with its animation preserved. This is how you nest one animated thing inside another, e.g. a terminal window resizing on a desktop. See `domotion composite --help` and `examples/composite/`.\n\n### Export to video\n\nThe package also ships a standalone `svg-to-video` CLI that renders an animated SVG (a `domotion animate` output, or any CSS-/SMIL-animated SVG) to a video file. It steps the animation timeline frame by frame in Chromium for frame-accurate timing, then pipes the frames to **ffmpeg** (a required external dependency — install via `brew` / `apt` / `winget`).\n\n```bash\n# h264/mp4 at 30fps, contained to 1280px wide.\nsvg-to-video demo.svg -o demo.mp4 --width 1280\n\n# 60fps VP9/webm with looping background music.\nsvg-to-video demo.svg -o demo.webm --format vp9 --fps 60 --music bed.mp3\n```\n\nSupports target size (`--width`/`--height`, aspect-preserving), `--fps`, `--format` / `--container`, supersampling (`--scale`), background music / foreground audio / captions, and a disk-space pre-flight. See `svg-to-video --help`.\n\n### Export to a still image\n\nTo turn a single SVG into an image — to look at a render, embed a thumbnail, or hand off a flat asset — the package ships an `svg-to-image` CLI. The output format follows the `-o` extension: PNG / WebP / AVIF / TIFF (keep alpha for transparent SVGs), JPEG (`--quality`), or a single-page vector PDF. (WebP/AVIF/TIFF are transcoded with the bundled `sharp` — no extra install.)\n\n```bash\nsvg-to-image card.svg -o card.png                 # PNG at the SVG's intrinsic size\nsvg-to-image card.svg -o card@2x.png --scale 2    # crisp retina (2×) raster\nsvg-to-image demo.svg -o frame.png --at 4000      # one frame of an animated SVG, at 4s\nsvg-to-image poster.svg -o poster.pdf             # vector PDF\n```\n\n`--at <ms>` samples an animated SVG's timeline, `--width`/`--height` contain preserving aspect, `--scale` supersamples raster output. See `svg-to-image --help`.\n\n### Reviewing a regression\n\nIf a capture comes out looking different from how Chromium painted the source page, the package ships an `svg-review` CLI to help you file a focused bug report. Capture once with `--debug` to get a reproduction bundle (HAR + the Chromium screenshot of the source + the SVG we produced), then open the bundle in the local review UI:\n\n```sh\ndomotion capture https://example.com --debug -o example.svg\nsvg-review --expected example.debug/expected.png --actual example.debug/actual.svg\n```\n\nThe browser opens a single review card showing the expected / actual / diff PNGs. Arrow keys cycle through the three at full size; drag on any image to mark a problem region and caption it. The side panel builds a GitHub-issue-ready Markdown block as you go — copy it, then file the issue at <https://github.com/brianwestphal/domotion/issues/new> and attach `expected.png` + `actual.svg` so a maintainer can reproduce.\n\nFor automation, pass `--no-open` (or set `DOMOTION_NO_OPEN=1`) and drive the\nprinted local URL headlessly; Review and Scrubber otherwise open the system\nbrowser for interactive use.\n\nAnimation runs have the same evidence path. `domotion animate demo.json --debug`\nwrites the final `actual.svg`, one shared HAR, and an `expected.png` plus\n`captured-tree.json` for each composed frame. Use `--debug-dir <path>` to choose\nthe bundle location.\n\nFor an _animated_ SVG, the package also ships `svg-scrubber` — a local video-style bench to play / pause / scrub / mark an in-out range, export the current frame as PNG, export the range as MP4, or trim it to a new self-contained animated SVG. Add `--review` to file a focused issue against a moment in the timeline: it writes an importable `.ticket` (frame time, range, and drawn regions) the same way `svg-review` builds a report for a still.\n\n### Scripting API\n\nWhen you outgrow the CLI — custom interaction loops, programmatic frame composition, custom overlays — the same primitives are available as a library:\n\n```ts\nimport { captureElementTree, elementTreeToSvg, launchChromium } from \"domotion-svg\";\n\nconst browser = await launchChromium();\nconst page = await browser.newPage();\nawait page.setContent(`<div style=\"padding:20px;color:white;background:#0d1117\">Hello</div>`);\n\nconst tree = await captureElementTree(page, \"body\", { x: 0, y: 0, width: 800, height: 200 });\nconst svg = elementTreeToSvg(tree, 800, 200, {\n  // Optional: searchable/selectable text when this SVG is embedded inline.\n  // This cannot expose text through <img src=\"…\">.\n  realTextLayer: true,\n  // Optional: how text is emitted. Default \"embedded-font\" is self-contained\n  // and pixel-faithful. \"system-font\" instead emits authored <text> painted\n  // by the VIEWER's installed fonts — smaller output, but not pixel-faithful\n  // and only correct where the fonts are present (CLI: --text-mode system-font).\n  // renderTextMode: \"system-font\",\n});\n\nconsole.log(svg);\nawait browser.close();\n```\n\nFor animated demos, capture multiple frames and pass them to `generateAnimatedSvg` (see `examples/`).\n\nLibrary callers can collect a reproduction entirely in memory with\n`captureElementTreeWithDebug()` and `assembleCaptureDebugBundle()`. The caller\nkeeps ownership of the browser, files, and optional HAR lifecycle; see the\n[scripting API](https://brianwestphal.github.io/domotion/developer/api/).\n\n## Scripts\n\n```bash\nnpm run build           # tsc → dist/\nnpm test                # unit tests\nnpm run demos:test      # feature visual-regression suite\nnpm run demos:test:all  # features + showcase + html-test-suite\nnpm run demos:review    # local server to compare expected/actual/diff PNGs\nnpm run demos:examples  # run the bundled example demo scripts\n```\n\n## Documentation\n\n- `FEATURES.md` — per-feature support checklist with links to test fixtures.\n- `docs/` — requirements docs covering rendering fidelity, supported CSS features, and known caveats.\n- [`llms.txt`](llms.txt) — a concise, self-contained guide for **AI agents using Domotion as a tool** (Claude, Cursor, etc.): the CLIs, config schema, template library, API, gotchas, and a required rendered-pixel/video review gate before an SVG is handed back. Point your agent at it.\n- `CLAUDE.md` — guidance for AI assistants working _on this repo's_ source (different audience from `llms.txt`).\n\n## License\n\n[MIT](LICENSE) © Brian Westphal\n","readmeFilename":"README.md"}