{"_id":"@scanmate/ink","_rev":"36-81b5f2d827dd9572fa44f55abe53055b","name":"@scanmate/ink","dist-tags":{"latest":"0.24.6"},"versions":{"0.0.2":{"name":"@scanmate/ink","version":"0.0.2","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.0.2","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"f215389aa08d98665e8f66b3bd163fc985cacc49","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.0.2.tgz","fileCount":34,"integrity":"sha512-9wlLh4zPulo35t4Xmj/heOdIiqDddk15QIizGsPeQT3jok9hNw38U6Z8wW1+P+66x4399trFJWulMmF/77KklQ==","signatures":[{"sig":"MEYCIQDZR+DqatTjh3s0J8Qt/uiOiBbTT/sQMMrz+AljhJDiJAIhAOc+1avdMxEsn5bKG0x8NFlGd7wsjQ20VGhqcNwpsdjF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119849},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"e10ce8856811d9a45d84338b8c76447a46f5674f","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.0.2_1789835518742_0.29620184818430606","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@scanmate/ink","version":"0.0.3","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.0.3","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"100dbca1a0312c0888255225ec4ebeef9f54da3e","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.0.3.tgz","fileCount":35,"integrity":"sha512-lA7nf9PhACkbJj/5VsmkJri+mXlZGHG88f/cUMm5rkzXtBNp3AOMcqxwWqylFRnUwMCsVvIEYv8dVFIOH0u1gQ==","signatures":[{"sig":"MEUCIQCOSMeTVqJxW9EVnAFmeqR241/+91vKlJTpiPLSG8NQigIgcspaaY3xZAxVH7zLQtdpmGXHVvX3ZbV1/OFmcy7amH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDWeh9Dz64YrN/JuiW+nduVf4Y4r+QJb/9vDMfjWu7yQQIgZt78iMdHfEFLm8bOiq2MS0ZdfJ+k2EGfip7vCAUpyE8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114589},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"6f3240d0902ba9a84e6e2caaf931156b326a73e4","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.0.3_1789905842823_0.8262729347823818","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@scanmate/ink","version":"0.1.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.1.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"422553bc29433d51cd7e894b001ebd6ab4fa5d6b","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.1.0.tgz","fileCount":35,"integrity":"sha512-jl9494tLPo+laVtm4OYPhQbIeY8FAypVnXW2839LaWgJ+pYFaTkqyl3GxWdfp7phTd2d94G5/K92+ojKe/el6g==","signatures":[{"sig":"MEUCIQC/dvz91VB05oIhvwsD/kbPB82jq3Arnp/+2sheRYRmBAIgC0UKco3WeIDuPEXhB4hMFZhYPJjE4SDgJlqQRDUVoYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQz9gDaMLNFo0fWV9MV/vRBoKt9RtqGLpnmVylREJUcwIgUGQp1NmkWdW0sCx/uD3o+KcpD1i7RMUHoeqpQcEEtRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114589},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"b6832521444d459fb1a44459bc338ae412075b07","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.1.0_1789906657858_0.6994186568777501","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@scanmate/ink","version":"0.2.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.2.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"bbeeb96621010add5f85286203bb80eb12f41fc8","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.2.0.tgz","fileCount":37,"integrity":"sha512-4U7BZYEXeFwT5lcMN0/anFcxzSyoz3HGXPhV6kpQg525i5BurlPrJnCYhwlAOdvlnaYuZseRG8GKE2YXwQWRdg==","signatures":[{"sig":"MEYCIQCvaPenJMqaEgndQcei0iFSHDJ2/rEvawrJ8lPPgViuOwIhALDVP5eBmbMVEJZSY8ojRT2xcXY8imppmbK1LdlwYRsF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC+QfH1UnxX/AuT07LYPhz3zLQ1Yq4WpMhV50Ir79qkggIhAMpnRR7zbBODHOD7aN84pmzm74PSiA1aFZLlh32YJyo3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"8ad4dd6f341f70e846fdc145a59358cacff12408","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.2.0_1789916224965_0.4837425612515647","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@scanmate/ink","version":"0.2.1","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.2.1","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"dbe12129e48a6c33c44c18151ad26d775e720b49","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.2.1.tgz","fileCount":37,"integrity":"sha512-7m6U9Zj65SG4hQ/KBwcGm6iHOu8JOxCC/U6yckjhy0O5MRmFl4gnzETXc3oaV2cokBI6EaY6aXygnlobC81XEg==","signatures":[{"sig":"MEYCIQDOJHWOm9JKiWyFXk8/02SBA4fa8gyplTIIjtnsn1wylgIhAKe2fGFeWJktk40I7GZyhiprWnd7zGT7Wtk7cRMdQY7Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCSKSkpmSz2LjXn9K2CrZAbGU06zhYokci8pnp7+LCyKwIgRh78GhD+CqYgUn6bvpOjFVbdlZeRvzIG+L4k298iZfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"5302471f69a0160437bb3820293b7f7abd6cada8","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.2.1_1789923023868_0.9858365426373132","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@scanmate/ink","version":"0.3.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.3.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e2c8fade0b12cd4cf51144292e64528b3b26fb36","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.3.0.tgz","fileCount":37,"integrity":"sha512-dDEN3jUO5WXqwGDZuTqMLAuiApuWkJJ5JZZbQzHqSyGHzMnBG8N7GdDE/9dwkl+iReh2TbGyNb+YmvZQWg0Rlg==","signatures":[{"sig":"MEYCIQC/CxX0VZ/8anob2gbgwFz+vPEgNiLMZGXvct3iWnKafAIhAPIAIJ7bI5y74lAs67IiFF9/vgufVksNouxuvCWUylgl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH+hPxFvmuknIV/1BEHjitkritXwvkYoMMt1EYzLoDp+AiEA2cjwBSGHlJ+Y8SREnumuXD/8ebcfO2v04KuZd6Bzh7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"f173c0a7dda88524f26088378259e770763194e0","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.3.0_1789929771651_0.7135876030183519","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@scanmate/ink","version":"0.3.1","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.3.1","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"ec53cbc2bb6bf25bad3aa762308172e939a83e7a","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.3.1.tgz","fileCount":37,"integrity":"sha512-BPNFb0Js4QLTUDOzPX56TBshcFmIh09+kifDmsvqtKW1aJPi8+A/4FylyHjVa9kR7OHbYU54lKp+DZuSWwqLkw==","signatures":[{"sig":"MEUCIQC1EdrfK8XroSDPM/tDgkcY+SVnJPp/x/HEetzcNYH8SQIgYUNUdIdZyfqqWxbvAFABUMVmPotYYt9+R3FtQYR+xCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBgokCAfn93gmgEFeEGj//46F+GFtrbvm3D7HoSaoguWAiBTd/GNQhEQPCXWlZ1xlaqSZoZ5UED0dGisfamBIJSn1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"acaad0cf365bb9e15fc0f6109f8929a6710a72a3","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.3.1_1789930804972_0.08930955281482378","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@scanmate/ink","version":"0.4.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.4.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"113454272eda423ef86b7226656cb95d5d37b3bf","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.4.0.tgz","fileCount":37,"integrity":"sha512-prjMG2iKMjD63DTqTNtUoV+x832HlvLlNiz8SqkDSZXeEMq3GRmuGqTmiGPOLm/HHFCu0lwRSJmAlp/qJ2k2CA==","signatures":[{"sig":"MEYCIQCJMbPLtE8dakaRLb92F6AmllJMYPkTraxPw4DNB+vjpAIhAPWHyk6h0vOo+KQ2gOfFC8qPqeATFbdxrQ4jq+12ql7e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEMCHzQaOAQhGJf+3kY19JtYQz0iGEXe42QHHzr1T63A1UUCIDvrtB4Qdkp9xFBQBwcONJOZsGlvJp32SjEwMm9OWrtA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"369949358a047c7a3aea174fc32216b6fd8861dd","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.4.0_1789931912863_0.7645008779709035","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@scanmate/ink","version":"0.5.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.5.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e65aa6728bf06963855570f42c0fddc2423021e2","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.5.0.tgz","fileCount":37,"integrity":"sha512-DfzsmLm8XP+JfSVO2PGMZkvczxliIMyVGlKqsot5s1ANwPTkA69dVeOD4AX9MBDxOIF5mmN/fUUQ9dsABETdzw==","signatures":[{"sig":"MEYCIQDprPkoJyC6iEO640IXalzvlMDHmVUFtgrGV5Gl+CatqgIhAINRiQyzQRw+7MC5hhMg49cHnqPRlkAwMaLxMAGZ/2qO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE56dJRX+jHJu2DxnWEzBvpzW5Km6lSZvVQFYqtIiN3MAiApWEbTHJKRX9wSJ7M1wIdWg4QV76ky/6yUfO3mwagr2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"4d1a38a30fd0bbe465848f5159f8c28c8153ae42","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.5.0_1789943902506_0.6015890695552772","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@scanmate/ink","version":"0.6.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.6.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"1e66b3e79b0d994809f6d54f8c356d416639b40e","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.6.0.tgz","fileCount":37,"integrity":"sha512-Mnm/qBEhnk0TrN4rtBQ0wrwVR4pdM0WIRXZ+KsQBmkz+7uPdVKw9ZsicZZFPy+oSjU7OP5ItowJodiNxLXWPnQ==","signatures":[{"sig":"MEUCIQDlL4EcunNVj0emT2snlFFXrkBRw0NNgoKZv3/sHk2YuwIgGwVCEwZnln7XmAhdOc4fdpHs1C9SdHttZx/h8HwqyEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2Q+hLA2Vh+4AyVhtNjQCICEFtmRicgZr/Q09kpgW3RwIhAMGdFTesTQLw7yD1D/02XQsDv+AKHq9Sx59kYjyNR4Re","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"46cb4269c2e5978236737bee0aa421e177b17463","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.6.0_1789945151194_0.7073770715543055","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@scanmate/ink","version":"0.6.1","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.6.1","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e6cb4c04f24a841148009f2480c69cd8683bc625","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.6.1.tgz","fileCount":37,"integrity":"sha512-BdsV3Dds7PLso+qlWnPhPb5OhUiqBbSvauIvgkQIYOONCMJYPrLdJR3bANwt+lHy6XrzmQevD9S1CNdrXlLqHg==","signatures":[{"sig":"MEUCIAhL0Vzc9vRGEXgwIqBbA66I8w6k9P/pYh7PQFNdDFP7AiEAxBLNcAENlThte6k5H7TuHWZPcFp/fjCxVbRgZWHP5UQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCK6Gti8VFufHlfvGqfymKqbQRsDQNNSuy+Kg6QH5K6RQIgO0gpCKIVmGLY0x1yHFukc4oUpSGW+ilAcc3bQWGt/GA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"4f455c289cf382e6e21323b44010ab3cfa797117","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.6.1_1789972447777_0.9079636729595819","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@scanmate/ink","version":"0.7.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.7.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"98d35f68e335a1ee16fc30cc33dc1649494f3616","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.7.0.tgz","fileCount":37,"integrity":"sha512-73XijdcTFYmxQBqol8pvoLFiJcokK+ImBdcALlpfiD9MNAswUC/7KEKRXqlBpg/fwzI8r2cMtrk4c3Qyl/SDRA==","signatures":[{"sig":"MEUCIEuvSqeeGXAsV80fw9/k6nZUBIiYE1Uh1SNO0Hd0USLBAiEAvLsQavolwKU8A8RAL0ANLyM1Sd5h6EVq9Xf2PCCYNdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGX/eWTshluiZLbDqkP+NGhIsJd6aBLOgVByY66Et45QAiEAj5s7brAbqz+3OI7jm7IjFKUwYm+VkMgmdkP/K+jvGF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"1e71da1d5cb9c233f0b11b724a320697822dd56b","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.7.0_1789974649317_0.3491742976709926","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@scanmate/ink","version":"0.7.1","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.7.1","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"d79830dd65be0e876da03bd63922849973cf5f0d","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.7.1.tgz","fileCount":37,"integrity":"sha512-pSgALOl5DKa7UO9N5duK+mCRMsB5G1u2M16t17CtUNVq3mExpg1rG3G13walm29+maZqrpXVhptaomg5r31Xog==","signatures":[{"sig":"MEYCIQDciGCmoaH2JfEIj/NSXNYgIvfQQVZDGuvWG/3fDGO3AgIhANysOwNKVV3FgwyvtKv6hxJp8uucn+KX0OmFrbluLl8q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC57TVwsEEZ8YhfJsWbcds5B4Q9sPh10LL7rvAXiC1u2AIgHrSQEtSHR9TLOaOgmfZE1jcVvWxH7+1mgH6A7QWWrhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118887},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"21cfbee02535534895e9158ba76156811db2a0ec","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.7.1_1789977178862_0.006057189860014578","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@scanmate/ink","version":"0.8.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.8.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"0913aa367ee576455713cd4020f468322565d12c","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.8.0.tgz","fileCount":40,"integrity":"sha512-zakfGT5VX6oPuJJhGNakFH9ukMhskJzsbGJYrO/Pw8ZUVLz5kcPTWdAqi4QPS3Sjv17hiyid9/4cw4h7LLIJWQ==","signatures":[{"sig":"MEUCIDlu5Qosc4EyzbOuGE+3u5soj2yo67nv3HDg9Xbz50hQAiEAiHRNepUoWezvRWMDPOlknNFT1yQfdaXgMYmrPzq0UBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCHwqVSuLiFTZwqRKPMt+/2R8C3JfZ1DDc91KneWVnSmwIhAPYQCcGv+MxqeJJIL1ZExG39rg1Lctne239msJGUoc3V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123595},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"b68931810164a0a57e3a72ac6597dbda5083121a","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.8.0_1790004805942_0.2835095994517489","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@scanmate/ink","version":"0.9.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.9.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e42cd6f008c774a7722646e5f03d9207e287bc09","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.9.0.tgz","fileCount":40,"integrity":"sha512-LbTVr2NuLbw298b5TAaPS0Ap5nFrOe11zw/9K0JHvXXrZ3Y/ct/A2132hXbh8L/A55O64k4snD2SR+bN8yiSGg==","signatures":[{"sig":"MEYCIQCVuvrGUV9jZ35M+FWbHfv6d69sZhPzqNjDLZX3BXj8zQIhAMA5AqN32L0EysAgMGvkZCGK1AqBJeiIQJDhiV8sE3JQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBPaT8SfshKLPBb8HeJTcUjVrX4T2hJu00WVE4x6mvvWAiEAtpfuDtRdV5vodH7DbOMFBbwN82Vw85RvaAgtLfW17kY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123595},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"63b7c41232c8c3c8556f0d26f851a953283bed25","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.9.0_1790010863250_0.10259161956516039","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@scanmate/ink","version":"0.10.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.10.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"a620dcc402686a929ab34a7fa3179e47fc2f94ac","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.10.0.tgz","fileCount":45,"integrity":"sha512-NMK3yrnMTtXUGuW8wzhE+xDoPZEeirnllKj+f8qcJAmwjrDU2ly/ufR+SmDinZUHU5QiVAmY/Bf9PLH7zFa2xQ==","signatures":[{"sig":"MEUCIF6i+Xm3vtVA8NUtC6AXb15ZESvf58LDclVQQVRaH44uAiEA/8z7TocgRkXWcRhWq6YntReWc111rWRFsUqz3lfBq6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHG529kpIxu7ejfHvm0iXeA3gXcFnNyQaxVo1JV2e5XsAiEAve+PLUZg3NCMNyS5WO133iF7NTH/0ROwr19SMHAL6Jg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140047},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"cc04368f904ec1c20d4f8115c434d1f49d89872a","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.10.0_1790029197286_0.917440310311654","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@scanmate/ink","version":"0.11.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.11.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"01276eca7c568bb70390b798f652e061c011557e","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.11.0.tgz","fileCount":45,"integrity":"sha512-K2WHkYu1ATtE3MN+ptKI7UpVaRM182tCaieUGCEONOt+NLInPZpbtVk/vDG2CwBuqhjQOqobIyDJR33vZCLRMQ==","signatures":[{"sig":"MEQCIHlrl+G1xfhv37lnZDPzIOOPcpTnCseJVw1cmMol20lTAiBHPpV+vvxuPcHFN1Orp7YWgsKj0hkBmRyd+xiikuCgag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCY6BOfz3xYa2XLqU8Bt4oI6UNAV+u/J8llOzKa1nJa4QIhAJzsj+xzuJrMeQMNQ0iqSYZcdB5y1mZ0M6lOFfedYIL8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140047},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"e43332b148f53bc49f16aa25938aa675348e41e4","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.11.0_1790030219818_0.2922770291358203","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@scanmate/ink","version":"0.12.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.12.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"722b38eb21d3401494b74fe5d835c22d2e9b02e9","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.12.0.tgz","fileCount":45,"integrity":"sha512-EGKspfT/2h37RGQXs9W6ko2eY1bZ5PlFUuCRgMEmP9+yshivzLLAdm48LnylW2Sb1srtvSDcF7le9oVICTauug==","signatures":[{"sig":"MEQCICTcy77FZgT0H3KZ7GU9jpgjx3r/rFOZ8IMOegTq+p09AiBx8v6EkGskWo3uMrFZDH3loOAAezzLVuiz2CYStSxShA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICxLLb1Is2LF28rh3H5Hnhv4jrG5VqshQ1QxuLUZ3dgDAiEA74YTJxbbDn0ffjnzAIpJPsFj0rDSfsaGmMAd9RYwXz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140047},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"d3df6daac00aa727a1c53cf1cc0de6d19a08ffa4","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.12.0_1790031671266_0.6392777617930911","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@scanmate/ink","version":"0.13.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.13.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e461fbdf853a5b58b991c7d66c8579898ddb1fa2","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.13.0.tgz","fileCount":45,"integrity":"sha512-rxgFn3wGUURjlcebnBqjsBa4Deb0RDc1jC7NIrqD0dRlR3AHkKdTkBtj/7cj3WxQDfAR1CANJRoDetG/lGpMsg==","signatures":[{"sig":"MEUCIQCUI2okFD7LuL950Vz1PtB/RfCxF6/uNnf8dNJqJ2SBVgIgXP7eUKrrm4Cjl10Auxt6M/hmWUa4M9hHW4LKqehSNQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDzlq25fYdZgQLD8ZeYhvPGZMw473c9HmZoHjrAfkPqkwIgJFLv6LNDRQc2wHGcYrAyllB6Lz0wZGNDyPxpT1vTYdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140047},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"660b4bf01fb7aa9b14684c51a3636eabfc581bee","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.13.0_1790032751566_0.6553583900688171","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@scanmate/ink","version":"0.14.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.14.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"f170904bad7aa8b0de37c7d5a6fc5400f7c5ab70","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.14.0.tgz","fileCount":45,"integrity":"sha512-6ygDeU68XrFLgIdyoX1dlfnN9zamQlroqnxg+F9wuAQgcLw9BkiAI3Vpro7yL+QanHwOJjiW4nz6LSYikxCBJA==","signatures":[{"sig":"MEQCIGitnDFO878QRUVeg8VnV8Flzyqzbo6FMIHVGup4NLB1AiBXj9S22xnACBiMRhk0hpBgvXA9PFHDlJ8MbizDBAzELg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAzKvsxcHXo7zEVgm5ktSSpLX7vwtzgW84OhwVkOQ/QfAiEA3cJyg23R8qCUeWg/BIkXj8xUF1dHJndXTG4rawjteMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140047},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"3fec1859d00f6e23a5c6811a69abf7d59cbc805f","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.14.0_1790033378076_0.28391519010645716","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@scanmate/ink","version":"0.15.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.15.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"ea6809221cac633a67a59ffa1a66513d2dfb84f8","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.15.0.tgz","fileCount":45,"integrity":"sha512-tkA3IGh2TVGnSWBd99anYwBfvp1PWVNb0qGwrOOnq3j1Fg6S+ko/Kve5vkBC9OTobvrLVJGXK5T8jcrQVuFlOg==","signatures":[{"sig":"MEQCIDDH317DDt9da+3wlRKBBYW1ZORmNCPzj2zO/3wECIimAiAYkWE/Wge83Q9wc/0ACItPMPK01vglaD8q0znAuaOuXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAHF4tZowRdixMLdlU4LETe5g0PGXMCv8cQUFYrHqMFBAiEAorrczz9yaDPU+MgAlknyjqmqyrCB/v0kZWZAwTqfM2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141521},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"bf6e7988fa313ffbff0b54d6f7ebf387a4988011","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.15.0_1790034167429_0.26391360868702685","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@scanmate/ink","version":"0.16.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.16.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e7136f7415f5c329763f434ed995c46326b190f5","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.16.0.tgz","fileCount":45,"integrity":"sha512-zVLj6HPeBQCPQ8mV4zdO8HjVNAf4oecG+SBhmZ/aLcDyJ2GcZVLeD3THHH91NdlYO6Mm295mr7tQV1SvcCWrAw==","signatures":[{"sig":"MEYCIQCKffwKiFwJbXmJ/NxGHChBP2CtEJoeMLMLbTCziflPYwIhANERUxNRb7Li4kMezkKABNFE6oOHLoLp1bGf9n+EQDMm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDAwd5ceQBwhJZpurkowLoHGrgP//Al97Y0ZgOEWpMUKwIhAMjM4J3d0MrG0x7e1vDrWUsijeAl8+WrxohwUZJsO5Fn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141560},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"6224367a62837394cae68aaa830afb62bed9020c","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.16.0_1790091529417_0.6200741470881617","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@scanmate/ink","version":"0.17.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.17.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e333618544312e879c40ba8944ae36b75b559544","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.17.0.tgz","fileCount":45,"integrity":"sha512-kngQBkBTWxa5WbBpHBseKY+oI0+Si2Kc2iFvSE7pIqI5aDRWI+H0kTTA1Rv8C2ijcaTH57Dgo+wzfgvImCvUkQ==","signatures":[{"sig":"MEUCIQDPHF9OLS+PiF4swr1pytil4L7jf1/fz+vG1UeDKLgeOgIgcZgtEjuRd9XmcJmaV2B6tVGGnQqwSdYc7i3iJol23Uk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCt8xZcJAN7S+mboIQWn6wwnksHocyDOJGxQLD7CX2BYQIgTwqtsli8O6R0N+dwpgU+SIghdTBv1k2UUoxkwC/mf1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141560},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"81658e9affcbb2cd6530deb74bd3b94e8bd65ca2","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.17.0_1790093823012_0.2071044690470054","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@scanmate/ink","version":"0.18.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.18.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"b3d0896ba8d1703e04a6abad6d3bbcf85ddfd15d","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.18.0.tgz","fileCount":45,"integrity":"sha512-2jrhUCCYD3ixf3atlPUpL0DUZUfGpeKmMLwhnPzqHwKpDxmdP1zDTdD/aX6SFVL5W33KUhNjFguJ8xk6WkkUmA==","signatures":[{"sig":"MEQCIHK2WspjuWSBAgBC554+npxHdiqWNmGgcPYNrvVrf4O0AiBoFrM9Tw5YxQuKjS9CIeHKggB0Fa6m1Kf7uGG0+tM4qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCoDZq6uFix28J7ShpdQOlkdzI9Oc6wqIGYPZBmOrVPIQIhANn8rFO6c0Xtl9RSTRa9YtM3bUGJUKcefCUbf6mmqzxF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141564},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"e2332bc60643b9c11555841b73fd0f8809031f01","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.19.1","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.18.0_1790095205974_0.7963549040904989","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@scanmate/ink","version":"0.19.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.19.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"4a7e65c126da0eb83d4566e2d4ace50d429231fd","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.19.0.tgz","fileCount":45,"integrity":"sha512-GBHFELDdcvITDWsftR+k/FZo0pQXuTC8+v3AvFjT74JjpQzXxQKEQW3Kt3M50dxfKLBFC8U2L+xMmau+AU9VEw==","signatures":[{"sig":"MEQCICdo6+T3g/T+xxxaqT5xgcgKlj7+k6dWO6QnzR3hAwLMAiBBssJqOe8TS2GxW2eim1YTgE//PaYqQ9XJjfHaRwm/2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDoR+sFvoqi4Y3MkTX7s4t4LbKaLsdiIdp0jL8IgB47vgIhAKKgxKJ6hzA4wQxpkV7/SAo4Rb7FdhVWFbTaMo0eTjdp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141564},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"6a2cacff9e5bd99b5415a926f51f690f06bbadd7","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.19.0_1790114679988_0.4160243624779312","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@scanmate/ink","version":"0.20.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.20.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"830526e969af09eb3573243d021293bc8fcb1901","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.20.0.tgz","fileCount":45,"integrity":"sha512-ASC6TBvEbulcsfa7nI9dKl7mx0ILc/KsaOmxOkwECDA6QsUulhGBQTztibdvAAJZBOr+IREg7/tMxlp5YUUbJg==","signatures":[{"sig":"MEYCIQCP6S0xd97X5Q2bRipvfz2FBAlK/OwpLP315J7zrnEzsQIhANyBAsDJ7LTSS4QkrHJoI0/uzEuESFviLbkUsCHksL66","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC0w2UEn3tT/j2udAMT2tSB7aoAfa8qkoy1S22+B8xzbgIhAKeg/asgEnak4aE5YjUGYYCtnBzBMSzvhAIkAtQ4QaZ7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141564},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"bbc426c7b9982fc3328ee83ef012c720237b3ef1","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.20.0_1790115625059_0.33616208850280027","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@scanmate/ink","version":"0.21.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.21.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"a5de675d9def7ac1b93ef3b6cabe957cb7ffaeb3","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.21.0.tgz","fileCount":45,"integrity":"sha512-upOofjC1+h4WMEkxJKbJR6NaVASlekg8Ta5P9lEg6pC7RbSv7rDS2ZhcEMzL6fCu+z3OfSAfup/wnpIPuL6hSw==","signatures":[{"sig":"MEQCIAJIvkyXdIod+lfA6c2jyU9jQlW+4ZvkULR+1gp5UFobAiAHymCOL1fl5WV5GA4s5pADBctSQ1mz2pVB9DL5RA/8eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCcFprbJafuonS1lkGNRxNVvB/2CTcCNqhIIvfbZzUL8QIhAJmwfpbf8dIx+r/0tR0EzG0hSZ6Vvx6Mz+XLvjKMl6mL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141564},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"19d45824529dce5af3e27a20d22e94a3116b365d","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.21.0_1790121468024_0.03164879517609598","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@scanmate/ink","version":"0.22.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.22.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"93211a59251a569c5305933ae4fd1b335de67420","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.22.0.tgz","fileCount":45,"integrity":"sha512-jFm8HR9hovYca+s7q9bYDN+6bfrE6eanguBn5s/TsawflrVdPz2WMMuxOiYtlJCLzmzhyRPlWC9KZGB28z4Cvg==","signatures":[{"sig":"MEQCIBapd95ecG8dyzPA2CNUSbTK0F3vJftdOU3ZyeZpqQWEAiAGGbmkOsXxi0y60Yg7izL8KJ/MbVDzHe7b/432jLrglQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE1cxrobFsOYPLBkrbNCMBvH1jYWJFkUiGKhmmLjcDfYAiAb7y8gQwCI6gJyyLXKWOqy3XiZ7BchlVUrmMs6TykAig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141564},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"5037ebad4d34bd6c26044eb88506d207049c9afa","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.22.0_1790123491355_0.8460692024585716","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@scanmate/ink","version":"0.23.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.23.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"79874142ffda640cdda7225be39fc241fe6eb952","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.23.0.tgz","fileCount":45,"integrity":"sha512-bBT9sUfFWabgqe0PlsMuuORECL4rNXjEKRBuyU/0+VCC44GFiT5a+fdaiGWGj96baR3Aqk4ihyPbalwAfxGA6g==","signatures":[{"sig":"MEYCIQCuU1W1PNw1OvH7FU0NSETbMcsvT+0hGRYjCXCrOWqaEgIhAJp1lOSAm7UbI1K7TeWBxhDpYIyk4EhElJaVUX3X9UOm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE/8FVq8A5jns/W8Rkf5Lal8Gwnz+6UFBa3+gmIJ7ODBAiBFcJEBGTprRlKezazDeWGDa1frj3pzUFmwUYzPxhPPQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141564},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"558b5d662571709c1fe1b2bc890e28291e8cc4d6","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.23.0_1790158991220_0.5469296042569343","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@scanmate/ink","version":"0.24.0","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.24.0","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"04759a0b4afafa77fbbbc548af0d3b10d1e24030","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.0.tgz","fileCount":45,"integrity":"sha512-JtKjsdw29j+x/ImBU49I2+GEL80XMeE9qYusAxa7B9rlj6gdJ1nxw8eZRRf9TcTSMV1NvTSHu1GjvLZ2LYes+g==","signatures":[{"sig":"MEYCIQCRJg6p03YGUmy2VnNu9/aSZ/jFV8tmHBBLoNjvZXheYAIhAIHjS+GypjEVkjDxsghDd9igidvUi4A7H89vWzFKp/CJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDcRUWkfxSguo0jc6G/H4jVXqF3TppIu/BZNWLoTPKnRgIgH/21WH9RqPwigAOxwN9Y/Eq+ufToiJuIpCUGlZM/i70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143619},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"b7da30949033f3744721289d5368bc2396783e43","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.24.0_1790256274095_0.1553640572991235","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"@scanmate/ink","version":"0.24.1","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.24.1","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"1994c5e96f1cc77b1c828528ee4d14e610c10aad","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.1.tgz","fileCount":45,"integrity":"sha512-1inkrR/AcpmJaxt3ZHbKi/3JadWABiJfBkOH++1pNcmef81r4MXys1hsMUPiLx5gnTHZcuAkljQWveTKevFzww==","signatures":[{"sig":"MEUCIH8q5V1Q54TODJXDA+Se2zfxfgWvrf/3KyRyu9SI5ocaAiEAkJQKEXYvdayqPuHQjjRVyGdfkk8/CVUSrUG6HoN3Vl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDSUV5YQTxdpEWKYsM4uk8ykJsm45IU/CqI6nuGpd/uPAiEAtOQH38nffDW/tHRX6w/Fr0YFVkp3ab0xVJvTfYhp5k0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143619},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"1235411c0973fce1e3d5f3370b54554e0b24451a","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.24.1_1790377433022_0.08157493176594821","host":"s3://npm-registry-packages-npm-production"}},"0.24.2":{"name":"@scanmate/ink","version":"0.24.2","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.24.2","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"e8d99cd2cd35339ec27e35c0eac436b09d64709e","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.2.tgz","fileCount":45,"integrity":"sha512-hkGOs9DRhtOydT7nCt9rGBXP6EWU83rT2I4T9afnadHmOuFfqZqcFm4EWY3oI4dIPEeca88wKGjdYdASGCKeGg==","signatures":[{"sig":"MEYCIQCRsGej5sdtls4VBPIGEfo/e4xUlC5KmMcJeQYsxaYxNwIhAOhqdgTvXBcV0u6oMZNW5g4FAsJpDykSG7CB2Ilrt8LK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDg9MVND4wzqEVPloIV8GxNb3u8YgSa0l/Z9cr4owY22AiAw9X0v01ZRgfn9y/3Cu0H5joHF7TakGECila93GuJYsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143619},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"9e8096ca888a558fc478133400371b660a1b5bb2","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.24.2_1790381730576_0.5806672497553038","host":"s3://npm-registry-packages-npm-production"}},"0.24.3":{"name":"@scanmate/ink","version":"0.24.3","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.24.3","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"cd10133e9cc9ceed1ff1f3d9571896d052cf7483","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.3.tgz","fileCount":45,"integrity":"sha512-BTr8Ch24RwDfr3pmNLSRGLit5wu0GdIXMOpqU1KYshRa9mp9HwsC/Evo48FGjgIIEJWdiQ5uJdCC9L+GuI6pgw==","signatures":[{"sig":"MEUCIQC5h6PH8s1lDe1JSGNd4mFi1C6uaIte438RSYZmGvqv3QIgXAhquKUSwqduL9ZycKcZb+x63ESFc/TxoIf0bAtKl+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH5w4PCNrz4m8PR3InCuWVML9edgYWKRDZ3B2xrI+OvaAiAzd+leobIOB826k0E9lhTzeKudwGKeuys/sy1M/fM9/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143619},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"c35471f79fc2a0046cb2df616ff7c330654f02fd","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.24.3_1790383680378_0.224448919291111","host":"s3://npm-registry-packages-npm-production"}},"0.24.4":{"name":"@scanmate/ink","version":"0.24.4","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.24.4","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"c9b724cae611e35ab4a1d532ad41a7be20861f1f","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.4.tgz","fileCount":45,"integrity":"sha512-RJlVx3XaMWC2urc4LMhh08Hlkhhn6zz3fkiJdhfy4EsIMdNpvc3a7YkrvVwyvTeykYi0LtH204xt8gbY3f8kKQ==","signatures":[{"sig":"MEUCIQDdKjrZlFAnPdn+LrICnpVmDL0TeUZtG4Oqy5LZuyR6DQIgNFcyc4kRE7c+PjtIIvJQH2r+kxv7a8vx0jDnd6llgbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGHRcqL/950KmLuAauEoa1qNLWkfC73DTa0zsyJWgMtDAiB1pZo3GzLbTGNqFuT8JPQt3lMp5rkSTsW/zZqxAsw5jw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143619},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"39c9e1e861190a1d5a08dc12223ef6ebac85a500","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.24.4_1790404431820_0.21722177221235417","host":"s3://npm-registry-packages-npm-production"}},"0.24.5":{"name":"@scanmate/ink","version":"0.24.5","keywords":["scan","image-processing","raster","homography","fft","document"],"author":{"name":"Eduardo Russo"},"license":"MIT","_id":"@scanmate/ink@0.24.5","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"9fc16cd955319cd4e8e25f040f2ad41a3f881b86","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.5.tgz","fileCount":45,"integrity":"sha512-RL6BA65ayaODetP5zisqTeFsoKsbmM1QhWg4S2tK1/zV0gznn+pifMDSX2nN9KtbF10ga88iI7kUqVbzqWkXAw==","signatures":[{"sig":"MEYCIQDiK6OS9ge1+vU2FxOOVHVdI5iPYmOkxNNQsre2ds7tDgIhAKlZP+HT+V7GbX6gQsizRHEbtzpfoFPAkRyoMX+jMiPs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCvusM/2W3fASHDrjuiE8Apkh2cz+TRSP0x2hgI3HfMBQIgRJVkiW4tJDxTRL1pjJfkX0dUh2sJq02ZOjTqYzamxuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143619},"main":"./dist/index.esm.js","type":"module","types":"./dist/src/index.d.ts","module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"6f8a2aa7dd3f5b057eb5fe37f6dd171ae9aae456","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ink_0.24.5_1790405054626_0.9197606204094435","host":"s3://npm-registry-packages-npm-production"}},"0.24.6":{"_id":"@scanmate/ink@0.24.6","bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"dist":{"shasum":"b05354fe9f70bf61dc21a70eda3358fb06ab7d81","tarball":"https://registry.npmjs.org/@scanmate/ink/-/ink-0.24.6.tgz","fileCount":45,"integrity":"sha512-7uIISDH8vyHFzaCoJmgY2urkHzf1dEa+1BvRWCrPFbm3HfRBHmVk/SMGagmuDlp0MdCOoBTJBGR4dlLJlX4NPw==","signatures":[{"sig":"MEQCIBxOaNwKN4+udSL562nUEKTZOqf6xhGO432Vw3hDwBekAiAM14ikbigovDmtamU25o053ogEFlwQ/fQa+qCDflM3Rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGfGkXG2nC+PmmOzPmQ0jlMHf89hB409cK9fKhssZ04tAiEAncML0Yb9/VMsDGLrGO/4zlbEIkP3y0njsTTRv+zPYkQ="}],"unpackedSize":143619},"main":"./dist/index.esm.js","name":"@scanmate/ink","type":"module","types":"./dist/src/index.d.ts","author":{"name":"Eduardo Russo"},"module":"./dist/index.esm.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.esm.js"},"./package.json":"./package.json"},"gitHead":"a92c7313fa052cd4a732b57d5c5f2a8617f434f7","license":"MIT","version":"0.24.6","_npmUser":{"name":"russoedu","email":"russoedu@gmail.com"},"homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","keywords":["scan","image-processing","raster","homography","fft","document"],"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"_npmVersion":"11.20.0","description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","directories":{},"maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"sharp":"^0.35.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_0.24.6_1790410480763_0.6407507285354053"}}},"time":{"created":"2026-09-19T16:31:58.574Z","modified":"2026-09-26T08:14:41.042Z","0.0.2":"2026-09-19T16:31:58.882Z","0.0.3":"2026-09-20T12:04:02.919Z","0.1.0":"2026-09-20T12:17:37.941Z","0.2.0":"2026-09-20T14:57:05.034Z","0.2.1":"2026-09-20T16:50:23.948Z","0.3.0":"2026-09-20T18:42:51.742Z","0.3.1":"2026-09-20T19:00:05.049Z","0.4.0":"2026-09-20T19:18:32.955Z","0.5.0":"2026-09-20T22:38:22.586Z","0.6.0":"2026-09-20T22:59:11.272Z","0.6.1":"2026-09-21T06:34:07.890Z","0.7.0":"2026-09-21T07:10:49.410Z","0.7.1":"2026-09-21T07:52:58.943Z","0.8.0":"2026-09-21T15:33:26.014Z","0.9.0":"2026-09-21T17:14:23.340Z","0.10.0":"2026-09-21T22:19:57.371Z","0.11.0":"2026-09-21T22:36:59.908Z","0.12.0":"2026-09-21T23:01:11.354Z","0.13.0":"2026-09-21T23:19:11.669Z","0.14.0":"2026-09-21T23:29:38.173Z","0.15.0":"2026-09-21T23:42:47.528Z","0.16.0":"2026-09-22T15:38:49.515Z","0.17.0":"2026-09-22T16:17:03.099Z","0.18.0":"2026-09-22T16:40:06.066Z","0.19.0":"2026-09-22T22:04:40.061Z","0.20.0":"2026-09-22T22:20:25.163Z","0.21.0":"2026-09-22T23:57:48.132Z","0.22.0":"2026-09-23T00:31:31.431Z","0.23.0":"2026-09-23T10:23:11.314Z","0.24.0":"2026-09-24T13:24:34.185Z","0.24.1":"2026-09-25T23:03:53.111Z","0.24.2":"2026-09-26T00:15:30.654Z","0.24.3":"2026-09-26T00:48:00.464Z","0.24.4":"2026-09-26T06:33:51.903Z","0.24.5":"2026-09-26T06:44:14.725Z","0.24.6":"2026-09-26T08:14:40.851Z"},"bugs":{"url":"https://github.com/russoedu/scanmate/issues"},"author":{"name":"Eduardo Russo"},"license":"MIT","homepage":"https://github.com/russoedu/scanmate/tree/main/packages/ink#readme","keywords":["scan","image-processing","raster","homography","fft","document"],"repository":{"url":"git+https://github.com/russoedu/scanmate.git","type":"git","directory":"packages/ink"},"description":"The pixel and geometry kernel behind ScanMate: raster codec, ink separation, warps, homographies, FFT and the pipeline contracts.","maintainers":[{"name":"russoedu","email":"russoedu@gmail.com"}],"readme":"![scanmate ink](./assets/scanmate-ink.svg)\n\n# `@scanmate/ink`\n\nThe pixel and geometry kernel the rest of ScanMate is built on: separating ink from paper, moving pixels from one frame to another, measuring how alike two pages are — and the contracts the pipeline passes along.\n\n![a scanned form, its ink map, and the binarised mask](./assets/ink-separation.jpg)\n\n*The same lines three ways: as scanned under uneven light, divided by the paper behind them, and thresholded. Made from the [IRS Form W-9](https://www.irs.gov/pub/irs-pdf/fw9.pdf) (a work of the United States government, in the public domain).*\n\n## Install\n\n```bash\nnpm install @scanmate/ink\n```\n\n```ts\nimport { binarize, correlation, decodeImage, inkMap, toGrayscale, warpRaster } from '@scanmate/ink'\n\n// The three rows of the picture above, in order:\nconst scan = await decodeImage('fw9-returned.jpg')  // any format libvips reads, EXIF rotation applied\nconst ink = inkMap(toGrayscale(scan))               // lighting divided out: stroke against paper\nconst mask = binarize(ink)                          // Otsu, on the page's own histogram\n\n// And the rest of the kernel:\nconst straight = warpRaster(scan, matrix, 1700, 2200)   // inverse-mapped, onto a fixed canvas\ncorrelation(inkA, inkB)                                  // how well two pages' ink agrees\n```\n\n## What is in it\n\n| | |\n|---|---|\n| **raster codec** | `decodeImage`, `encodeImage`, `resampleRaster`, `blurRaster`, `readImageMetadata`, `countPages`. PNG, JPEG, TIFF, WebP, HEIF, AVIF, GIF; EXIF rotation applied; density and page count reported. |\n| **ink separation** | `inkMap`, `toGrayscale`, `otsuThreshold`, `binarize`, `dilate`, `coverage`, `boxBlur`, `integralImage`. |\n| **geometry** | `warpRaster`, `warpGray`, `resizeGray`, `downscaleGray`, `sampleGrayBilinear`, and 3×3 matrices: `multiply`, `invert`, `decompose`, `rebase`, `similarity`, `translation`, `isPlausible`, `applyPoint`. |\n| **similarity** | `correlation`, `intersectionOverUnion`. |\n| **content geometry** | `contentExtent`, `estimateSkew`, `profileSharpness`. |\n| **frequency** | `fft1d`, `fft2d`, and the helpers phase correlation needs. |\n| **deterministic sampling** | `createRandom`, `gaussian` — so RANSAC and BRIEF give the same answer every run. |\n| **synthetic documents** | `createSyntheticDocument`, `drawSignature`, `drawTick`, `simulateScan`, `fillRect`, `drawLine`, `strokeRect`. |\n| **pipeline contracts** | `PageImage`, `ScanPage`, `AlignedPage`, `ReadablePage`, `TextRun`, `PdfTextRun`, `PageRegion`, `StageEvent`, `ProgressCallback`, `ScanmateRect`, `ScanmateOrientedRect`, `Matrix3`. |\n| **text normalisation** | `normaliseText`, `tokenise`, `DEFAULT_NORMALISE`, `foldDiacritics`, `foldConfusables`: the one normaliser every package compares text with - OCR's words, the content search, and the labels fields are found by. |\n| **what a stage accepts** | `ScanmateSource`, `ScanmateBinarySource`, `ImageWithResolution` - one union for every stage, instead of one per package. |\n\n## The two ideas that matter\n\n**Ink is a ratio, not a difference.** A scan's lighting is multiplicative: paper in shadow reflects a fraction of what paper in light does. `inkMap` divides each pixel by a wide local box mean — a sixteenth of the page, computed from an integral image, clipped at the page edge rather than extended — so a shadow flattens out and what is left is stroke against paper. Clipping matters: extending the border would smear a scanner's dark edge strip inward as \"paper\" and invent ink where the page ends.\n\n**Warps are inverse-mapped onto a fixed canvas.** For each output pixel, ask where it came from. Forward mapping leaves holes; inverse mapping cannot, and a fixed canvas is what makes a scan land on the *original's* page rather than on a canvas sized to fit it. Minifying prefilters first, so shrinking a 300 dpi scan does not alias text into stripes.\n\n## One dependency, at the boundary\n\n`sharp` — prebuilt libvips, nothing to install on the host — and only for decoding, encoding, resampling and metadata. Every algorithm above is plain TypeScript over typed arrays, because libvips has no image ÷ image division, no Otsu, no clipped-area box mean, its convolution extends the border instead of dividing by the real window area, its affine transform cannot render onto a fixed canvas, and a float round trip through it truncates.\n\n`Raster` is `Uint8ClampedArray` RGBA, which is sharp's native format and round-trips byte-exact; `GrayImage` is `Float32Array` and never crosses that boundary.\n\n## Synthetic documents, for tests with ground truth\n\n`createSyntheticDocument` makes a form with known field rectangles; `drawSignature` and `drawTick` put ink in known places; `simulateScan` turns, rescales, blurs, adds noise and uneven lighting with a fixed seed. Every package downstream tests against facts it constructed — \"the signature is in this rectangle and nowhere else\" — rather than against golden images.\n\n## How it decides\n\n[`documentation/algorithms.md`](./documentation/algorithms.md) explains each primitive: what it measures, why it is built that way, every constant, and why the codec boundary sits where it does.\n","readmeFilename":"README.md"}