{"_id":"@arcjet/sensitive-info-rampart","_rev":"8-ee3704aa4f94eb4cea44deda9786e35f","name":"@arcjet/sensitive-info-rampart","dist-tags":{"rc":"1.10.0-rc.1","latest":"1.14.0"},"versions":{"1.9.1":{"name":"@arcjet/sensitive-info-rampart","version":"1.9.1","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.9.1","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"21840cdf4e30e309e95a96127b4cf444aaee4b15","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.9.1.tgz","fileCount":19,"integrity":"sha512-D/chTk5KOJ15OVMHq+8JZ+by0RKyJemcRuxjk9eHP5ozUBKhhnrtz5kdm+jNJ02QzDhDp796g/fK+z4MJ8B35Q==","signatures":[{"sig":"MEYCIQC+M8xk/Q5V29Hivr5ZV1R12UkBoHNOfkdcGWwkjF3OUwIhAP+Glxp9ARnubx+Ycik4qsTdxlPi4R9q/DeXdeydsU0y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15345905},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsgo --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"quinn-arcjet","email":"quinn@arcjet.com"},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"11.16.0","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"arcjet":"1.9.1","tsdown":"0.22.3","typescript":"6.0.3","@types/node":"22.19.21","@arcjet/analyze":"1.9.1"},"peerDependencies":{"arcjet":"1.9.1","@arcjet/analyze":"1.9.1"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.9.1_1784160772463_0.7071283592044237","host":"s3://npm-registry-packages-npm-production"}},"1.10.0-rc.0":{"name":"@arcjet/sensitive-info-rampart","version":"1.10.0-rc.0","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.10.0-rc.0","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"07b66d0341509a95b6c018fc887d016b5f8c91e9","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.10.0-rc.0.tgz","fileCount":19,"integrity":"sha512-swEb1xhWflNuVpGXMx9ttbEIAgIzwq8mytfhLQTOHANYp/qV1+3qDoNh/DiYuJugqabjJy0i+TnETjTwec0iTw==","signatures":[{"sig":"MEUCIQD98vKSFUe2G9fp9EgA0t5WLYmRjuHgWcD/vQIMqBvVSwIgF7IJElSQ/JFYt4TNxlkDz0MU0qG2r4bt4IS98sSSOXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arcjet%2fsensitive-info-rampart@1.10.0-rc.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15346073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"57f76b7d4b0166c8a38e03077cb85076df930024","scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:015e1044-4739-4858-a714-c3a6c6d14f25"}},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.1","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"arcjet":"1.10.0-rc.0","tsdown":"0.22.7","typescript":"7.0.2","@types/node":"22.20.1","@arcjet/analyze":"1.10.0-rc.0"},"peerDependencies":{"arcjet":"1.10.0-rc.0","@arcjet/analyze":"1.10.0-rc.0"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.10.0-rc.0_1785871802409_0.4679072433948035","host":"s3://npm-registry-packages-npm-production"}},"1.10.0-rc.1":{"name":"@arcjet/sensitive-info-rampart","version":"1.10.0-rc.1","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.10.0-rc.1","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"033daeadb08f85e0aa491c4e41cab5dab378254e","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.10.0-rc.1.tgz","fileCount":19,"integrity":"sha512-5gIPDnlZZtTloGzwaVRZ5fzsFVUmHBsr27o2+BPuu+OqhTd+Sext9BAR64eW0xtcNC9/mX4h+rMYtAzc0wx6Tw==","signatures":[{"sig":"MEYCIQDD/++fmlMlPyPSFtuD8QjfcD2l11+1mUhNqYY3rnlHjwIhAPn1er4ZVurQREcXVnFAk+1qFGz8U7QyAepGRdUlkgE6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arcjet%2fsensitive-info-rampart@1.10.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15346073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"bb916156cbb94ec6f730ade5fc77f837d8f7b795","scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:015e1044-4739-4858-a714-c3a6c6d14f25"}},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.1","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"arcjet":"1.10.0-rc.1","tsdown":"0.22.7","typescript":"7.0.2","@types/node":"22.20.1","@arcjet/analyze":"1.10.0-rc.1"},"peerDependencies":{"arcjet":"1.10.0-rc.1","@arcjet/analyze":"1.10.0-rc.1"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.10.0-rc.1_1786129678100_0.8126476025731719","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@arcjet/sensitive-info-rampart","version":"1.10.0","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.10.0","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"f44b393f06150bf2f13b71d5c5e3996b41777a41","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.10.0.tgz","fileCount":19,"integrity":"sha512-c5UDBicwd/W8p5/lYv3X9ayqsoF8iyoj6nlBID4oQCmdadXwYdF35IBUTgzgTvXLONL1RtWMbK4gOrR7JjnAJw==","signatures":[{"sig":"MEQCIFbqpCDHQpwpApaab921JE/p0gHXLeEYH/waG0KWCcBbAiAj1Xj4QIRtvXfWWsFWP7zKzh6hT7MCL3L6VKvJY19Axg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arcjet%2fsensitive-info-rampart@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15346048},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a370d371a655f37392c22bbd78f93468ea819558","scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:015e1044-4739-4858-a714-c3a6c6d14f25"}},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.1","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"arcjet":"1.10.0","tsdown":"0.22.7","typescript":"7.0.2","@types/node":"22.20.1","@arcjet/analyze":"1.10.0"},"peerDependencies":{"arcjet":"1.10.0","@arcjet/analyze":"1.10.0"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.10.0_1786475808549_0.6133511006081083","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@arcjet/sensitive-info-rampart","version":"1.11.0","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.11.0","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"63afd716695a79d137cc9aa849255313321f167a","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.11.0.tgz","fileCount":19,"integrity":"sha512-ENZALeHYWcmE4Crfyoak7wXG/M4V5HCEOS/W6vgoAITlobnKkK5i5ZGLdGKoShhQYQvUxAVAzbAPVf/K0rE5Tg==","signatures":[{"sig":"MEYCIQD617Em7dZdkkoSjE4T0VKgl2N0kr5E9SPg+32Z44232QIhANf7JIYUCpYjRfK9mccfbEwxnlXb5dKQK9+X2R7nTcM2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arcjet%2fsensitive-info-rampart@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15345995},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a7f6e95bd6780213facaa8f37bc96984f2993368","scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:015e1044-4739-4858-a714-c3a6c6d14f25"}},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.1","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"arcjet":"1.11.0","tsdown":"0.22.14","typescript":"7.0.2","@types/node":"22.20.1","@arcjet/analyze":"1.11.0"},"peerDependencies":{"arcjet":"1.11.0","@arcjet/analyze":"1.11.0"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.11.0_1787767182913_0.044724072770701895","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@arcjet/sensitive-info-rampart","version":"1.12.0","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.12.0","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"42f46313c19903b05b0a1e543d72f58bca30f889","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.12.0.tgz","fileCount":19,"integrity":"sha512-cu0JRdAs09Qwu2YZqpyQAcLAoNHDk2w9AJnl9xxP/LInHOReze8nSlkFPwB835Pc/NCflUFm09HHbyQWvjsIOQ==","signatures":[{"sig":"MEYCIQCQL8AtYdQx18vLdzs8UxOLFVuOrKkBChqdPoxPAhz/8gIhAIbiCmKIHXLnT960li93fKYVazTAjFLLTQRcEn4w7SMK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFe+EZfEWe3D1dobOB1KG5O9hdwd095jnBUnhjqkJERFAiEA8+zUWoXgUJC7igOz/6z72jeWb//IxRf6kUpO1KGSTGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15345995},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"quinn-arcjet","email":"quinn@arcjet.com"},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.1","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"arcjet":"1.12.0","tsdown":"0.22.14","typescript":"7.0.2","@types/node":"22.20.1","@arcjet/analyze":"1.12.0"},"peerDependencies":{"arcjet":"1.12.0","@arcjet/analyze":"1.12.0"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.12.0_1788888222184_0.08763058957441872","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@arcjet/sensitive-info-rampart","version":"1.13.0","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","_id":"@arcjet/sensitive-info-rampart@1.13.0","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"homepage":"https://arcjet.com","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"fae9f8c80c223b31c3bc9710f0303e2fbbfc407c","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.13.0.tgz","fileCount":19,"integrity":"sha512-Mw3ZBunmYtL9V98iS9H2QMopRuGuGYZOL/v+RGTrz9TZnMrWZ5iaSoiibELfiFX9kcNr7OmQd+clAOSOxYGIbQ==","signatures":[{"sig":"MEUCIGqLn/ygqHGHxug6VXmIG4BfhO9yDAeXjtQBhhaCSKN0AiEAig/9S6xwrjqWyLLT9D0+oZLuRvadaJraeL/gQl0EsfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIClWS2klZVa6BnBxUVNbkOWIkGUk7nnUtBNIZoWMq8q7AiEAx3IIrLH2jOtHPc4cDGkqNrnS85vXW1N9F0cAdRDmW9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arcjet%2fsensitive-info-rampart@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15349103},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"894bb9d3741f19b3306b986e869ca4ea8e42be71","scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:015e1044-4739-4858-a714-c3a6c6d14f25"}},"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.2","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"arcjet":"1.13.0","tsdown":"0.23.0","typescript":"7.0.2","@types/node":"22.20.1","@arcjet/analyze":"1.13.0"},"peerDependencies":{"arcjet":"1.13.0","@arcjet/analyze":"1.13.0"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sensitive-info-rampart_1.13.0_1789601430857_0.13699379529815547","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"_id":"@arcjet/sensitive-info-rampart@1.14.0","bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"dist":{"shasum":"87991ce19de1cffab354d9038b97fb2e36988a52","tarball":"https://registry.npmjs.org/@arcjet/sensitive-info-rampart/-/sensitive-info-rampart-1.14.0.tgz","fileCount":19,"integrity":"sha512-UnZ9kYKrWL2UnA9CP9yxiGnkZ6LjNKkQvAP/elHEl/g7xcBvEt8RQ7f4RcmV8CS1ZXTTiMe5USvw9Ye3Q1ER+A==","signatures":[{"sig":"MEYCIQDeZP9sXKycPNwMWhH3GCC08uxuVrFMK5KLixMGnfFFrQIhAKFbrc9MgYpNBrXVqnzTtDt1NtUWu+8uRCMI6W9EE7eT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDAMacow2JP2fVWFTP+p+y8aGHQEzYOBRmM2lkVjYkLiQIhAO6DAAS9ePgweB0MJYjig2OJcjQqX90avs+rlUe78gFY"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@arcjet%2fsensitive-info-rampart@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15354078},"main":"./dist/index.js","name":"@arcjet/sensitive-info-rampart","type":"module","types":"./dist/index.d.ts","author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"engines":{"node":">=22.21.0 <23 || >=24.5.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f9cf3485163c48117a7b2379af4fe69a6b2e2935","license":"Apache-2.0","scripts":{"test":"npm run build && npm run test-coverage","build":"tsdown","test-api":"node --test -- test/*.test.ts","typecheck":"tsc --noEmit","test-coverage":"node --experimental-test-coverage --test -- test/*.test.ts"},"version":"1.14.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"015e1044-4739-4858-a714-c3a6c6d14f25"}},"homepage":"https://arcjet.com","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"_npmVersion":"12.0.2","description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","directories":{},"maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"_nodeVersion":"24.21.0","dependencies":{"@huggingface/transformers":"4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"arcjet":"1.14.0","tsdown":"0.23.0","typescript":"7.0.2","@types/node":"22.20.4","@arcjet/analyze":"1.14.0"},"peerDependencies":{"arcjet":"1.14.0","@arcjet/analyze":"1.14.0"},"peerDependenciesMeta":{"arcjet":{"optional":true},"@arcjet/analyze":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sensitive-info-rampart_1.14.0_1790886108670_0.5247446917047276"}}},"time":{"created":"2026-07-16T00:12:52.290Z","modified":"2026-10-01T20:21:49.368Z","1.9.1":"2026-07-16T00:12:52.797Z","1.10.0-rc.0":"2026-08-04T19:30:02.748Z","1.10.0-rc.1":"2026-08-07T19:07:58.491Z","1.10.0":"2026-08-11T19:16:48.858Z","1.11.0":"2026-08-26T17:59:43.264Z","1.12.0":"2026-09-08T17:23:42.429Z","1.13.0":"2026-09-16T23:30:31.123Z","1.14.0":"2026-10-01T20:21:49.000Z"},"bugs":{"url":"https://github.com/arcjet/arcjet-js/issues","email":"support@arcjet.com"},"author":{"url":"https://arcjet.com","name":"Arcjet","email":"support@arcjet.com"},"license":"Apache-2.0","homepage":"https://arcjet.com","keywords":["arcjet","ner","onnx","pii","rampart","sensitive-info"],"repository":{"url":"git+https://github.com/arcjet/arcjet-js.git","type":"git","directory":"sensitive-info-rampart"},"description":"Arcjet sensitive information detection backend powered by the on-device Rampart NER model","maintainers":[{"name":"quinn-arcjet","email":"quinn@arcjet.com"},{"name":"davidmytton","email":"david@arcjet.com"}],"readme":"<!-- trunk-ignore-all(markdownlint/MD001) -->\n\n<a href=\"https://arcjet.com\" target=\"_arcjet-home\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://arcjet.com/logo/arcjet-dark-lockup-voyage-horizontal.svg\">\n    <img src=\"https://arcjet.com/logo/arcjet-light-lockup-voyage-horizontal.svg\" alt=\"Arcjet Logo\" height=\"128\" width=\"auto\">\n  </picture>\n</a>\n\n# `@arcjet/sensitive-info-rampart`\n\n<p>\n  <a href=\"https://www.npmjs.com/package/@arcjet/sensitive-info-rampart\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://img.shields.io/npm/v/%40arcjet%2Fsensitive-info-rampart?style=flat-square&label=%E2%9C%A6Aj&labelColor=000000&color=5C5866\">\n      <img alt=\"npm badge\" src=\"https://img.shields.io/npm/v/%40arcjet%2Fsensitive-info-rampart?style=flat-square&label=%E2%9C%A6Aj&labelColor=ECE6F0&color=ECE6F0\">\n    </picture>\n  </a>\n</p>\n\n[Arcjet][arcjet] helps developers protect their apps in just a few lines of\ncode. Implement rate limiting, bot protection, email verification, and defense\nagainst common attacks.\n\nThis package is an alternative **detection backend** for Arcjet's\n[sensitive information][sensitive-info] rule. It runs the on-device\n[Rampart][rampart] named-entity-recognition model — a ~15&nbsp;MB quantized ONNX\nmodel — so the rule can detect names, addresses, and government/financial\nidentifiers in addition to the four types the default WebAssembly engine\ndetects. Everything runs locally (Node.js, Bun, or Deno); no data leaves your\nenvironment, and the model weights are bundled so nothing is fetched at runtime.\n\n## Installation\n\n```shell\nnpm install @arcjet/sensitive-info-rampart\n```\n\n## Usage\n\nPass the backend to the `sensitiveInfo` rule. The rest of the rule — `mode`,\n`allow`/`deny`, and the result shape — is unchanged.\n\n```ts\nimport arcjet, { sensitiveInfo } from \"@arcjet/node\";\nimport { rampart } from \"@arcjet/sensitive-info-rampart\";\n\nconst aj = arcjet({\n  key: process.env.ARCJET_KEY!,\n  rules: [\n    sensitiveInfo({\n      mode: \"LIVE\",\n      // Every Rampart entity is a built-in type — no generic needed.\n      deny: [\"EMAIL\", \"GIVEN_NAME\", \"SURNAME\", \"STREET_NAME\", \"SSN\"],\n      backend: rampart(),\n    }),\n  ],\n});\n\nconst decision = await aj.protect(req, {\n  sensitiveInfoValue: \"My name is Alex Rivera and my SSN is 472-81-0094.\",\n});\n```\n\nWithout a `backend`, the rule continues to use the default WebAssembly engine —\nthis package is entirely opt-in.\n\n## Detected entities\n\nThe model detects: `GIVEN_NAME`, `SURNAME`, `EMAIL`, `PHONE_NUMBER`, `URL`,\n`TAX_ID`, `BANK_ACCOUNT`, `ROUTING_NUMBER`, `GOVERNMENT_ID`, `PASSPORT`,\n`DRIVERS_LICENSE`, `BUILDING_NUMBER`, `STREET_NAME`, `SECONDARY_ADDRESS`,\n`CITY`, `STATE`, and `ZIP_CODE`.\n\nDeterministic recognizers additionally detect the structured, validatable types\n`EMAIL`, `URL`, `IP_ADDRESS`, `SSN`, and `CREDIT_CARD_NUMBER` (Luhn-validated),\nmirroring Rampart's deterministic redaction layer. Phone numbers are left to\nthe model because their digit shape overlaps with financial and government\nidentifiers. On overlapping text the recognizer result wins over the model.\n\nThe full set is exported as `rampartEntities`:\n\n```ts\nimport { rampart, rampartEntities } from \"@arcjet/sensitive-info-rampart\";\n\nsensitiveInfo({ deny: rampartEntities, backend: rampart() });\n```\n\n## Options\n\n```ts\nrampart({\n  // Run a GPU instead of CPU when the runtime supports it.\n  device: \"webgpu\",\n  // Minimum confidence for a model token to count (default: 0.5).\n  threshold: 0.6,\n  // Add or replace the deterministic recognizers. This is the extension point\n  // for custom detection with this backend.\n  recognizers: [\n    ...defaultRecognizers,\n    (value) => /* DetectedSpan[] */,\n  ],\n});\n```\n\nThe model loads once on first use and is reused for every request. The\ntoken-based `detect` callback of the `sensitiveInfo` rule is not used by this\nbackend; add a recognizer instead.\n\n> [!NOTE]\n> Inference runs in the request path, so its latency affects request handling.\n> The model performs best on Latin-script text; see the [model card][rampart]\n> for accuracy and language details.\n\n## Custom runtimes\n\nThe bundled loader needs a filesystem and dynamic module loading, which edge\nruntimes such as Cloudflare Workers don't provide. Pass `classify` to replace\nthe loader alone: it receives one chunk of text, already windowed to the model's\ninput budget, and returns the model's raw tokens for that chunk. Everything\nelse — normalization, windowing, offset reconstruction, token aggregation, and\noverlap resolution with the recognizers — stays in this package, so detection on\na custom runtime matches detection on Node.js.\n\n```ts\nimport { rampart } from \"@arcjet/sensitive-info-rampart\";\nimport type { RawToken } from \"@arcjet/sensitive-info-rampart\";\n\nconst backend = rampart({\n  async classify(value: string): Promise<RawToken[]> {\n    // Run the model with your runtime's own ONNX bindings, then return one\n    // token per wordpiece.\n    return [{ entity: \"B-SURNAME\", score: 0.98, word: \"rivera\", index: 4 }];\n  },\n});\n```\n\nEach token needs the raw BIO label (`entity`), its confidence (`score`), the\nwordpiece text (`word`, keeping any `##` continuation prefix), and its position\nin the sequence (`index`). Character offsets are reconstructed from `word`, so\nyou don't have to provide `start` and `end`.\n\nTo replace detection entirely — including windowing — pass `runModel` instead,\nwhich takes the whole value and returns spans.\n\n\n## Bundlers and frameworks\n\nBy default this package loads a native ONNX runtime\n(`@huggingface/transformers` / `onnxruntime-node`) and reads its bundled model\nweights from disk at runtime, so it must not be bundled by a server build. That\nloader requires a server runtime with filesystem and native-addon access\n(Node.js, Bun, or Deno); to run the backend elsewhere, supply your own\nclassifier — see [Custom runtimes](#custom-runtimes).\n\n### Next.js\n\nMark the package (and its native dependencies) as\n[server external packages](https://nextjs.org/docs/app/api-reference/config/next-config-js/serverExternalPackages)\nso Next.js loads them from `node_modules` at runtime instead of bundling them:\n\n```js\n// next.config.js\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  serverExternalPackages: [\n    \"@arcjet/sensitive-info-rampart\",\n    \"@huggingface/transformers\",\n    \"onnxruntime-node\",\n  ],\n};\n\nmodule.exports = nextConfig;\n```\n\nAny route handler that uses the backend must run on the Node.js runtime (the\ndefault for route handlers), not the Edge runtime:\n\n```ts\n// app/api/protect/route.ts\nexport const runtime = \"nodejs\";\n```\n\n## License\n\nThe source code of this package is licensed under the\n[Apache License, Version 2.0][apache-license] © [Arcjet Labs, Inc.][arcjet]\n\n### Bundled model\n\nThis package bundles the [Rampart][rampart] model and its tokenizer/configuration\nfiles (under `models/rampart/`), which are a separate work:\n\n> \"Rampart: Client-side PII redaction for AI assistants\" by\n> [National Design Studio][rampart], Copyright 2026 National Design Studio,\n> licensed under [CC BY 4.0][cc-by-4]. The files are redistributed unmodified.\n\nThe full model license is in [`models/rampart/LICENSE`](./models/rampart/LICENSE)\nand the attribution is recorded in [`NOTICE`](./NOTICE). If you redistribute this\npackage or the model files, retain that attribution as required by CC BY 4.0.\n\n```bibtex\n@misc{rampart-2026,\n  author = {National Design Studio},\n  title  = {Rampart: Client-side PII redaction for AI assistants},\n  year   = {2026},\n  url    = {https://huggingface.co/nationaldesignstudio/rampart},\n}\n```\n\n[arcjet]: https://arcjet.com\n[sensitive-info]: https://docs.arcjet.com/sensitive-info\n[rampart]: https://huggingface.co/nationaldesignstudio/rampart\n[apache-license]: http://www.apache.org/licenses/LICENSE-2.0\n[cc-by-4]: https://creativecommons.org/licenses/by/4.0/\n","readmeFilename":"README.md"}