{"_id":"@aldinokemal2104/excalidraw-to-svg","_rev":"10-1c99140f497e6d0ecd649106f3282048","name":"@aldinokemal2104/excalidraw-to-svg","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.0","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.0","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"373bb200267e10f82348f85c320bb0037aac39cc","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.0.tgz","fileCount":6,"integrity":"sha512-2aqGg6URmCOCYwsTehnsd5j3Mg+/PlXj1XAQd3bDZ4BmigydfQykYb1F5DLADd0JNfuHF5GB9q/ohEx3R2zW6g==","signatures":[{"sig":"MEQCIG7Jb0a9Uic/LI6OPEVPsjGRlAN75niQ6FAUJaCME/JDAiBl6u9XxOxRjoK1VyJENHH7OMvYxCfybCULxEolndkDKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16062},"main":"src/excalidraw-to-svg.js","gitHead":"aa918531e197eb0567ce75cae0334975b18fdb25","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch"},"_npmUser":{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"},"_npmVersion":"11.6.2","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.13.0","dependencies":{"jsdom":"^24.0.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.0_1771475834367_0.3636580379655783","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.1","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.1","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"9506b982459b516bee02ab56fe5b27f8e45ad1e5","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.1.tgz","fileCount":6,"integrity":"sha512-HUSvZ1e00O3MR3gSKp47t2p+Z1bi+EpBGIgQo3Yo3g9xg24rXJ6tbcwFzes6VsSgwsO/tvyLRrRp92BUn+ysbw==","signatures":[{"sig":"MEYCIQDHNpqbw1ImsTYsM5WEc5jHtKftUmYcqL7C1y6h7qu37wIhAIRFfDh9WMBHQzg+YT8rcrreoy8yykWMBGccJsHgDm3U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16164},"main":"src/excalidraw-to-svg.js","gitHead":"aa918531e197eb0567ce75cae0334975b18fdb25","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch"},"_npmUser":{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"},"_npmVersion":"11.6.2","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.13.0","dependencies":{"jsdom":"^24.0.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.1_1771475974039_0.0216597235107594","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.2","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.2","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"a421f3ff9d5d87bae326c63829000dddff1b5440","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.2.tgz","fileCount":6,"integrity":"sha512-Q1S55EQA77MHkgR8H/8P/Sw1VB5BfBJopAozwCjJtU0FIyRuEJvI/q9I+Okvm2VpSMHfe0jeB1ZaPu5k0qLxOQ==","signatures":[{"sig":"MEUCIBmRA9IO1dn7TbCaMqBMDu8GwzkHTxTMZlZ/uE3Uo2LtAiEAqcFDfxLw1ZNduf0iWLxF5tUGE8kXavTDlKQY+1wFJA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17501},"main":"src/excalidraw-to-svg.js","gitHead":"aa918531e197eb0567ce75cae0334975b18fdb25","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch"},"_npmUser":{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"},"_npmVersion":"11.6.2","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.13.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.2_1771478224717_0.5352833000012123","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.3","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.3","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"4735c579d278d07e21d5c6ac973b9d1b3b27d7c0","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.3.tgz","fileCount":7,"integrity":"sha512-mUhUclmegLQ4aLEvp8VLbsDp1hUf+wsRaiPVf9WBY0+n2DlMmP3i6HubjtQ2wYHcyYGYNLtCJiabKz6XlMgddQ==","signatures":[{"sig":"MEQCIE6HeTiP3RaQqd6tEr52dTEHgRyyK2km3g9U0pdLawqBAiBPrRXPAnU1Mar/u3mi94Ql7MGI+wWNetFNg5KSO4Sq4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22240433},"main":"src/excalidraw-to-svg.js","gitHead":"49d12dfa609f6e3ec332a6ee8176af2e139bf4a0","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"},"_npmVersion":"11.6.2","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.13.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.3_1773211482186_0.3224484554645206","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.4","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.4","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"9bec1350f2f12878280af72086df8b17837d3b70","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.4.tgz","fileCount":7,"integrity":"sha512-TYmh4fzYbaNmzfEVpL+oY3ndqmgqO/5cPdCcc5BNM5ierT+mYq6VCsAW30RKO247Ba5eusIy+CfZ7HvP7IjY9A==","signatures":[{"sig":"MEQCICVhGFKU5H9EQbwo4N7a0ueTofPaZWJF2rN7bIGj8ysiAiA0P53mqOBEBkNrs2GI+UiQhlFYVnLr1+ipvZg/eRx57g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22240433},"main":"src/excalidraw-to-svg.js","gitHead":"49d12dfa609f6e3ec332a6ee8176af2e139bf4a0","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","prepublishOnly":"npm test"},"_npmUser":{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"},"_npmVersion":"11.6.2","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.13.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.4_1773211546401_0.5370678090847534","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.5","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.5","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"ca84f03d9426fa225654f925f4ab896aa83e4fa6","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.5.tgz","fileCount":7,"integrity":"sha512-v4SqCbDMPcGAXAV7ubfsKiVkzS6Bf7vRSVYuQBNP8xhMQLaxWpzDez7LRgrOvhhkjEycjUeg7gqv0MJj/mdrBA==","signatures":[{"sig":"MEUCIQD1+LCGFMBiRBwYh8fmiOWNG8Iekq7+Uz7GS68+aXzb1gIgFt6Uu1h1to7uUOFwXhPKR8mzkMTXNCTh/KvsasL53H4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22240437},"main":"src/excalidraw-to-svg.js","gitHead":"49d12dfa609f6e3ec332a6ee8176af2e139bf4a0","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","npm:publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc","prepublishOnly":"npm test"},"_npmUser":{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"},"_npmVersion":"11.6.2","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.13.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.5_1773211619661_0.9886805706491484","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.6","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.6","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"homepage":"https://github.com/aldinokemal/excalidraw-to-svg#readme","bugs":{"url":"https://github.com/aldinokemal/excalidraw-to-svg/issues"},"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"ed18d1064e25f73c14ba8d1247c4ff946f508966","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.6.tgz","fileCount":10,"integrity":"sha512-PmhA5ABc+xJwK1YS36eOzF33tcmXFyr2DoZD1Lgjv6fhzFaPacXj/tUdSjZsv344VX7BjWSFRjGoS2O/k19uXA==","signatures":[{"sig":"MEYCIQD05tt01+3RAibgXwIy3xfMmgfqCQOerr9yqOFtu6jRIQIhAP5aiJQjE9gAtOgQ7XUC0jRkvbt7K+MRLx5L20Kjnnem","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aldinokemal2104%2fexcalidraw-to-svg@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22244891},"main":"src/excalidraw-to-svg.js","gitHead":"a9298496d7ca460bc36816dcf5b19c349909b5a2","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","npm:publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc","prepublishOnly":"npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8dda3384-b27e-4cbc-b807-b27d35537454"}},"repository":{"url":"git+https://github.com/aldinokemal/excalidraw-to-svg.git","type":"git"},"_npmVersion":"11.9.0","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.6_1774929091624_0.49863892267248566","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.0.7","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.0.7","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"homepage":"https://github.com/aldinokemal/excalidraw-to-svg#readme","bugs":{"url":"https://github.com/aldinokemal/excalidraw-to-svg/issues"},"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"9d6915ba05c897650ddac9b580f8350e31db4fa3","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.0.7.tgz","fileCount":10,"integrity":"sha512-7PIK2PI9dl4NZjhbGnmRwvCYEpSBwSYmYjxJg1kgRyl4zSAkNyRrvmTkSgO7aDbn6t/X9FQqhw9O7XqsUhnOxQ==","signatures":[{"sig":"MEQCIFuBfQGIwMa1vs/PxneWSRiPWbIu6CIM5MvIXvJmc4VAAiBPYfKQgQqpXQiWB2ZXzK2gwd+kLe3qLp4pOwoj23RmlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aldinokemal2104%2fexcalidraw-to-svg@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22247083},"main":"src/excalidraw-to-svg.js","gitHead":"a027b7316af0bb4609538ee17df35eb0babaf6ec","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","npm:publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc","prepublishOnly":"npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8dda3384-b27e-4cbc-b807-b27d35537454"}},"repository":{"url":"git+https://github.com/aldinokemal/excalidraw-to-svg.git","type":"git"},"_npmVersion":"11.9.0","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.0.7_1775030723859_0.27831288705857427","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.1.0","keywords":["excalidraw","svg","utils"],"author":{"url":"https://teamretro.com","name":"GroupMap Dev","email":"aldino@groupmap.com"},"license":"MIT","_id":"@aldinokemal2104/excalidraw-to-svg@1.1.0","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"homepage":"https://github.com/aldinokemal/excalidraw-to-svg#readme","bugs":{"url":"https://github.com/aldinokemal/excalidraw-to-svg/issues"},"bin":{"excalidraw-to-svg":"src/cli.js"},"dist":{"shasum":"450514d3ee851f9480e1ca873b7715b50cfe20b3","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.1.0.tgz","fileCount":11,"integrity":"sha512-JN8i7XH1JF81gK4Qxb2UbB7RFiUAySXpAv/jzeQ5pdiGFJcAC7YJxEX7dicBXEluARkKd1ElPi9UmTTBgbMbAA==","signatures":[{"sig":"MEUCIQDb1ClzSe0VixFuKw/PPbhV8izn6RsA00bOq3mxhcMvHgIgXeSjH5Fod7hoWF/3HAmhFzt9DFmY4NxaQCIgmW+4lJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aldinokemal2104%2fexcalidraw-to-svg@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22255064},"main":"src/excalidraw-to-svg.js","types":"src/excalidraw-to-svg.d.ts","gitHead":"4c26d1882038c559bfc71f4292a31790d61d5cf4","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","npm:publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc","prepublishOnly":"npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8dda3384-b27e-4cbc-b807-b27d35537454"}},"repository":{"url":"git+https://github.com/aldinokemal/excalidraw-to-svg.git","type":"git"},"_npmVersion":"11.9.0","description":"Node Library to transform excalidraw diagrams into svgs","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jsdom":"^24.0.0","subset-font":"^2.4.0","@excalidraw/utils":"0.1.3-test32"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"_npmOperationalInternal":{"tmp":"tmp/excalidraw-to-svg_1.1.0_1775122081191_0.23205918446638885","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aldinokemal2104/excalidraw-to-svg","version":"1.1.1","description":"Node Library to transform excalidraw diagrams into svgs","repository":{"type":"git","url":"git+https://github.com/aldinokemal/excalidraw-to-svg.git"},"homepage":"https://github.com/aldinokemal/excalidraw-to-svg#readme","bugs":{"url":"https://github.com/aldinokemal/excalidraw-to-svg/issues"},"main":"src/excalidraw-to-svg.js","types":"src/excalidraw-to-svg.d.ts","bin":{"excalidraw-to-svg":"src/cli.js"},"scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js","test:watch":"NODE_OPTIONS='--experimental-vm-modules' jest src/*.test.js --watch","test:integration":"node test/globals-clean.js && node test/sample.js && node test/import.js && node test/warm-worker-impact.js","prepublishOnly":"npm test","npm:publish":"NPM_TOKEN=${NPM_TOKEN:?'NPM_TOKEN is required'} && echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc && npm publish --access public && rm -f .npmrc"},"keywords":["excalidraw","svg","utils"],"author":{"name":"GroupMap Dev","email":"aldino@groupmap.com","url":"https://teamretro.com"},"license":"MIT","dependencies":{"@excalidraw/utils":"0.1.3-test32","jsdom":"^24.0.0","subset-font":"^2.4.0"},"devDependencies":{"jest":"^29.5.0","prettier":"^2.8.7"},"gitHead":"c8f25eb9484a7b58fca80868141c635a0c9be9c8","_id":"@aldinokemal2104/excalidraw-to-svg@1.1.1","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-ROygc9u6kMrzrbJXe+I9Gw5Zx0T6nizn3D/l99s6yfDVmo9y5Hpit8nYdmoO3VCAbzz8bNT9eVO6pa+a44IJ/g==","shasum":"34c763c44ef3c440ba1237e0685d8d234d97307e","tarball":"https://registry.npmjs.org/@aldinokemal2104/excalidraw-to-svg/-/excalidraw-to-svg-1.1.1.tgz","fileCount":11,"unpackedSize":22254678,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aldinokemal2104%2fexcalidraw-to-svg@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDE2Lch77LVify19eg4H2UM7gXPhhNTo4Yj6ikab+UMOwIhAI9t/Lw6qxyhX5+VY/TdhUFTliaUs8nUGJrHPPFe92/7"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8dda3384-b27e-4cbc-b807-b27d35537454"}},"directories":{},"maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/excalidraw-to-svg_1.1.1_1775690678540_0.1824412345268589"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-19T04:37:14.284Z","modified":"2026-04-08T23:24:39.282Z","1.0.0":"2026-02-19T04:37:14.551Z","1.0.1":"2026-02-19T04:39:34.176Z","1.0.2":"2026-02-19T05:17:04.866Z","1.0.3":"2026-03-11T06:44:42.716Z","1.0.4":"2026-03-11T06:45:46.940Z","1.0.5":"2026-03-11T06:47:00.777Z","1.0.6":"2026-03-31T03:51:32.102Z","1.0.7":"2026-04-01T08:05:24.871Z","1.1.0":"2026-04-02T09:28:02.545Z","1.1.1":"2026-04-08T23:24:39.037Z"},"bugs":{"url":"https://github.com/aldinokemal/excalidraw-to-svg/issues"},"author":{"name":"GroupMap Dev","email":"aldino@groupmap.com","url":"https://teamretro.com"},"license":"MIT","homepage":"https://github.com/aldinokemal/excalidraw-to-svg#readme","keywords":["excalidraw","svg","utils"],"repository":{"type":"git","url":"git+https://github.com/aldinokemal/excalidraw-to-svg.git"},"description":"Node Library to transform excalidraw diagrams into svgs","maintainers":[{"name":"aldinokemal2104","email":"aldinokemal2104@gmail.com"}],"readme":"# Excalidraw to SVG\n\nNode.js library to convert Excalidraw diagrams into standalone SVGs with embedded fonts.\nUseful if you are storing Excalidraw diagrams in repos and want a pipeline to export them, or need server-side SVG rendering.\n\n> **Note:** This is a Node.js library. If you want to export SVGs in a web app, use the [@excalidraw/utils](https://www.npmjs.com/package/@excalidraw/utils) library directly.\n\n## Features\n\n- **CLI & API** — Use from the command line or as a library in your Node.js project.\n- **Embedded fonts** — Excalidraw's custom fonts (Excalifont, Virgil, Cascadia, Comic Shanns, Liberation Sans, Lilita One, Nunito) are automatically detected and embedded as base64 `@font-face` rules, so SVGs render correctly without external font dependencies.\n- **Isolated runtime** — Uses JSDOM inside a worker thread so `@excalidraw/utils` can run in Node.js without mutating your app's global `window`, `document`, `fetch`, or other browser APIs.\n- **Warm worker architecture** — Reuses a single worker across back-to-back exports so Excalidraw, JSDOM, and font tooling stay hot instead of paying cold-start cost on every call.\n- **Font caching** — Caches font file reads and subset results inside the worker to speed up repeated exports with the same fonts and glyph sets.\n- **Timeout and abort support** — Supports `timeoutMs` and `AbortSignal`, and terminates the worker thread if an active export times out or is aborted.\n- **String or Object input** — Pass in a raw JSON string or a parsed JavaScript object.\n\n## Installation\n\n```bash\nnpm install @aldinokemal2104/excalidraw-to-svg\n```\n\n## Usage\n\n### CLI\n\nYou can run this package as a CLI tool via `npx` (or as a locally installed dependency). It takes two arguments: the path to the `.excalidraw` file and an optional output path (file or directory).\n\n```bash\n# Output to the same directory as the input (replaces .excalidraw with .svg)\nnpx @aldinokemal2104/excalidraw-to-svg ./diagrams/example.excalidraw\n\n# Output to a specific directory\nnpx @aldinokemal2104/excalidraw-to-svg ./diagrams/example.excalidraw ./output\n\n# Output to a specific file\nnpx @aldinokemal2104/excalidraw-to-svg ./diagrams/example.excalidraw ./output/my-diagram.svg\n```\n\n### API\n\nInstall the package as a dependency and call the exported function with an Excalidraw JSON object or string. The function returns a **DOM `SVGElement`** — use `.outerHTML` to get the string representation.\n\n```javascript\nconst excalidrawToSvg = require(\"@aldinokemal2104/excalidraw-to-svg\");\n\nconst diagram = {\n  type: \"excalidraw\",\n  version: 2,\n  source: \"https://excalidraw.com\",\n  elements: [\n    {\n      id: \"vWrqOAfkind2qcm7LDAGZ\",\n      type: \"ellipse\",\n      x: 414,\n      y: 237,\n      width: 214,\n      height: 214,\n      angle: 0,\n      strokeColor: \"#000000\",\n      backgroundColor: \"#15aabf\",\n      fillStyle: \"hachure\",\n      strokeWidth: 1,\n      strokeStyle: \"solid\",\n      roughness: 1,\n      opacity: 100,\n      groupIds: [],\n      strokeSharpness: \"sharp\",\n      seed: 1041657908,\n      version: 120,\n      versionNonce: 1188004276,\n      isDeleted: false,\n      boundElementIds: null,\n    },\n  ],\n  appState: {\n    viewBackgroundColor: \"#ffffff\",\n    gridSize: null,\n  },\n};\n\nconst svgElement = await excalidrawToSvg(diagram);\nconsole.log(svgElement.outerHTML);\n```\n\nYou can also pass a raw JSON string:\n\n```javascript\nconst fs = require(\"fs\");\nconst excalidrawToSvg = require(\"@aldinokemal2104/excalidraw-to-svg\");\n\nconst json = fs.readFileSync(\"./diagrams/example.excalidraw\", \"utf8\");\nconst svgElement = await excalidrawToSvg(json);\nconsole.log(svgElement.outerHTML);\n```\n\nYou can optionally enforce a timeout or cancel an in-flight export:\n\n```javascript\nconst controller = new AbortController();\n\nconst svgElement = await excalidrawToSvg(diagram, {\n  timeoutMs: 30_000,\n  signal: controller.signal,\n});\n```\n\n## How It Works\n\n### Architecture Summary\n\n1. **Public API call** — `excalidrawToSvg(diagram, options)` enqueues a request in the main thread.\n2. **Warm worker reuse** — A single worker is reused for sequential exports, so the Excalidraw runtime, JSDOM polyfills, and `subset-font` initialization stay hot between calls.\n3. **Queued execution** — Only one export runs at a time inside the worker. Additional calls wait in a queue until the active export finishes.\n4. **Runtime export** — Inside the worker, `@excalidraw/utils` renders the SVG with `skipInliningFonts: true`.\n5. **Font embedding with caches** — The worker scans used fonts, reads font files from disk once, caches subset results by `font + glyph set`, and injects `@font-face` rules into the SVG.\n6. **Main-thread parse** — The worker returns serialized SVG markup, and the main thread parses it back into a DOM `SVGElement`.\n7. **Idle cleanup** — If there is no more work queued, the warm worker is automatically torn down on the next idle tick.\n\n### Mermaid Diagram\n\n```mermaid\nflowchart TD\n  A[Caller invokes excalidrawToSvg] --> B[Main thread creates request id and queue item]\n  B --> C{Warm worker exists?}\n  C -- No --> D[Spawn worker thread]\n  C -- Yes --> E[Reuse existing worker]\n  D --> F[Post request to worker]\n  E --> F\n  F --> G[Worker runtime receives queued request]\n  G --> H[Load or reuse JSDOM globals and @excalidraw/utils]\n  H --> I[exportToSvg with skipInliningFonts true]\n  I --> J[Collect used font families and glyphs]\n  J --> K{Subset/font cache hit?}\n  K -- Yes --> L[Reuse cached embedded font data]\n  K -- No --> M[Read font file and subset glyphs]\n  M --> L\n  L --> N[Inject @font-face CSS into SVG]\n  N --> O[Return serialized SVG markup to main thread]\n  O --> P[Parse markup with reusable DOMParser]\n  P --> Q[Resolve Promise with SVGElement]\n```\n\n### Timeout and Cancellation Behavior\n\n- **Queued request timeout/abort** — If a request has not started yet, it is removed from the queue and never sent to the worker.\n- **Active request timeout/abort** — If a request is already rendering, the promise rejects and the worker thread is terminated.\n- **No overlap after timeout** — The next queued export does not start until the old worker's `terminate()` promise resolves, so a timed-out render is not left running in the background.\n- **Process isolation** — Because cancellation happens by terminating the worker thread, CPU and memory used by the in-flight render are released with that worker rather than left attached to the main process.\n\n## Development\n\n### Prerequisites\n\n- Node.js (with `--experimental-vm-modules` support for tests)\n\n### Running Tests\n\n```bash\nnpm test\n```\n\n### Publishing to npm\n\nThis package is configured to publish from GitHub Actions using npm Trusted Publisher with provenance.\n\n1. Bump the version in `package.json` (or use `npm version patch` / `npm version minor`).\n2. Push your changes to GitHub.\n3. Run the publish workflow from the Actions tab.\n\nIf you need a manual fallback publish, you can still use an npm token:\n\n```bash\nNPM_TOKEN=your_npm_token_here npm run npm:publish\n```\n\nThe manual command automatically runs tests, authenticates with npm, publishes the package with public access, and cleans up the auth file afterward.\n\n### Project Structure\n\n```\nsrc/\n├── excalidraw-to-svg.js       # Public API, warm worker queue, timeout/abort handling, SVG parsing\n├── excalidraw-runtime.js      # Worker runtime: JSDOM, Excalidraw export, font embedding, caching\n├── excalidraw-to-svg.worker.js # Worker thread entry point and in-worker render queue\n├── build-svg-path.js          # Output path resolution for CLI\n├── build-svg-path.test.js     # Tests for path resolution\n├── excalidraw-to-svg.test.js  # Tests for SVG conversion, worker reuse, timeout safety\n├── cli.js                     # CLI entry point\n└── index.js                   # Package entry point (re-exports core)\ndiagrams/                      # Example .excalidraw files\n```\n\n## Dependencies\n\n- [`@excalidraw/utils`](https://www.npmjs.com/package/@excalidraw/utils) — Excalidraw's official export utilities\n- [`jsdom`](https://www.npmjs.com/package/jsdom) — Browser environment simulation used inside the isolated worker runtime\n- [`subset-font`](https://www.npmjs.com/package/subset-font) — Font subsetting to keep embedded SVG fonts small\n\n## License\n\nMIT\n","readmeFilename":"README.md"}