{"_id":"@cadit-app/potrace-ts","_rev":"6-40776bec09ba9d63917270e02eea2b59","name":"@cadit-app/potrace-ts","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@cadit-app/potrace-ts","version":"1.0.0","keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"license":"MIT","_id":"@cadit-app/potrace-ts@1.0.0","maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"contributors":[{"name":"CADit Team"}],"dist":{"shasum":"7ee7bda1b17a51db5606dc6f29df7e373b091b99","tarball":"https://registry.npmjs.org/@cadit-app/potrace-ts/-/potrace-ts-1.0.0.tgz","fileCount":54,"integrity":"sha512-KEUssGzhjkwf5GMzGgdtzTFbGawhIOROZ/rHt/s0lks1CTJ+dGZGRqwY03sdpb27hy/2m13xTQhzyH8AhAH6fA==","signatures":[{"sig":"MEUCIQCdYC0tB9exEPM6asUgFD/pdcqFSX0AekAnZOPJzJ8/uQIgWbk9T0eVItv6rn1BW4zFl3c4QGftqYeTTucx6jiRxCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144135},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"28a999d0d23583473bc6f08cc4eec6e936987758","scripts":{"build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"loosetooth","email":"loosetooth@protonmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"jpeg-js":"^0.4.4","upng-js":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potrace-ts_1.0.0_1768046042557_0.43066510570529015","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cadit-app/potrace-ts","version":"1.0.1","keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"license":"MIT","_id":"@cadit-app/potrace-ts@1.0.1","maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"contributors":[{"name":"CADit Team"}],"dist":{"shasum":"a989edfe90fbe2653b3a15650747b758f314e866","tarball":"https://registry.npmjs.org/@cadit-app/potrace-ts/-/potrace-ts-1.0.1.tgz","fileCount":54,"integrity":"sha512-ug2H0FK6coHZqTgG8Klc0Z3+nQVD964RaqynFOInF/15yTPMfxAfj7XyzkDUQOLkwoH5H0HEOkQwwVoKM/pu/A==","signatures":[{"sig":"MEQCICQjq1nJvsCAB1xersmSDG3gBFMSwCstm3RFVXCZaYVRAiBOnz4NXpCZG/NFYyDl3NzZMRMyDbRRu13xlsSx3EYL3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144135},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"28a999d0d23583473bc6f08cc4eec6e936987758","scripts":{"build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"loosetooth","email":"loosetooth@protonmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"jpeg-js":"^0.4.4","upng-js":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potrace-ts_1.0.1_1768046171364_0.4279458592713876","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@cadit-app/potrace-ts","version":"1.1.0","keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"license":"MIT","_id":"@cadit-app/potrace-ts@1.1.0","maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"contributors":[{"name":"CADit Team"}],"dist":{"shasum":"ccd24277a1641a48263d99666eebe64f070072b5","tarball":"https://registry.npmjs.org/@cadit-app/potrace-ts/-/potrace-ts-1.1.0.tgz","fileCount":54,"integrity":"sha512-Alw5t/sDvQV2IiXgdWWWjmWU69kfC0ZcsYvnjBU0TG1a7k1LlDGEUb/nZ9oLSBbpn8fdPJv3DkRk9K/tcoAOvQ==","signatures":[{"sig":"MEUCIF+YFbIAa1+8DzLmGwqomltClY+nyaVjw2WaBRlfQQgdAiEA7gBPYZYhKJ0SSkGMxZbR4RQY9OyqI0ypYZh749m08V0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148443},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"28a999d0d23583473bc6f08cc4eec6e936987758","scripts":{"build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"loosetooth","email":"loosetooth@protonmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"jpeg-js":"^0.4.4","upng-js":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potrace-ts_1.1.0_1768047596770_0.5083022902615073","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@cadit-app/potrace-ts","version":"1.1.1","keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"license":"MIT","_id":"@cadit-app/potrace-ts@1.1.1","maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"contributors":[{"name":"CADit Team"}],"dist":{"shasum":"ca105e1b02c26f8d05772eaa6ca0bb5c8258e9db","tarball":"https://registry.npmjs.org/@cadit-app/potrace-ts/-/potrace-ts-1.1.1.tgz","fileCount":54,"integrity":"sha512-q84Zc7hiVyaPmig4DyOUIaOaQqWzU1zTfme/ONsi+Y6656IUl73R7YmGWkaNxmsbju1rAXwnA34k7PU5fA4VgA==","signatures":[{"sig":"MEQCIAX3+EzuVLax7wTYSnSRiLphytNVPCYstXOlB1AwSKuKAiA4p+Nvo/dXS+f3VVOkjvMM3qqvrbPnAKglhzN9MYk6Eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149718},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"28a999d0d23583473bc6f08cc4eec6e936987758","scripts":{"build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"loosetooth","email":"loosetooth@protonmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"jpeg-js":"^0.4.4","upng-js":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potrace-ts_1.1.1_1768048184209_0.3943884287913604","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@cadit-app/potrace-ts","version":"1.2.0","keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"license":"MIT","_id":"@cadit-app/potrace-ts@1.2.0","maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"contributors":[{"name":"CADit Team"}],"dist":{"shasum":"998c98d8178624f9b838aa7848cc5de5ff65b6be","tarball":"https://registry.npmjs.org/@cadit-app/potrace-ts/-/potrace-ts-1.2.0.tgz","fileCount":54,"integrity":"sha512-ZXM7T4VZSdtmETXQWuVE2hMDkpZEzUzrX8ISAk7NHcFuuwXv+JNlgayJDHO4OBm7ronLiJRz5djb/rxOE0ODvw==","signatures":[{"sig":"MEYCIQDl7EisVRG+ucp7V43559ODruphvGzuhkIpSGUPKaW3ogIhALLOaip7kkhwxnMVjZUrLRI4bWfpxhqaEB3pkeyM9gal","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150735},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"28a999d0d23583473bc6f08cc4eec6e936987758","scripts":{"build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"loosetooth","email":"loosetooth@protonmail.com"},"_npmVersion":"11.6.2","description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"jpeg-js":"^0.4.4","upng-js":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potrace-ts_1.2.0_1768050655928_0.4443023572103564","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@cadit-app/potrace-ts","version":"1.3.0","description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"sideEffects":false,"scripts":{"build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build","clean":"rm -rf dist"},"keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"contributors":[{"name":"CADit Team"}],"license":"MIT","publishConfig":{"access":"public"},"devDependencies":{"typescript":"^5.0.0"},"dependencies":{"jpeg-js":"^0.4.4","upng-js":"^2.1.0"},"gitHead":"785e5c5ee4bc8aec735584198d30a05ca185481b","_id":"@cadit-app/potrace-ts@1.3.0","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-q+Ak5oWTvA2QkibhBr+AgDmgorjfssL+5730bkC0Ty2QBxk3lceLKcCHIt9Z75ls+aPxmeyyJXN5sYOHPmBQjw==","shasum":"d7f90db31dda47ce760682d1948d2f1501119c34","tarball":"https://registry.npmjs.org/@cadit-app/potrace-ts/-/potrace-ts-1.3.0.tgz","fileCount":54,"unpackedSize":150291,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIARdGX6qe6b0frvjoiBSYXvalkJzSiJVuqGnc5ynkXuhAiAjYge3QpnrUqGgPiGrDudn3GCsRU/3aO2P6tSxevNlUA=="}]},"_npmUser":{"name":"loosetooth","email":"loosetooth@protonmail.com"},"directories":{},"maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/potrace-ts_1.3.0_1768055284643_0.6077717919733634"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-10T11:54:02.408Z","modified":"2026-01-10T14:28:05.022Z","1.0.0":"2026-01-10T11:54:02.712Z","1.0.1":"2026-01-10T11:56:11.506Z","1.1.0":"2026-01-10T12:19:56.913Z","1.1.1":"2026-01-10T12:29:44.399Z","1.2.0":"2026-01-10T13:10:56.056Z","1.3.0":"2026-01-10T14:28:04.782Z"},"license":"MIT","keywords":["potrace","trace","bitmap","vector","svg","image-processing","worker-compatible","cadit"],"description":"Pure TypeScript library for tracing bitmap images to vector paths. Works in browser and Web Workers.","contributors":[{"name":"CADit Team"}],"maintainers":[{"name":"cadit-publish-bot","email":"bart.moyaers@cookiecad.com"},{"name":"loosetooth","email":"loosetooth@protonmail.com"}],"readme":"# @cadit-app/potrace-ts\n\nA TypeScript library for tracing bitmap images to vector paths. Based on the [Potrace algorithm](http://potrace.sourceforge.net/) and [potrace.js by Casper Lamboo](https://github.com/casperlamboo/potrace).\n\n## Features\n\n- **Worker-compatible** - Core functions work in Web Workers without DOM\n- **Browser-ready** - Works directly with esm.sh, no bundling required\n- **Type-safe** - Full TypeScript definitions included\n- **Auto-threshold** - Automatic threshold calculation using Otsu's method\n- **Auto-invert** - Automatically detects light-on-dark images and inverts them\n- **Image decoding** - Built-in PNG and JPEG decoding (no DOM required)\n- **Multiple APIs** - From simple data URL tracing to low-level bitmap manipulation\n\n## Dependencies\n\n- `upng-js` - Pure JavaScript PNG decoder\n- `jpeg-js` - Pure JavaScript JPEG decoder\n\n## Installation\n\n```bash\nnpm install @cadit-app/potrace-ts\n# or\npnpm add @cadit-app/potrace-ts\n```\n\nOr use directly from esm.sh:\n\n```typescript\nimport { traceDataUrl, getSVG } from 'https://esm.sh/@cadit-app/potrace-ts';\n```\n\n## Usage\n\n### Trace a PNG/JPEG Data URL (Recommended)\n\nThe simplest way to trace an image. Works in Web Workers.\n\n```typescript\nimport { traceDataUrl, getSVG, THRESHOLD_AUTO, INVERT_AUTO } from '@cadit-app/potrace-ts';\n\n// Fully automatic (recommended) - auto threshold + auto invert\nconst paths = traceDataUrl(pngDataUrl);\nconst svg = getSVG(paths, 1);\n\n// Manual threshold (0-255)\nconst paths = traceDataUrl(jpegDataUrl, { threshold: 180 });\n\n// Explicit invert control\nconst paths = traceDataUrl(dataUrl, { invert: true });   // Always invert\nconst paths = traceDataUrl(dataUrl, { invert: false });  // Never invert\nconst paths = traceDataUrl(dataUrl, { invert: 'auto' }); // Auto-detect (default)\n\n// Full options\nconst paths = traceDataUrl(dataUrl, {\n  threshold: THRESHOLD_AUTO,  // -1 for auto, or 0-255\n  invert: 'auto',             // 'auto', true, or false\n  turnpolicy: 'black',\n  turdsize: 2,\n  optcurve: true,\n  alphamax: 1,\n  opttolerance: 0.2\n});\n```\n\n### Browser (with DOM)\n\n```typescript\nimport { traceUrl, getSVG } from '@cadit-app/potrace-ts';\n\n// Trace an image URL (requires DOM)\nconst paths = await traceUrl('image.png');\nconst svg = getSVG(paths, 1);\n```\n\n### Web Worker (no DOM required)\n\n```typescript\nimport { \n  traceBitmap, \n  getSVG, \n  imageDataToBitmap,\n  decodeImageDataUrl,\n  calculateAutoThreshold\n} from '@cadit-app/potrace-ts';\n\n// From ImageData (e.g., from OffscreenCanvas)\nconst imageData = offscreenCanvas.getContext('2d').getImageData(0, 0, width, height);\nconst threshold = calculateAutoThreshold(imageData); // Otsu's method\nconst bitmap = imageDataToBitmap(imageData, threshold);\nconst paths = traceBitmap(bitmap);\nconst svg = getSVG(paths, 1);\n```\n\n### SVG Images\n\nThis library traces **bitmap** images (PNG, JPEG). For SVG files, you need to first render them to a bitmap using a library like [resvg-js](https://github.com/thx/resvg-js):\n\n```typescript\nimport { Resvg } from '@resvg/resvg-wasm';\nimport { traceDataUrl, getSVG } from '@cadit-app/potrace-ts';\n\n// Render SVG to PNG\nconst resvg = new Resvg(svgString);\nconst pngData = resvg.render();\nconst pngBuffer = pngData.asPng();\n\n// Convert to data URL\nconst base64 = btoa(String.fromCharCode(...pngBuffer));\nconst pngDataUrl = \\`data:image/png;base64,\\${base64}\\`;\n\n// Trace the rendered PNG\nconst paths = traceDataUrl(pngDataUrl);\nconst svg = getSVG(paths, 1);\n```\n\n## API Reference\n\n### High-Level Functions\n\n#### \\`traceDataUrl(dataUrl, options?)\\`\nTrace a PNG or JPEG data URL. This is the recommended method for most use cases.\n\n```typescript\nfunction traceDataUrl(dataUrl: string, options?: TraceDataUrlOptions): Path[]\n```\n\nOptions:\n- \\`threshold\\`: Brightness threshold (0-255), or \\`THRESHOLD_AUTO\\` (-1) for automatic. Default: auto\n- \\`invert\\`: Invert image before tracing. Default: false\n- Plus all \\`PotraceOptions\\` (see below)\n\n#### \\`traceUrl(url, options?)\\`\nTrace an image from URL. **Requires DOM** (browser main thread only).\n\n#### \\`traceImage(image, options?)\\`\nTrace an HTMLImageElement. **Requires DOM**.\n\n#### \\`traceCanvas(canvas, options?)\\`\nTrace an HTMLCanvasElement. **Requires DOM**.\n\n### Low-Level Functions\n\n#### \\`traceBitmap(bitmap, options?)\\`\nTrace a binary bitmap. Works everywhere (no DOM required).\n\n#### \\`imageDataToBitmap(imageData, threshold?)\\`\nConvert RGBA ImageData to binary bitmap.\n\n#### \\`decodeImageDataUrl(dataUrl)\\`\nDecode a PNG/JPEG data URL to ImageData. Works in Web Workers.\n\n#### \\`calculateAutoThreshold(imageData)\\`\nCalculate optimal threshold using Otsu's method.\n\n#### \\`getSVG(paths, scale?)\\`\nConvert traced paths to SVG string.\n\n#### \\`getPaths(paths)\\`\nConvert traced paths to a readable path format.\n\n### Options\n\n```typescript\ninterface PotraceOptions {\n  turnpolicy: 'right' | 'black' | 'white' | 'majority' | 'minority';\n  turdsize: number;    // Suppress speckles up to this size (default: 2)\n  optcurve: boolean;   // Enable curve optimization (default: true)\n  alphamax: number;    // Corner threshold (default: 1)\n  opttolerance: number; // Curve optimization tolerance (default: 0.2)\n}\n```\n\n### Constants\n\n- `THRESHOLD_AUTO = -1` - Use automatic threshold (Otsu's method)\n- `INVERT_AUTO = 'auto'` - Automatically detect whether to invert based on mean luminance\n\n## Supported Formats\n\n| Format | Support | Notes |\n|--------|---------|-------|\n| PNG | ✅ Full | Including transparency |\n| JPEG | ✅ Full | |\n| SVG | ⚠️ Indirect | Render to PNG first (see above) |\n| WebP | ❌ Not yet | May be added in future |\n| GIF | ❌ No | |\n\n## License\n\nISC\n","readmeFilename":"README.md"}