{"_id":"@neplex/vectorizer","_rev":"6-ed0355e79c2ef90782361b0342ef66ea","name":"@neplex/vectorizer","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@neplex/vectorizer","version":"0.0.1","author":{"name":"twlite","email":"hello@twlite.dev"},"license":"MIT","_id":"@neplex/vectorizer@0.0.1","maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"homepage":"https://github.com/neplextech/vectorizer#readme","bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"ava":{"timeout":"3m"},"dist":{"shasum":"28587032a4b37d9d365e19035612d1f627fde634","tarball":"https://registry.npmjs.org/@neplex/vectorizer/-/vectorizer-0.0.1.tgz","fileCount":14,"integrity":"sha512-BS9Q2iKXw4pW2kATA+swkQr83M4PuAjZFJfGVU4zk0dtxujVu0Oxm6JyYh5vI97r+hLzv3TR73J57tSh5gOlpA==","signatures":[{"sig":"MEYCIQDzBmgBDgw7px5OVyI9OyekIchJjGfr4p6CjbaFoNkcSwIhAOm+FVu0s2M0Q+b5o1xDWS5yeeblQvc2iw6vLNUqRKEK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neplex%2fvectorizer@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6639253},"main":"index.js","napi":{"name":"vectorizer","triples":{"additional":["aarch64-apple-darwin","aarch64-linux-android","aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-unknown-linux-gnueabihf","x86_64-unknown-linux-musl","x86_64-unknown-freebsd","i686-pc-windows-msvc","armv7-linux-androideabi","universal-apple-darwin","riscv64gc-unknown-linux-gnu"]}},"types":"index.d.ts","engines":{"node":">= 10"},"gitHead":"0046bb4a1fa84b974b7e428a24c91867e0dfcc71","scripts":{"test":"ava","build":"napi build --platform --release","version":"napi version","artifacts":"napi artifacts","benchmark":"node benchmark/bench.mjs","universal":"napi universal","build:debug":"napi build --platform","prepublishOnly":"napi prepublish -t npm"},"_npmUser":{"name":"snowflake7","email":"mail2dynamite@gmail.com"},"repository":{"url":"git+https://github.com/neplextech/vectorizer.git","type":"git"},"_npmVersion":"10.2.3","description":"A simple Node.js library to convert raster images into svg","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"packageManager":"yarn@4.0.2","devDependencies":{"ava":"^5.1.1","@types/node":"^20.10.4","@napi-rs/cli":"^2.17.0","@napi-rs/image":"^1.7.0"},"optionalDependencies":{"@neplex/vectorizer-darwin-x64":"0.0.1","@neplex/vectorizer-freebsd-x64":"0.0.1","@neplex/vectorizer-darwin-arm64":"0.0.1","@neplex/vectorizer-android-arm64":"0.0.1","@neplex/vectorizer-linux-x64-gnu":"0.0.1","@neplex/vectorizer-linux-x64-musl":"0.0.1","@neplex/vectorizer-win32-x64-msvc":"0.0.1","@neplex/vectorizer-linux-arm64-gnu":"0.0.1","@neplex/vectorizer-win32-ia32-msvc":"0.0.1","@neplex/vectorizer-android-arm-eabi":"0.0.1","@neplex/vectorizer-darwin-universal":"0.0.1","@neplex/vectorizer-linux-arm64-musl":"0.0.1","@neplex/vectorizer-win32-arm64-msvc":"0.0.1","@neplex/vectorizer-linux-riscv64-gnu":"0.0.1","@neplex/vectorizer-linux-arm-gnueabihf":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vectorizer_0.0.1_1702673185803_0.06622834886730544","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@neplex/vectorizer","version":"0.0.2","author":{"name":"twlite","email":"hello@twlite.dev"},"license":"MIT","_id":"@neplex/vectorizer@0.0.2","maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"homepage":"https://github.com/neplextech/vectorizer#readme","bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"ava":{"timeout":"3m"},"dist":{"shasum":"3ab57daa0940d9f0babf613198692986747642b3","tarball":"https://registry.npmjs.org/@neplex/vectorizer/-/vectorizer-0.0.2.tgz","fileCount":14,"integrity":"sha512-L+J+djGjxTtKENbIt6h4cQzmsd77K+f/VSOhrjrGoU9iWHoPkAGW9TqXJaVSSlzn0L7HMnA5DU4aU65Vnoxg2g==","signatures":[{"sig":"MEUCIQCAo9GXqj5qnrDOxgjoBA7AmrwT3p6QR8Ermm/O6/SChQIgDO+7vhbFr4emjzr8/hFgI5ng/Bgl8ZpnOjZ1nO0NbDQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neplex%2fvectorizer@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6639631},"main":"index.js","napi":{"name":"vectorizer","triples":{"additional":["aarch64-apple-darwin","aarch64-linux-android","aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-unknown-linux-gnueabihf","x86_64-unknown-linux-musl","x86_64-unknown-freebsd","i686-pc-windows-msvc","armv7-linux-androideabi","universal-apple-darwin","riscv64gc-unknown-linux-gnu"]}},"types":"index.d.ts","engines":{"node":">= 10"},"gitHead":"ac3f9f07773f6eeb5cc76cf4b76f8f04cfb0a58e","scripts":{"test":"ava","build":"napi build --platform --release","version":"napi version","artifacts":"napi artifacts","benchmark":"node benchmark/bench.mjs","universal":"napi universal","build:debug":"napi build --platform","prepublishOnly":"napi prepublish -t npm"},"_npmUser":{"name":"snowflake7","email":"mail2dynamite@gmail.com"},"repository":{"url":"git+https://github.com/neplextech/vectorizer.git","type":"git"},"_npmVersion":"10.2.3","description":"A simple Node.js library to convert raster images into svg","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"packageManager":"yarn@4.0.2","devDependencies":{"ava":"^5.1.1","@types/node":"^20.10.4","@napi-rs/cli":"^2.17.0","@napi-rs/image":"^1.7.0"},"optionalDependencies":{"@neplex/vectorizer-darwin-x64":"0.0.2","@neplex/vectorizer-freebsd-x64":"0.0.2","@neplex/vectorizer-darwin-arm64":"0.0.2","@neplex/vectorizer-android-arm64":"0.0.2","@neplex/vectorizer-linux-x64-gnu":"0.0.2","@neplex/vectorizer-linux-x64-musl":"0.0.2","@neplex/vectorizer-win32-x64-msvc":"0.0.2","@neplex/vectorizer-linux-arm64-gnu":"0.0.2","@neplex/vectorizer-win32-ia32-msvc":"0.0.2","@neplex/vectorizer-android-arm-eabi":"0.0.2","@neplex/vectorizer-darwin-universal":"0.0.2","@neplex/vectorizer-linux-arm64-musl":"0.0.2","@neplex/vectorizer-win32-arm64-msvc":"0.0.2","@neplex/vectorizer-linux-riscv64-gnu":"0.0.2","@neplex/vectorizer-linux-arm-gnueabihf":"0.0.2"},"_npmOperationalInternal":{"tmp":"tmp/vectorizer_0.0.2_1702673763565_0.42695734339990254","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@neplex/vectorizer","version":"0.0.3","author":{"name":"twlite","email":"hello@twlite.dev"},"license":"MIT","_id":"@neplex/vectorizer@0.0.3","maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"homepage":"https://github.com/neplextech/vectorizer#readme","bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"ava":{"timeout":"3m"},"dist":{"shasum":"c21bbaf3cdf809760f98ba0a20d6704e1589d3c4","tarball":"https://registry.npmjs.org/@neplex/vectorizer/-/vectorizer-0.0.3.tgz","fileCount":14,"integrity":"sha512-tuPZLzRf1q4jPW0nT4bhHSZf9RF3Ti886MT3RH2A8kbe9CGNyOMw+B9V28xjLBzNxzsVUze8tapWPhVSMHJviA==","signatures":[{"sig":"MEYCIQDCAcF8AgHvLR6uaUmyaWZU1j/aTBf0FqNP517rBjq5lQIhAJzJmJuC+6tuXGx+lWCxJWna51s4l3c9VKso5LCgAhgz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neplex%2fvectorizer@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45255},"main":"index.js","napi":{"name":"vectorizer","triples":{"additional":["aarch64-apple-darwin","aarch64-linux-android","aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-unknown-linux-gnueabihf","x86_64-unknown-linux-musl","x86_64-unknown-freebsd","i686-pc-windows-msvc","armv7-linux-androideabi","universal-apple-darwin","riscv64gc-unknown-linux-gnu"]}},"types":"index.d.ts","engines":{"node":">= 10"},"gitHead":"c2a98ffcee4be8d59398683f2fae4f90c1ad9d68","scripts":{"test":"ava","build":"napi build --platform --release","version":"napi version","artifacts":"napi artifacts","benchmark":"node benchmark/bench.mjs","universal":"napi universal","build:debug":"napi build --platform","prepublishOnly":"napi prepublish -t npm"},"_npmUser":{"name":"snowflake7","email":"mail2dynamite@gmail.com"},"repository":{"url":"git+https://github.com/neplextech/vectorizer.git","type":"git"},"_npmVersion":"10.2.3","description":"A simple Node.js library to convert raster images into svg","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"packageManager":"yarn@4.0.2","devDependencies":{"ava":"^5.1.1","@types/node":"^20.10.4","@napi-rs/cli":"^2.17.0","@napi-rs/image":"^1.7.0"},"optionalDependencies":{"@neplex/vectorizer-darwin-x64":"0.0.3","@neplex/vectorizer-freebsd-x64":"0.0.3","@neplex/vectorizer-darwin-arm64":"0.0.3","@neplex/vectorizer-android-arm64":"0.0.3","@neplex/vectorizer-linux-x64-gnu":"0.0.3","@neplex/vectorizer-linux-x64-musl":"0.0.3","@neplex/vectorizer-win32-x64-msvc":"0.0.3","@neplex/vectorizer-linux-arm64-gnu":"0.0.3","@neplex/vectorizer-win32-ia32-msvc":"0.0.3","@neplex/vectorizer-android-arm-eabi":"0.0.3","@neplex/vectorizer-darwin-universal":"0.0.3","@neplex/vectorizer-linux-arm64-musl":"0.0.3","@neplex/vectorizer-win32-arm64-msvc":"0.0.3","@neplex/vectorizer-linux-riscv64-gnu":"0.0.3","@neplex/vectorizer-linux-arm-gnueabihf":"0.0.3"},"_npmOperationalInternal":{"tmp":"tmp/vectorizer_0.0.3_1702823579443_0.7945028866334618","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@neplex/vectorizer","version":"0.0.4","author":{"name":"twlite","email":"hello@twlite.dev"},"license":"MIT","_id":"@neplex/vectorizer@0.0.4","maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"homepage":"https://github.com/neplextech/vectorizer#readme","bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"ava":{"timeout":"3m"},"dist":{"shasum":"16ae0a4088a159b09c4d1cca62b0d837f01a82ef","tarball":"https://registry.npmjs.org/@neplex/vectorizer/-/vectorizer-0.0.4.tgz","fileCount":14,"integrity":"sha512-kBDIgTU3ljDHjzUqYuJL+SIJ4cKs5vMZ4w5GCEjHaZ6JIbrQRf5WLtCSzq908PINO1xuvL1ZIoDRiVEo2LQOOw==","signatures":[{"sig":"MEUCIF5GLixzafeLmDqwobbgfKduv35UW5NWDuUkFWohaANiAiEA73iJBLwo9KcXFt6wHQasUlGtVxTqiJ6Ykq913WF5TOQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neplex%2fvectorizer@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46644},"main":"index.js","napi":{"name":"vectorizer","triples":{"additional":["aarch64-apple-darwin","aarch64-linux-android","aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-unknown-linux-gnueabihf","x86_64-unknown-linux-musl","x86_64-unknown-freebsd","i686-pc-windows-msvc","armv7-linux-androideabi","universal-apple-darwin","riscv64gc-unknown-linux-gnu"]}},"types":"index.d.ts","engines":{"node":">= 10"},"gitHead":"906dc3d0eab9ce81338e260e8650c96317d8ec68","scripts":{"test":"ava","build":"napi build --platform --release","version":"napi version","artifacts":"napi artifacts","benchmark":"node benchmark/bench.mjs","universal":"napi universal","build:debug":"napi build --platform","prepublishOnly":"napi prepublish -t npm"},"_npmUser":{"name":"snowflake7","email":"mail2dynamite@gmail.com"},"repository":{"url":"git+https://github.com/neplextech/vectorizer.git","type":"git"},"_npmVersion":"10.2.3","description":"A simple Node.js library to convert raster images into svg","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"packageManager":"yarn@4.0.2","devDependencies":{"ava":"^5.1.1","@types/node":"^20.10.4","@napi-rs/cli":"^2.17.0","@napi-rs/image":"^1.7.0"},"optionalDependencies":{"@neplex/vectorizer-darwin-x64":"0.0.4","@neplex/vectorizer-freebsd-x64":"0.0.4","@neplex/vectorizer-darwin-arm64":"0.0.4","@neplex/vectorizer-android-arm64":"0.0.4","@neplex/vectorizer-linux-x64-gnu":"0.0.4","@neplex/vectorizer-linux-x64-musl":"0.0.4","@neplex/vectorizer-win32-x64-msvc":"0.0.4","@neplex/vectorizer-linux-arm64-gnu":"0.0.4","@neplex/vectorizer-win32-ia32-msvc":"0.0.4","@neplex/vectorizer-android-arm-eabi":"0.0.4","@neplex/vectorizer-darwin-universal":"0.0.4","@neplex/vectorizer-linux-arm64-musl":"0.0.4","@neplex/vectorizer-win32-arm64-msvc":"0.0.4","@neplex/vectorizer-linux-riscv64-gnu":"0.0.4","@neplex/vectorizer-linux-arm-gnueabihf":"0.0.4"},"_npmOperationalInternal":{"tmp":"tmp/vectorizer_0.0.4_1704019396286_0.18185317238657217","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@neplex/vectorizer","version":"0.0.5","author":{"name":"twlite","email":"hello@twlite.dev"},"license":"MIT","_id":"@neplex/vectorizer@0.0.5","maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"homepage":"https://github.com/neplextech/vectorizer#readme","bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"ava":{"timeout":"2m","extensions":{"ts":"module"},"nodeArguments":["--import","@swc-node/register/esm-register"],"workerThreads":false,"environmentVariables":{"TS_NODE_PROJECT":"./tsconfig.json"}},"bin":{"vectorizer":"cli/index.mjs"},"dist":{"shasum":"80497b4f6a8d5265f97408396c3adccf29b9cc0e","tarball":"https://registry.npmjs.org/@neplex/vectorizer/-/vectorizer-0.0.5.tgz","fileCount":6,"integrity":"sha512-lGXsEYK3xqAQ1U/kKNr3m7ml5cFZMYPfuCD3gj/g+1fqRjO7ornjS39TjY89EgvZFLWOWQEUzo2QCEgIUPlGyg==","signatures":[{"sig":"MEUCIQCrTKvCTaCBnxvi0XedZWG2WGUByOpbkudmOBI8CaSdkwIgWzK+6jxIFqE0j6RCI+iknBce0pHagLq/TpkCmrK3HZw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neplex%2fvectorizer@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24850},"main":"index.js","napi":{"name":"vectorizer","triples":{"defaults":true,"additional":["x86_64-unknown-linux-musl","aarch64-unknown-linux-gnu","i686-pc-windows-msvc","armv7-unknown-linux-gnueabihf","aarch64-apple-darwin","aarch64-linux-android","x86_64-unknown-freebsd","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-linux-androideabi"]}},"types":"index.d.ts","engines":{"node":">= 10"},"gitHead":"46d04f1b286b678cf3e692b3b0b6e6f4f3b9961d","scripts":{"lint":"oxlint .","test":"ava","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","example":"node --import @swc-node/register/esm-register example/anime-girl.ts","prepare":"husky","version":"napi version","artifacts":"napi artifacts","benchmark":"node --expose-gc --import @swc-node/register/esm-register benchmark/bench.ts","format:rs":"cargo fmt","universal":"napi universal","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"snowflake7","email":"mail2dynamite@gmail.com"},"prettier":{"semi":true,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/neplextech/vectorizer.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js library to convert raster images to svg","directories":{},"lint-staged":{"*.toml":["taplo format"],"*.@(js|ts|tsx)":["oxlint --fix"],"*.@(js|ts|tsx|yml|yaml|md|json)":["prettier --write"]},"_nodeVersion":"20.18.1","dependencies":{"commander":"^13.0.0","picocolors":"^1.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.6.0","devDependencies":{"ava":"^6.1.3","chalk":"^5.3.0","husky":"^9.0.11","mitata":"^1.0.26","oxlint":"^0.15.0","prettier":"^3.3.3","@swc/core":"^1.6.13","@taplo/cli":"^0.7.0","typescript":"^5.5.3","@types/node":"^22.10.5","lint-staged":"^15.2.7","@napi-rs/cli":"^2.18.4","npm-run-all2":"^7.0.0","imagetracerjs":"^1.2.6","@napi-rs/image":"^1.9.2","@swc-node/register":"^1.10.6"},"optionalDependencies":{"@neplex/vectorizer-darwin-x64":"0.0.5","@neplex/vectorizer-freebsd-x64":"0.0.5","@neplex/vectorizer-darwin-arm64":"0.0.5","@neplex/vectorizer-android-arm64":"0.0.5","@neplex/vectorizer-linux-x64-gnu":"0.0.5","@neplex/vectorizer-linux-x64-musl":"0.0.5","@neplex/vectorizer-win32-x64-msvc":"0.0.5","@neplex/vectorizer-linux-arm64-gnu":"0.0.5","@neplex/vectorizer-win32-ia32-msvc":"0.0.5","@neplex/vectorizer-android-arm-eabi":"0.0.5","@neplex/vectorizer-linux-arm64-musl":"0.0.5","@neplex/vectorizer-win32-arm64-msvc":"0.0.5","@neplex/vectorizer-linux-arm-gnueabihf":"0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/vectorizer_0.0.5_1736173158408_0.6811970894566681","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@neplex/vectorizer","version":"0.1.0","description":"Node.js library to convert raster images to svg","main":"index.js","types":"index.d.ts","bin":{"vectorizer":"cli/index.mjs"},"browser":"browser.js","author":{"name":"Twilight","email":"hello@twlite.dev"},"repository":{"type":"git","url":"git+https://github.com/neplextech/vectorizer.git"},"license":"MIT","keywords":["vectorizer","raster-to-svg","image-tracing","svg-optimization","nodejs","rust","napi"],"napi":{"binaryName":"vectorizer","targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","x86_64-unknown-linux-musl","aarch64-unknown-linux-gnu","i686-pc-windows-msvc","armv7-unknown-linux-gnueabihf","aarch64-apple-darwin","aarch64-linux-android","x86_64-unknown-freebsd","aarch64-unknown-linux-musl","aarch64-pc-windows-msvc","armv7-linux-androideabi","wasm32-wasip1-threads"],"constEnum":false},"engines":{"node":">= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"artifacts":"napi artifacts","bench":"node --expose-gc --import @oxc-node/core/register benchmark/bench.ts","build":"node scripts/build.js --release","build:wasm":"node scripts/build.js --release --target wasm32-wasip1-threads","build:debug":"node scripts/build.js","build:debug:wasm":"node scripts/build.js --target wasm32-wasip1-threads","example":"node --import @oxc-node/core/register example/anime-girl.ts","format":"run-p format:prettier format:rs format:toml","format:prettier":"prettier . -w","format:toml":"taplo format","format:rs":"cargo fmt","generate-exports":"node scripts/postbuild.js","lint":"oxlint .","prepublishOnly":"napi prepublish -t npm","test":"ava","preversion":"napi build --platform && git add .","version":"napi version","prepare":"husky"},"devDependencies":{"@emnapi/core":"^1.5.0","@emnapi/runtime":"^1.5.0","@napi-rs/cli":"^3.2.0","@napi-rs/image":"^1.12.0","@napi-rs/wasm-runtime":"^1.1.4","@oxc-node/core":"^0.1.0","@taplo/cli":"^0.7.0","@tybys/wasm-util":"^0.10.0","@types/node":"^25.9.1","ava":"^8.0.0","chalk":"^5.6.2","husky":"^9.1.7","imagetracerjs":"^1.2.6","lint-staged":"^17.0.0","mitata":"^1.0.34","npm-run-all2":"^8.0.4","oxlint":"^1.14.0","potrace":"^2.1.8","prettier":"^3.6.2","typescript":"^6.0.0"},"lint-staged":{"*.@(js|ts|tsx)":["oxlint --fix"],"*.@(js|ts|tsx|yml|yaml|md|json)":["prettier --write"],"*.toml":["taplo format"]},"ava":{"extensions":["ts"],"timeout":"2m","workerThreads":false,"environmentVariables":{"OXC_TSCONFIG_PATH":"./__test__/tsconfig.json"},"nodeArguments":["--import","@oxc-node/core/register"]},"prettier":{"printWidth":120,"semi":true,"trailingComma":"all","singleQuote":true,"arrowParens":"always"},"packageManager":"yarn@4.15.0","dependencies":{"commander":"^14.0.3","picocolors":"^1.1.1"},"optionalDependencies":{"@neplex/vectorizer-win32-x64-msvc":"0.1.0","@neplex/vectorizer-darwin-x64":"0.1.0","@neplex/vectorizer-linux-x64-gnu":"0.1.0","@neplex/vectorizer-linux-x64-musl":"0.1.0","@neplex/vectorizer-linux-arm64-gnu":"0.1.0","@neplex/vectorizer-win32-ia32-msvc":"0.1.0","@neplex/vectorizer-linux-arm-gnueabihf":"0.1.0","@neplex/vectorizer-darwin-arm64":"0.1.0","@neplex/vectorizer-android-arm64":"0.1.0","@neplex/vectorizer-freebsd-x64":"0.1.0","@neplex/vectorizer-linux-arm64-musl":"0.1.0","@neplex/vectorizer-win32-arm64-msvc":"0.1.0","@neplex/vectorizer-android-arm-eabi":"0.1.0","@neplex/vectorizer-wasm32-wasi":"0.1.0"},"gitHead":"dd96eea07d1eb6c0c796801a385efbf53d512591","_id":"@neplex/vectorizer@0.1.0","bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"homepage":"https://github.com/neplextech/vectorizer#readme","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-J2cfkJG0hmOsC+QiPfkNSe8U68vW5SdaM8PjLMVgacmKfOtZKbU5syz3BqlfYoMlPjJlfzYdxwfH4GiAz5vLUQ==","shasum":"f3db056f7ab291a80fb6ece0c47e02109cd691af","tarball":"https://registry.npmjs.org/@neplex/vectorizer/-/vectorizer-0.1.0.tgz","fileCount":9,"unpackedSize":65020,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neplex%2fvectorizer@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDzq7bPdV8LvARrSpptFePVLNXCOQUIOUn7tjq1U6gJ3wIgeopoK3Wdq+TSdRPO45CLd5HGzcqlTPMBjF8PdsNcsok="}]},"_npmUser":{"name":"snowflake7","email":"mail2dynamite@gmail.com"},"directories":{},"maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vectorizer_0.1.0_1780209986127_0.4248830220138755"},"_hasShrinkwrap":false}},"time":{"created":"2023-12-15T20:46:25.719Z","modified":"2026-05-31T06:46:26.586Z","0.0.1":"2023-12-15T20:46:26.115Z","0.0.2":"2023-12-15T20:56:03.854Z","0.0.3":"2023-12-17T14:32:59.686Z","0.0.4":"2023-12-31T10:43:16.512Z","0.0.5":"2025-01-06T14:19:18.585Z","0.1.0":"2026-05-31T06:46:26.281Z"},"bugs":{"url":"https://github.com/neplextech/vectorizer/issues"},"author":{"name":"Twilight","email":"hello@twlite.dev"},"license":"MIT","homepage":"https://github.com/neplextech/vectorizer#readme","repository":{"type":"git","url":"git+https://github.com/neplextech/vectorizer.git"},"description":"Node.js library to convert raster images to svg","maintainers":[{"name":"snowflake7","email":"mail2dynamite@gmail.com"}],"readme":"# @neplex/vectorizer\n\nNode.js library to convert raster images to svg using [VTracer](https://github.com/visioncortex/vtracer), with time complexity of `O(n)`.\n\n## CLI\n\n```bash\nnpx @neplex/vectorizer ./raster.png ./vector.svg\n```\n\nOptimize while vectorizing:\n\n```bash\nnpx @neplex/vectorizer ./raster.png ./vector.svg --optimize --multipass --multipass-iterations 5\n```\n\nOptimize an existing SVG:\n\n```bash\nnpx @neplex/vectorizer optimize ./vector.svg ./vector.optimized.svg --plugin preset-default\n```\n\nUse `--help` to see all available options.\n\n## Installation\n\n```bash\nnpm install @neplex/vectorizer\n```\n\n## Usage\n\n```js\nimport { vectorize, ColorMode, Hierarchical, PathSimplifyMode } from '@neplex/vectorizer';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nconst src = await readFile('./raster.png');\n\nconst svg = await vectorize(src, {\n  colorMode: ColorMode.Color,\n  colorPrecision: 6,\n  filterSpeckle: 4,\n  spliceThreshold: 45,\n  cornerThreshold: 60,\n  hierarchical: Hierarchical.Stacked,\n  mode: PathSimplifyMode.Spline,\n  layerDifference: 5,\n  lengthThreshold: 5,\n  maxIterations: 2,\n  pathPrecision: 5,\n});\n\nconsole.log(svg); // <svg>...</svg>\nawait writeFile('./vector.svg', svg);\n```\n\nThe generated SVG string is generally quite large, so it's recommended to optimize it before use. See the [SVG Optimization section](#svg-optimization) for more details. If you want to use a synchronous API, you can use `vectorizeSync` instead. See the [API section](#api) for more details on available functions and options.\n\n## Benchmark\n\n```js\nyarn bench\nclk: ~5.32 GHz\ncpu: Intel(R) Core(TM) i7-14700K\nruntime: node 24.14.1 (x64-win32)\n\nbenchmark                          avg (min … max) p75 / p99    (min … top 1%)\n-------------------------------------------------- -------------------------------\n@neplex/vectorizer raw sync         529.82 µs/iter 533.70 µs        ▅█▅\n                           (517.00 µs … 607.00 µs) 552.90 µs   ▅██▆▇████▄\n                           (  1.65 kb … 168.67 kb)   1.94 kb ▃███████████▆▄▃▂▁▂▂▂▁\n\n@neplex/vectorizer encoded sync     549.19 µs/iter 552.70 µs       ▃█▆▇\n                           (534.80 µs … 597.10 µs) 573.50 µs    ▃▆▆████▆▄\n                           (  1.60 kb …  74.57 kb)   1.70 kb ▂▆██████████▆▄▂▂▂▂▂▁▁\n\n@neplex/vectorizer encoded async    585.94 µs/iter 586.00 µs   ▇█\n                           (561.70 µs … 745.10 µs) 691.10 µs   ██\n                           (  2.27 kb …  76.16 kb)   2.34 kb ▂▅███▅▃▂▂▁▁▁▁▁▁▂▁▁▁▁▁\n\n@neplex/vectorizer encoded callback 684.02 µs/iter 698.80 µs    ▃▅▃▃█▂\n                           (632.30 µs … 844.90 µs) 770.60 µs  ▂▅██████▇▃\n                           (  4.27 kb …  44.40 kb)   4.48 kb ▂████████████▇▅▆▆▅▃▃▂\n\n@neplex/vectorizer raw async        565.45 µs/iter 565.20 µs  ▂█\n                           (548.70 µs … 706.00 µs) 646.00 µs  ██▃\n                           (  2.33 kb … 186.42 kb)   2.58 kb ▂███▅▃▃▂▂▁▂▁▂▁▁▂▁▁▁▁▁\n\n@neplex/vectorizer raw callback     625.91 µs/iter 636.20 µs   ▃█▇\n                           (591.60 µs … 779.20 µs) 704.80 µs   ███▇\n                           (  3.98 kb … 374.13 kb)   4.62 kb ▂████████▄▅▆▅▆▄▄▃▁▂▁▂\n\nimagetracerjs                         2.41 ms/iter   2.42 ms   █▇▂\n                               (2.33 ms … 2.93 ms)   2.73 ms  ████▂\n                           (  1.14 mb …   6.92 mb)   4.52 mb ▂█████▃▃▃▃▂▂▂▂▁▂▁▁▁▁▁\n\npotrace trace                         3.59 ms/iter   4.45 ms      █▅\n                               (1.70 ms … 7.43 ms)   6.36 ms  ▆▃█▂██▃ ▃▅▂  ▄\n                           (736.00  b …  11.91 mb)   2.27 mb ▃██████████████▇▃█▁▆▃\n\nsummary\n  @neplex/vectorizer raw sync\n   1.04x faster than @neplex/vectorizer encoded sync\n   1.07x faster than @neplex/vectorizer raw async\n   1.11x faster than @neplex/vectorizer encoded async\n   1.18x faster than @neplex/vectorizer raw callback\n   1.29x faster than @neplex/vectorizer encoded callback\n   4.54x faster than imagetracerjs\n   6.78x faster than potrace trace\n```\n\nSee [benchmark](https://github.com/neplextech/vectorizer/blob/main/benchmark/bench.ts) for more details.\n\n## API\n\n### `vectorize(data: Buffer, config?: Config | Preset, signal?: AbortSignal): Promise<string>`\n\nTakes an image buffer and returns a promise that resolves to an SVG string.\n\n### `vectorizeSync(data: Buffer, config?: Config | Preset): string`\n\nTakes an image buffer and returns an SVG string synchronously.\n\n### `vectorizeRaw(data: Buffer, args: RawDataConfig, config?: Config | Preset, signal?: AbortSignal): Promise<string>`\n\nTakes a raw pixel data buffer and returns a promise that resolves to an SVG string.\n\n### `vectorizeRawSync(data: Buffer, args: RawDataConfig, config?: Config | Preset): string`\n\nTakes a raw pixel data buffer and returns an SVG string synchronously.\n\n### `vectorizeToCallback(data: Buffer, config: Config | Preset | null | undefined, callback: (chunk: string, progress: number) => void): void`\n\nVectorizes an image buffer and emits SVG chunks to the callback. `progress` is a number from 0 to 100 indicating how much of the vectorization has been written.\n\n### `vectorizeRawToCallback(data: Buffer, args: RawDataConfig, config: Config | Preset | null | undefined, callback: (chunk: string, progress: number) => void): void`\n\nVectorizes raw pixel data and emits SVG chunks to the callback. `progress` is a number from 0 to 100.\n\n### `readImage(data: Buffer, args?: RawDataConfig, signal?: AbortSignal): Promise<ImageData>`\n\nDecodes an encoded image buffer, or a raw RGBA buffer when `args` is provided, and resolves image width, height, and pixels.\n\n### `readImageSync(data: Buffer, args?: RawDataConfig): ImageData`\n\nDecodes an encoded image buffer, or a raw RGBA buffer when `args` is provided, synchronously.\n\n### `colorExistsInImage(image: ImageData, color: Color, signal?: AbortSignal): Promise<boolean>`\n\nChecks asynchronously whether a decoded image contains the given RGB color.\n\n### `colorExistsInImageSync(image: ImageData, color: Color): boolean`\n\nChecks synchronously whether a decoded image contains the given RGB color.\n\n### `findUnusedColorInImage(image: ImageData, options?: InternalOptions, signal?: AbortSignal): Promise<Color>`\n\nFinds asynchronously a color that does not exist in decoded image data.\n\n### `findUnusedColorInImageSync(image: ImageData, options?: InternalOptions): Color`\n\nFinds synchronously a color that does not exist in decoded image data.\n\n### `optimize(svg: string, options?: OptimizeOptions, signal?: AbortSignal): Promise<string>`\n\nOptimizes an SVG string asynchronously. Supports the same options as `optimizeSync`.\n\n### `optimizeSync(svg: string, options?: OptimizeOptions): string`\n\nOptimizes an SVG string synchronously.\n\n`OptimizeOptions` supports:\n\n- `preset?: OptimizePreset`: `Default`, `Safe`, or `None`.\n- `plugins?: Array<string | { name: string, params?: unknown }>`: SVGO `Config[\"plugins\"]` compatible job config. When provided, this defines the optimizer job set.\n- `omit?: string[]`: optimizer job names to skip.\n- `multipass?: boolean`: run optimization until output stops changing or the iteration limit is reached.\n- `multipassIterations?: number`: maximum multipass iterations. Defaults to `10`.\n\n### `isEOF(chunk: string, progress: number): boolean`\n\nDetermines if the given chunk data indicates the end of the SVG output. Useful for callback-based vectorization to know when the final chunk has been received. Note that EOF here refers to the final chunk of svg, which is `</svg>\\n`.\n\n```js\nconst { promise, resolve } = Promise.withResolvers<void>();\n\nvectorizeToCallback(src, config, (chunk, progress) => {\n  if (isEOF(chunk, progress)) {\n    resolve();\n  }\n});\n\nawait promise; // block until all the SVG chunks have been received\nconsole.log('SVG output complete!');\n```\n\n## SVG Optimization\n\nThe raw output from `vectorize` can be significantly reduced in size using the built-in optimizer powered by [oxvg_optimiser](https://github.com/noahbald/oxvg):\n\n```js\nimport { optimize, vectorize } from '@neplex/vectorizer';\nimport { readFile, writeFile } from 'node:fs/promises';\n\nconst src = await readFile('./input.png');\nconst svg = await vectorize(src);\nconst optimized = await optimize(\n  svg,\n  /* optional config */ {\n    plugins: ['preset-default', { name: 'removeTitle' }], // supports svgo plugin config\n    multipass: true, // enable multipass optimization\n    multipassIterations: 5, // limit multipass iterations to 5\n  },\n);\n\nawait writeFile('./output.svg', optimized);\n```\n\n> Note that the optimizer included in this library is a thin wrapper around `oxvg_optimiser` and does not intend to provide all the features of `oxvg`. For advanced needs, consider using `@oxvg/napi` directly.\n\n## Demo\n\nGenerated under the following configuration:\n\n```js\n{\n    colorMode: ColorMode.Color,\n    colorPrecision: 8,\n    filterSpeckle: 4,\n    spliceThreshold: 45,\n    cornerThreshold: 60,\n    hierarchical: Hierarchical.Stacked,\n    mode: PathSimplifyMode.Spline,\n    layerDifference: 6,\n    lengthThreshold: 4,\n    maxIterations: 2\n}\n```\n\n| Raster Image (PNG Input)                                                                                                                                                                                                         | Vector Image (Generated SVG)                                                                                                                                                                                                           |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| ![Raster Image](https://raw.githubusercontent.com/neplextech/vectorizer/main/example/anime-girl.png)<br/>[CC-BY-SA 3.0](https://creativecommons.org/licenses/by/3.0) by [Niabot](https://commons.wikimedia.org/wiki/User:Niabot) | ![Vector Image](https://raw.githubusercontent.com/neplextech/vectorizer/main/example/result-optimized.svg)<br/>[CC-BY-SA 3.0](https://creativecommons.org/licenses/by/3.0) by [Niabot](https://commons.wikimedia.org/wiki/User:Niabot) |\n","readmeFilename":"README.md","keywords":["vectorizer","raster-to-svg","image-tracing","svg-optimization","nodejs","rust","napi"]}