{"_id":"@argos-ci/mask-fingerprint","_rev":"6-8ed67b5ac333dc49bcdf1375ec42769c","name":"@argos-ci/mask-fingerprint","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"@argos-ci/mask-fingerprint","version":"0.0.1","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"license":"MIT","_id":"@argos-ci/mask-fingerprint@0.0.1","maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"homepage":"https://github.com/argos-ci/mask-fingerprint#readme","bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"dist":{"shasum":"9c9c66d833daaed7fe8f44b8c29345c69e125300","tarball":"https://registry.npmjs.org/@argos-ci/mask-fingerprint/-/mask-fingerprint-0.0.1.tgz","fileCount":5,"integrity":"sha512-sb9CZmgokyH2PQ3mRNEmxxwOS2iJOVkOeXzbMOKexoD7XBRC7Lu5SmFyEVnX4b22YXX8OM9T9KOOB2AWJSaGzg==","signatures":[{"sig":"MEYCIQDCDi7JMJxVDvpg8CJ49hbrJ/RVAiU7jCtToFC1QY5aAQIhAPA2Ng/B6MBlIgdxEnG9c5npUiQwknZP0PLOkAYqjUSX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@argos-ci%2fmask-fingerprint@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32669},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"mask-fingerprint"},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">24.0.0"},"gitHead":"89c412c2f4df24c76a11925f6befbefdb5e35a91","scripts":{"lint":"oxlint .","test":"vitest","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"neoziro","email":"berge.greg@gmail.com"},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git","type":"git"},"_npmVersion":"11.6.2","description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.0-dev.1005+sha512.91f84a392eea348ea4852a182912d2520273a4336f933b78cc44bc931eb999923c097e9433a9b355adc1f725725ea99082fc9f032a559df832632e764c92c798","devDependencies":{"chalk":"^5.6.2","oxlint":"^1.14.0","vitest":"^4.0.16","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^5.9.2","@types/node":"^25.0.3","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.0.35","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@argos-ci/mask-fingerprint-darwin-x64":"0.0.1","@argos-ci/mask-fingerprint-darwin-arm64":"0.0.1","@argos-ci/mask-fingerprint-linux-x64-gnu":"0.0.1","@argos-ci/mask-fingerprint-win32-x64-msvc":"0.0.1","@argos-ci/mask-fingerprint-linux-arm64-gnu":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/mask-fingerprint_0.0.1_1768162132830_0.07568206756635121","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@argos-ci/mask-fingerprint","version":"0.0.2","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"license":"MIT","_id":"@argos-ci/mask-fingerprint@0.0.2","maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"homepage":"https://github.com/argos-ci/mask-fingerprint#readme","bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"dist":{"shasum":"1f19da04b5462be12d50270218f4f840144f1f29","tarball":"https://registry.npmjs.org/@argos-ci/mask-fingerprint/-/mask-fingerprint-0.0.2.tgz","fileCount":5,"integrity":"sha512-z8/pwE+PnMstIYGV4CtJAUvHhJQznJbs5lc6NZx7qR8XYLSvihAOqr0KB5uzyG+QabIR9y3IgA4h0jxZxqa0eQ==","signatures":[{"sig":"MEUCIQDl0rQWMHeOoXCGs53bKM6b7M7IUn2KNqZqd6h5p0By8wIgPvbYSSq9J5vjgITZchoY4uLBSv6Wpa6Ckmo97ECWY28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@argos-ci%2fmask-fingerprint@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32678},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"mask-fingerprint"},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">24.0.0"},"gitHead":"424032c2a96fa48d41b5dfd3d2a2724bc7ad145e","scripts":{"lint":"oxlint .","test":"vitest","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a70f08f4-08cb-40e5-9a98-f811e1937459"}},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git","type":"git"},"_npmVersion":"11.6.2","description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.0-dev.1005+sha512.91f84a392eea348ea4852a182912d2520273a4336f933b78cc44bc931eb999923c097e9433a9b355adc1f725725ea99082fc9f032a559df832632e764c92c798","devDependencies":{"chalk":"^5.6.2","oxlint":"^1.14.0","vitest":"^4.0.16","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^5.9.2","@types/node":"^25.0.3","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.0.35","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@argos-ci/mask-fingerprint-darwin-x64":"0.0.2","@argos-ci/mask-fingerprint-darwin-arm64":"0.0.2","@argos-ci/mask-fingerprint-linux-x64-gnu":"0.0.2","@argos-ci/mask-fingerprint-win32-x64-msvc":"0.0.2","@argos-ci/mask-fingerprint-linux-arm64-gnu":"0.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mask-fingerprint_0.0.2_1768292010017_0.036085646769882684","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@argos-ci/mask-fingerprint","version":"0.1.0","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"license":"MIT","_id":"@argos-ci/mask-fingerprint@0.1.0","maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"homepage":"https://github.com/argos-ci/mask-fingerprint#readme","bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"dist":{"shasum":"146779edbb2cae53a0bc88e568f812f521bb9970","tarball":"https://registry.npmjs.org/@argos-ci/mask-fingerprint/-/mask-fingerprint-0.1.0.tgz","fileCount":5,"integrity":"sha512-8FAbz80sVV4Hh+mQXw9TzxGCfg4NUgxEATqWwMOEeHmLdGaef8PiRvt0DcSwGGfMK0Hx+F/YJvha5XCN0XO0+g==","signatures":[{"sig":"MEQCIBAwFfIrdPPjSd1YzV/1kHDzPSON9KOQt5Uia9cWTBz1AiB2rR1t/62Yn4RvW2htiG7kPAX9O7h7kyrqcxMwIKkbuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@argos-ci%2fmask-fingerprint@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32724},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"mask-fingerprint"},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">24.0.0"},"gitHead":"08cade5e78ae09c906f9f49347592e02c86b5ad1","scripts":{"lint":"oxlint .","test":"vitest","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a70f08f4-08cb-40e5-9a98-f811e1937459"}},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git","type":"git"},"_npmVersion":"11.6.2","description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.0-dev.1005+sha512.91f84a392eea348ea4852a182912d2520273a4336f933b78cc44bc931eb999923c097e9433a9b355adc1f725725ea99082fc9f032a559df832632e764c92c798","devDependencies":{"chalk":"^5.6.2","oxlint":"^1.14.0","vitest":"^4.0.16","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^5.9.2","@types/node":"^25.0.3","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.0.35","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@argos-ci/mask-fingerprint-darwin-x64":"0.1.0","@argos-ci/mask-fingerprint-darwin-arm64":"0.1.0","@argos-ci/mask-fingerprint-linux-x64-gnu":"0.1.0","@argos-ci/mask-fingerprint-win32-x64-msvc":"0.1.0","@argos-ci/mask-fingerprint-linux-arm64-gnu":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mask-fingerprint_0.1.0_1768295594614_0.342199527412971","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@argos-ci/mask-fingerprint","version":"0.1.1","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"license":"MIT","_id":"@argos-ci/mask-fingerprint@0.1.1","maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"homepage":"https://github.com/argos-ci/mask-fingerprint#readme","bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"dist":{"shasum":"704fd34dea196afb7f154d03fcd7effb2d8e7fc8","tarball":"https://registry.npmjs.org/@argos-ci/mask-fingerprint/-/mask-fingerprint-0.1.1.tgz","fileCount":5,"integrity":"sha512-CeDan81rfkRdpdNQv7M89HLZTLCjfKYT3TLoYaRKlcTEGQdB9+VpwZ3t5H0P4W9a4Rx0lqSxvEfX9Ti6ZLuH8g==","signatures":[{"sig":"MEUCIBfA8CI8GkVrJadyYxLeQEntIjAP81hogIkWITVQDTm0AiEAtMuaNamqthpjiqG5l+7pTqy/X+BX9e1/eqXxZFQiDro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@argos-ci%2fmask-fingerprint@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32723},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"mask-fingerprint"},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">24.0.0"},"gitHead":"51c8aca479f3be5e3d962b662f765343dce262d5","scripts":{"lint":"oxlint .","test":"vitest","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a70f08f4-08cb-40e5-9a98-f811e1937459"}},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git","type":"git"},"_npmVersion":"11.6.2","description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.0-dev.1005+sha512.91f84a392eea348ea4852a182912d2520273a4336f933b78cc44bc931eb999923c097e9433a9b355adc1f725725ea99082fc9f032a559df832632e764c92c798","devDependencies":{"chalk":"^5.6.2","oxlint":"^1.14.0","vitest":"^4.0.16","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^5.9.2","@types/node":"^25.0.3","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.0.35","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@argos-ci/mask-fingerprint-darwin-x64":"0.1.1","@argos-ci/mask-fingerprint-darwin-arm64":"0.1.1","@argos-ci/mask-fingerprint-linux-x64-gnu":"0.1.1","@argos-ci/mask-fingerprint-win32-x64-msvc":"0.1.1","@argos-ci/mask-fingerprint-linux-arm64-gnu":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/mask-fingerprint_0.1.1_1768296022168_0.22498927713670658","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@argos-ci/mask-fingerprint","version":"0.1.2","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"license":"MIT","_id":"@argos-ci/mask-fingerprint@0.1.2","maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"homepage":"https://github.com/argos-ci/mask-fingerprint#readme","bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"dist":{"shasum":"cdf42a54245f0704ad43f0ded4fcd1f20d7485c1","tarball":"https://registry.npmjs.org/@argos-ci/mask-fingerprint/-/mask-fingerprint-0.1.2.tgz","fileCount":5,"integrity":"sha512-Pf3JzHlsZbyD6B6kRXnqK8rxdokdAllU94aUwDTzOBx31oq9YzJ9LBcNe72eOqYbFTOT21zYo63wMcYTWWtgdQ==","signatures":[{"sig":"MEUCIFs4jwwnb3GgChea2ETSK1yjauN7G7hMukw6GF23C/WrAiEA8YlrSvghyUpwTMo6bWlp6nUJK1T1gBGvjk3WPiskHys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@argos-ci%2fmask-fingerprint@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32743},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"mask-fingerprint"},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">24.0.0"},"gitHead":"3edcbbb3baa89d0bd2b9adfe472042f7edbf6852","scripts":{"lint":"oxlint .","test":"vitest","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a70f08f4-08cb-40e5-9a98-f811e1937459"}},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git","type":"git"},"_npmVersion":"11.6.2","description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.0-dev.1005+sha512.91f84a392eea348ea4852a182912d2520273a4336f933b78cc44bc931eb999923c097e9433a9b355adc1f725725ea99082fc9f032a559df832632e764c92c798","devDependencies":{"chalk":"^5.6.2","oxlint":"^1.14.0","vitest":"^4.0.16","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^5.9.2","@types/node":"^25.0.3","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.0.35","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@argos-ci/mask-fingerprint-darwin-x64":"0.1.2","@argos-ci/mask-fingerprint-darwin-arm64":"0.1.2","@argos-ci/mask-fingerprint-linux-x64-gnu":"0.1.2","@argos-ci/mask-fingerprint-win32-x64-msvc":"0.1.2","@argos-ci/mask-fingerprint-linux-arm64-gnu":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/mask-fingerprint_0.1.2_1768395544054_0.5419937304974181","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@argos-ci/mask-fingerprint","version":"0.1.3","description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","main":"index.js","repository":{"type":"git","url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git"},"license":"MIT","browser":"browser.js","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"napi":{"binaryName":"mask-fingerprint","targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","aarch64-apple-darwin"]},"engines":{"node":">24.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"artifacts":"napi artifacts","build":"napi build --platform --release","build:debug":"napi build --platform","format":"run-p format:prettier format:rs format:toml","format:prettier":"prettier . -w","format:toml":"taplo format","format:rs":"cargo fmt","lint":"oxlint .","prepublishOnly":"napi prepublish -t npm","test":"vitest","preversion":"napi build --platform && git add .","version":"napi version"},"devDependencies":{"@emnapi/core":"^1.5.0","@emnapi/runtime":"^1.5.0","@napi-rs/cli":"^3.2.0","@oxc-node/core":"^0.0.35","@taplo/cli":"^0.7.0","@tybys/wasm-util":"^0.10.0","@types/node":"^25.0.3","chalk":"^5.6.2","lint-staged":"^16.1.6","npm-run-all2":"^8.0.4","oxlint":"^1.14.0","prettier":"^3.6.2","tinybench":"^6.0.0","typescript":"^5.9.2","vitest":"^4.0.16"},"prettier":{"printWidth":120,"semi":false,"trailingComma":"all","singleQuote":true,"arrowParens":"always"},"packageManager":"pnpm@11.0.0-dev.1005+sha512.91f84a392eea348ea4852a182912d2520273a4336f933b78cc44bc931eb999923c097e9433a9b355adc1f725725ea99082fc9f032a559df832632e764c92c798","optionalDependencies":{"@argos-ci/mask-fingerprint-win32-x64-msvc":"0.1.3","@argos-ci/mask-fingerprint-darwin-x64":"0.1.3","@argos-ci/mask-fingerprint-linux-x64-gnu":"0.1.3","@argos-ci/mask-fingerprint-linux-arm64-gnu":"0.1.3","@argos-ci/mask-fingerprint-darwin-arm64":"0.1.3"},"gitHead":"7fd8c6e81234f59ccecc140aac7b6e969ed7eca8","types":"./index.d.ts","_id":"@argos-ci/mask-fingerprint@0.1.3","bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"homepage":"https://github.com/argos-ci/mask-fingerprint#readme","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-SRwfDiLLTSVorPJeFwcsUJBrEB6S3DbjdZVm3U7YgNr+Zd4woelMy4sljJMxTJ3wvgUOGWDrt4v1QVDV6/oo5w==","shasum":"1bddc6bbcbffe5ae61ab6bb7e1a10458ebb51153","tarball":"https://registry.npmjs.org/@argos-ci/mask-fingerprint/-/mask-fingerprint-0.1.3.tgz","fileCount":5,"unpackedSize":32743,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@argos-ci%2fmask-fingerprint@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCEaP22xPwcdJvPsly43kXrhrWi3hcFquL08LZT594GigIgHf0JBAZ1GcBR1psInRzTk9Q4pXxYCFuy0JCyVwc3h3Y="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a70f08f4-08cb-40e5-9a98-f811e1937459"}},"directories":{},"maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mask-fingerprint_0.1.3_1768759014257_0.998929078507149"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-11T20:08:52.721Z","modified":"2026-01-18T17:56:54.732Z","0.0.1":"2026-01-11T20:08:52.976Z","0.0.2":"2026-01-13T08:13:30.149Z","0.1.0":"2026-01-13T09:13:14.755Z","0.1.1":"2026-01-13T09:20:22.294Z","0.1.2":"2026-01-14T12:59:04.183Z","0.1.3":"2026-01-18T17:56:54.414Z"},"bugs":{"url":"https://github.com/argos-ci/mask-fingerprint/issues"},"license":"MIT","homepage":"https://github.com/argos-ci/mask-fingerprint#readme","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api"],"repository":{"type":"git","url":"git+ssh://git@github.com/argos-ci/mask-fingerprint.git"},"description":"Fast, deterministic visual diff fingerprinting for PNG images, exposed as a Node.js native module via N-API.","maintainers":[{"name":"neoziro","email":"berge.greg@gmail.com"}],"readme":"# mask-fingerprint\n\nFast, deterministic **visual diff fingerprinting** for PNG images, exposed as a Node.js native module via N-API.\n\nThis library takes a PNG diff image (for example red-pixel visual diffs) and produces a **stable equality fingerprint**.  \nTwo diffs that are visually very close will produce **the same fingerprint**, enabling:\n\n- `fingerprintA === fingerprintB`\n- database indexing\n- grouping and deduplication\n- joins without custom comparison logic\n\nThe core algorithm is written in Rust for performance and exposed to Node.js.\n\n## What problem this solves\n\nClassic perceptual hashes require distance comparisons, which do not work well with SQL indexes or strict equality.\n\nThis project instead:\n\n- normalizes the diff mask\n- quantizes spatial density\n- hashes a coarse representation\n\nThe result is **tolerant equality**, not approximate similarity.\n\n## How it works\n\n1. Decode PNG into RGBA\n2. Extract a binary mask of red pixels\n3. Optional dilation to absorb small pixel noise\n4. Crop to the bounding box\n5. Optional square padding\n6. Split into a small grid (8×8, 16×16, or 32×32)\n7. Compute per-cell red density\n8. Quantize densities into bins\n9. Pack bits and hash with FNV-1a 64-bit\n10. Return a deterministic string key\n\nSmall local differences usually do not change the final fingerprint.\n\n## Installation\n\n### Requirements\n\n- Node.js 24 or newer\n- Rust stable\n- Cargo\n\n### Install dependencies\n\n```bash\npnpm install\n```\n\nor\n\n```bash\nnpm install\n```\n\nThis builds the native module.\n\n## Usage\n\n```ts\nimport fs from 'node:fs'\nimport { fingerprintDiff } from 'mask-fingerprint'\n\nconst png = fs.readFileSync('diff.png')\n\nconst fingerprint = await fingerprintDiff(png, {\n  gridSize: 16,\n  dilateRadius: 1,\n  padToSquare: true,\n  densityThresholds: [0.002, 0.02, 0.08],\n  redThreshold: {\n    rMin: 200,\n    gMax: 90,\n    bMax: 90,\n    aMin: 16,\n  },\n})\n\nconsole.log(fingerprint)\n// v1:g16:d1:t0.002,0.02,0.08:3fa1c2e9a4b8d210\n```\n\nThe returned value is designed to be stored in a database, indexed, and compared using strict equality.\n\n## API\n\n### `fingerprintDiff(buffer, options?)`\n\nReturns a `Promise<string>`.\n\n#### Parameters\n\n**buffer**\n\n- Node.js `Buffer`\n- Raw PNG file contents\n\n**options** (optional)\n\n```ts\n{\n  gridSize?: 8 | 16 | 32        // default: 16\n  dilateRadius?: 0 | 1          // default: 1\n  padToSquare?: boolean         // default: true\n\n  densityThresholds?: number[]  // default: [0.002, 0.02, 0.08]\n                                // sorted, values between 0 and 1\n\n  redThreshold?: {\n    rMin?: number               // default: 200\n    gMax?: number               // default: 90\n    bMax?: number               // default: 90\n    aMin?: number               // default: 16\n  }\n}\n```\n\n#### Returns\n\n```ts\nstring\n```\n\nA deterministic fingerprint string suitable for equality comparison and indexing.\n\n## Supported PNG formats\n\n- RGBA\n- RGB\n- Grayscale\n- Grayscale with alpha\n- Indexed or palette PNGs\n\nPalette and low bit-depth images are automatically expanded.\n\n## Performance characteristics\n\n- Linear time in number of pixels\n- No heavy floating-point operations\n- Minimal allocations in hot paths\n- Suitable for batch processing\n\nTypical workloads handle thousands of diffs per second.\n\n## When to use this\n\nGood fit:\n\n- Visual regression testing\n- Screenshot diff deduplication\n- CI artifact clustering\n- Database-backed visual change tracking\n\nNot a good fit:\n\n- General image similarity search\n- Large geometric transformations\n- Rotation or strong scale invariance\n\nThis library is intentionally optimized for **diff masks**, not arbitrary images.\n\n## Development\n\n```bash\ncargo check\ncargo test\n```\n\nRebuild the native module:\n\n```bash\npnpm build\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}