{"_id":"@redsocs/spam-warden","_rev":"30-39c34647b34c16dc8feda09343ac1213","name":"@redsocs/spam-warden","dist-tags":{"latest":"1.3.11"},"versions":{"1.0.4":{"name":"@redsocs/spam-warden","version":"1.0.4","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.0.4","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"6eec303ad75565c27fa14d4ad508ab0b3e23eda8","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.0.4.tgz","fileCount":4,"integrity":"sha512-uoZny3bxBXD1oGy1yUjZaylDeCt0wIDEyhB7rpq/aaU8BA6Tsz8N6TDHTzSEIhcOL65YmGJn5pVnVvOX8Nqq7Q==","signatures":[{"sig":"MEUCIGd2hX01dBXSvGwLXMtPOE4Bup2eF9EAMmeN5TCmc7bEAiEAig7YmGA9mR3MWlrvz6HKjMDjZcLIHDdcqugyaCIYkmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3276598},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"ce58a8682bf9c0887a82bc4db65374ceafd82c75","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.0.4_1781621890726_0.07790888095288451","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@redsocs/spam-warden","version":"1.0.6","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.0.6","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"dc7e7290818557f826e5da59326c313f0a30e0ef","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.0.6.tgz","fileCount":5,"integrity":"sha512-rdW/gqEv3Egukb/TT4P9CFxxh77qlrjiqkeJf+6bfmbSj2a797UIKad5KGUrsgbAL3xUEHgFgQom9Cq52bKicg==","signatures":[{"sig":"MEYCIQDlb7DfBmd/n94DbiSzGe+GVp+pMUoZ6v9aZWFfje8RjQIhALPCA823+Y8Q4uJyzh8oVQjdW7Row1q+8RIlZVboj0pG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3304709},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"4dcce8b2d7296255a6f47157c1c33a31d320a15c","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.0.6_1781675533618_0.40196354221962105","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@redsocs/spam-warden","version":"1.0.7","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.0.7","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"bf052b2a218f4c7fd0503bf989ec2635960da6d6","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.0.7.tgz","fileCount":5,"integrity":"sha512-qb1lLhUOMqJQKIii17OkAXc9z6DWGQoUwQgIp+jZt/U52zoPbKcBzrudu3QHn5OV/LjgXCWPm8N21zHpuoPsjw==","signatures":[{"sig":"MEUCIQCjCuEsU5DLz/+8Dg9jfLuL7ZKsbOJgqDuDiRFqWofUDgIgFxr1LoTGyiwaqbq8d5C9OwkrAj0EMUOBcuYM6Pa5X4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3305332},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"c5dc659864d0448aae0af4bb4f7c2e2cbcc7105f","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.0.7_1781687933894_0.690426278260482","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@redsocs/spam-warden","version":"1.0.8","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.0.8","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"87dbb3bb9c9d283aa3f6951767b4842cd25e9597","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.0.8.tgz","fileCount":3,"integrity":"sha512-ErQ+Pe6TGLt2OMq2iJpKI/L73fh7jajoS4eklAHzysGr5mNnRZEOYdQKVvgDSGZMTxEH6tzakU/JR/DQh+dv5A==","signatures":[{"sig":"MEYCIQDJ9P9YH42d3WhmSY3jUMhl/4AM5a4EBsdpT+mBIPLfQwIhAKgVsZphXwEg7nlW+AONRaNXcFQLkEPEtA3zy4N0Bh08","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8261},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"590c3e7cab160c9e0508aabbd04147f791acd798","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.0.8_1781688643133_0.5942407421144416","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@redsocs/spam-warden","version":"1.0.5","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.0.5","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"5347f37f7293cf5095c80715325d96b51c860078","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.0.5.tgz","fileCount":5,"integrity":"sha512-vwCDskytEurXTWAZL3wXwBchLW2EQ/x4f8Fd3S30Hf0l513VCF3MeZ78ihcZvD3AHWUH1jVH0HQoFxlRwlVJ2w==","signatures":[{"sig":"MEUCIQD4hyJqmUbbi9yNNKP1K2VF5sDcQCpvuBEH7mEWEKQhcQIgIr2CjubBoRDQhg7y346BnVp7g1UPuxsuzHgi5AxcVqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3307982},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"557a3b219aeb32a9a6b45a694ed7916782cba346","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"10.8.2","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.0.5_1781755040006_0.7551275358234477","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@redsocs/spam-warden","version":"1.1.3","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.3","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"0cde7e611e0fc4a1c88bd4e4e9857d7c174bc865","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.3.tgz","fileCount":5,"integrity":"sha512-heo0lV9FKSK88gwR+6BanWsLLc/q6Pd4ga4dDa1VaJx2iQ8tT1j3+UvichjM9KAiPTx8VTtwvnz1klHZhLXWCw==","signatures":[{"sig":"MEQCIGZnbvs0b5Hp+VJtA3Wn2T79JRRZwwcMgK7RMKg9mMKHAiBg2lA5hFmoq6YqqXiHUqblD4CnDKosxP8VLdxYUfjelw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3307238},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"577170b7dc1fbb7eb427e4ec1024e48d591e18a2","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.3_1781756018818_0.4988586862304323","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@redsocs/spam-warden","version":"1.1.4","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.4","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"cc79146e2f9753a03e0a6430548ebac3eef6e295","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.4.tgz","fileCount":5,"integrity":"sha512-EgDEEwguBHjPgrfhNmMamOQOiKR9/m/VE/str5GSvW/gYnqDX+fCMGj3QVo9SbcA+KwzYp71PfIXOt3XQgZTUQ==","signatures":[{"sig":"MEUCIQCIcgpfVQdd6tCl6MnVR9eCusgVCw+5Mg79kmfeMlX1ngIgHofBpA8T2oDw0NK49jWHEv/1OImibKVMBZdRkhaH3jY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3307238},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"6875b079081917ed468ade0dcced16cf910bf318","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.4_1781763353042_0.2367472771119492","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@redsocs/spam-warden","version":"1.1.5","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.5","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"5e3bb68363fbc461645ac2b1db9fd3081e8bba88","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.5.tgz","fileCount":5,"integrity":"sha512-mEs205ZgvCkpEULiS/DR+nDoRNuA+42oedsvXI/OqOIoCDZLLffoSbqGmm6WCzcUA2Iu3xJ6K7/MhN3RN+Jmiw==","signatures":[{"sig":"MEUCIQCQQkOWEUPmHoX+ghS6PSDQxEUPDshyTB6awtpx8LBcQAIgSt2Mz+rKW3VVTlODvwLsVL4DR+dMXyvlSwvzsOnCL2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6441418},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"febfcc66c5bebbadbb19df0c610a6ca12fc83cf2","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.5_1781765524385_0.9563330642531382","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@redsocs/spam-warden","version":"1.1.7","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.7","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"c17bd84e3f00da0ee2d553f355d5667a6f1ff757","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.7.tgz","fileCount":5,"integrity":"sha512-iozurHxTOcLpNRaMDNKnt5mm1XBiE2Rztljdy3f53qrXD8O+qHJqliieoOOh86G1JA58wGAUDxcoWFZujaXYgg==","signatures":[{"sig":"MEUCIEUoPYkmKQngda5ZAOExwZzRrxSkyi3aBqMdGmnAg9clAiEA+akdmSwRoDZIYpsz5DeH3UK/kT/cV1HpJqRgWWYKwSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8150704},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"902f4090b9cc34d0e1df98e42ecb2b8e868f750f","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.7_1781772792297_0.327572888514011","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@redsocs/spam-warden","version":"1.1.8","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.8","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"6f9fe962b99e6171450f5ce5718923174b0ff7cf","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.8.tgz","fileCount":5,"integrity":"sha512-Y1z+VpWcXAyCBUCUTQ5LrPENtQgl7u/yO22PwStK0AYk1CMUCL4UZ06RHOjj8C77dZK49q6XWBGVBgCcERNoHg==","signatures":[{"sig":"MEUCIQDnEXIwS36kTlLsPfwd+xZkNf2s8CVJJ6hv/4AGKHN3AAIgY+VVWpGi3KLnXmXw6KzWMn97dan2NZ+HkQ+P1h0U0Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8162471},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"3b159e2a0124afc3e994904b124f5285c1f43bcd","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.8_1781774864460_0.8323468882506182","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@redsocs/spam-warden","version":"1.1.9","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.9","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"eda404b12c3c3b6c23ebc115d89ed11722b5ba32","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.9.tgz","fileCount":5,"integrity":"sha512-LAjbvJJqk+gOxRWoSwkks8ws/xJkQrN4u+2aQ1nIZ4jQjL6VoNiK1fzpdK/IwjKROdwY6UEhnvyy2+VMZMLKzA==","signatures":[{"sig":"MEYCIQCBJL0xy0oRM1kfVQZbriSOt9/k+OPjxYtcR/9r9qqEQQIhAOc5ebH5s6DjV+hs3KG3ctezZlzHeR1Ww8pG62HYI8LW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9320983},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"43ddd82d962fc1482e4a7245d929018638947be7","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.9_1781776858528_0.24040126002714035","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"@redsocs/spam-warden","version":"1.1.10","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.10","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"14560a46bd7101544611aab87c3d0ed22d7ad4d1","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.10.tgz","fileCount":5,"integrity":"sha512-HvOd4IvVJYZJsilxoRE0QUtrx3Qc51gSaymlaZt6qLmNFpDgMudBXg8cOmvlYjYlrDMk1dW7DlI9WYp3wnuVcA==","signatures":[{"sig":"MEQCIGbjCUwtU3VaMTw0atlWVZda2qWMpzd0G3EE8Q05j3/EAiAzrfiAx5lj0UStiULua582Df7sEvs6BhquhTdwCVN5Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9429729},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"00d257accc592dfcec26d1d64d0865e540e3ae0b","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.10_1781777772245_0.3971753780891587","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"@redsocs/spam-warden","version":"1.1.11","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.11","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"992762b575d638db42f344a69088b202320f2b01","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.11.tgz","fileCount":5,"integrity":"sha512-N8T71V7uj3joqhn9+JKgz8EtZe3pGXD6kF+cNdjIB26YGyGGa2B2WEscR1Dpzh94m5nHGcP7caphh3aQF8hvmA==","signatures":[{"sig":"MEYCIQDpyt5lrEDTXNuZoV8AWK+HRMS5ylbAESYUW2ZcC7DScgIhAKcGApHxa+NSX3C0xR9p7dELXv1fsu7azLMGkgJLDe9X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9487793},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"b80fe6c857896522e206e6f05fa96017c90086c7","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.11_1781780591672_0.9365484049246344","host":"s3://npm-registry-packages-npm-production"}},"1.1.13":{"name":"@redsocs/spam-warden","version":"1.1.13","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.1.13","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"0f999e8905b1d9208d5b8f625f76d4b93b2dc030","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.1.13.tgz","fileCount":5,"integrity":"sha512-NLIEwlHPxsz0ubfgTVfc3qZTQwCVAgP8PQK1QgVAzWwQYfABDNcMeG7ySBoRrXcRPhg5FQiAE6evJ6K91YHExg==","signatures":[{"sig":"MEQCIDau6R3ZAfye9TGjHnx+q6wEMtWNWqsVccr1nRel0YBFAiAht7I2n5wMsRy6YZ4IxTDNvEPWL4BDeAmUJVywtNTCzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9559847},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"0aa240a616deb6bad91e478c011ef71a4da8d2cf","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight client-side JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.1.13_1781781461928_0.30595303093457793","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@redsocs/spam-warden","version":"1.2.1","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.2.1","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"7aa3df80c82afbc9dbcd94c3b12391ba5bd6eddd","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.2.1.tgz","fileCount":5,"integrity":"sha512-Ea0kijpqjEsN3NhaXEF/2VTuGf9zCRvOIUwaDk7Y0CgAPGIUUggb1ZF+1dVNFRAzgGdv9ybVC9Q5WAH6qFSGJA==","signatures":[{"sig":"MEYCIQDArEudc8XkUohtDC8HicOfYK2G/Px1JwykP50N1Q0GKwIhAOAOC6sXRssu0xGaSFkQ7b4cUA/BRoZu633FyigVvI4F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9518380},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"761a2eac241ec31638be86c428894af0b55fe528","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.2.1_1781786544740_0.518071853844672","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@redsocs/spam-warden","version":"1.2.2","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.2.2","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"a3961d4aa88b31d7e91a4100a6c44c0a3c5ef3f4","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.2.2.tgz","fileCount":5,"integrity":"sha512-dqG/euSMRfmSpJfl4q+x9VUV0EIGrsRC+iNoBMFkvxNaYd3vJupP1LiW/wQ10nrVwhjBO5DqT0OKZYL5zbQMyA==","signatures":[{"sig":"MEYCIQDlHVMOfFBQGM5xvKJQI8UAiccqEXcXhoyQUAE0kthhdQIhAMs8TOuQHUdufuaLfgytYw1J/FnGP+3Ljz1FDgHV5gcB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9524192},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"4ca189b165ee37bbe14b2c0de1e184e96e6571f6","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.2.2_1781791190781_0.9338689292787381","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@redsocs/spam-warden","version":"1.2.3","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.2.3","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"7ef4f183f2b23060701667c33d4461115a8441f0","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.2.3.tgz","fileCount":5,"integrity":"sha512-OTCnND6UbFwv3mtIAZB8KR9yF3DoaxDUgVKH6ydpfPw5/5uCDtPcqbcfK6ssdtOWslT3H4pvMN97AjFoAnWaIA==","signatures":[{"sig":"MEYCIQC7ZreHfG3kAJ6mp0uOByNfA0QwpbQ6TfDepggkdUxRgwIhALephPsUwAwnbDbZWKcMz4KJyCALJ9jxjwk4JZsNcIOF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9509372},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"64531865a6bd8d05793be0448b9fbda8008d6553","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.2.3_1781799602500_0.6735011530317092","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@redsocs/spam-warden","version":"1.3.1","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.1","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"626fea417ce94b894b34e07f05db6bee97d1dd2f","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.1.tgz","fileCount":5,"integrity":"sha512-MdJWPc9Br9qcuqLo3JNeR6P/Pg8FHnj/+wOqzb2xV7zmcLhx0OxsxYG3jhXMZlMcIVd20wBoo0J+5aqxe+WSSA==","signatures":[{"sig":"MEYCIQCab3/QigK5sQ6gCGRQNfgsQfsnnOy4yYcS/QWZAkjK0gIhAK0VjplwrRAruIajTo6hrXn+ft02D9HkG+59KbmQBkao","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316982},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"b7ce11105558c39481563bd4da857a193f39ac42","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.1_1781888765775_0.6589792695708978","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@redsocs/spam-warden","version":"1.3.2","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.2","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"de3b84e799d5f06e55c651045b9401ef445a855e","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.2.tgz","fileCount":5,"integrity":"sha512-ot73rfPOjLrfG5h++6OUgHx8EWU2W8WLCM3/eg6vQeNJm7LLy1YZaM4EGiniE+JG3bkA9ZZuxv9gp5roryROJg==","signatures":[{"sig":"MEUCIBb4zBP6uxGHXR9GMXDfoMdZEm7UmGcDOndp1lOKGnJaAiEA1M6wQGc9RpRQLIqD3hxrcpWhhirsjCu1udAzPqLEFks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316982},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"8b42f7ca23ed83fc3541727fec96ff8ae946bb78","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.2_1781889344741_0.8570683714258214","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@redsocs/spam-warden","version":"1.3.3","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.3","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"a6e341adbd9213b36d0d406808ab8907a0f39f24","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.3.tgz","fileCount":5,"integrity":"sha512-vCf9Kgwjq8yZ2GGFTV2pwpDt0eelDXTVv+5fgITi0S7u1AHG4rqZAehu0MOH8+WYs841PZfAOVqxbZmECblUww==","signatures":[{"sig":"MEQCIDyzdFhFJGeRRSPdM3UPCdOLGrvB34oYtEDGbwxxxnVTAiAFy14K87eUs2Av+L98P0Ddhyq9F+DBhly8XflCeSDDVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316976},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"e8d5ece1d0be582de78c46661d7a9340b1caed72","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.3_1781891195195_0.13301475414949393","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@redsocs/spam-warden","version":"1.3.4","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.4","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"6b5b6e595107f4a1d6c8ec26c7f0da2ee1be550f","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.4.tgz","fileCount":5,"integrity":"sha512-tyvbwqoBUMUoC8iCH+STLbQYbqGSXWb2Q8t2ezH76EP3JwM0MAafimf+15mE3EY8MUnWzAsjsrcXM3vQ4HiRgw==","signatures":[{"sig":"MEQCIHnTFl5p1OeqW8CcCj9Rbs3SWgzGg1qJpGUrXV0NeieRAiApDETAyr8SVQhoo/ZsESzFhmp1bP8i8ge8e4QbKssDGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3317072},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"e60db82185d2256ebfe994ee95caa393b404f265","scripts":{"lazy":"node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.4_1781893072544_0.7239393888946548","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@redsocs/spam-warden","version":"1.3.5","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.5","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"5d58801fdad19870d342b6c0bb6ac5514e9f20da","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.5.tgz","fileCount":5,"integrity":"sha512-ZwpjrfVvfWImb118cP7pPBVJGcxUOBTunFjx1hRc4tSYrMSmzmIJMElu87Ntgkr7b+9d8bF9fm9qlN+KuaQ5ng==","signatures":[{"sig":"MEUCIQDwRTzTR7pabB9EFMGQO3KWXJNZiuPdgHr6+darUEXp2gIgSXHYGn/i8erYBiVM3AlR/2eMcX2eALzVSXC5i45OnKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3327913},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"9702865033e26eaec9e6ca54552bb73cc29b7970","scripts":{"lazy":"node build-filter.js && node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.5_1781962640011_0.34613440701680886","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"@redsocs/spam-warden","version":"1.3.6","keywords":["spam-detection","thai-nlp","client-side","naive-bayes","moderation"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.6","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"4a100da06571cf518e05069d3e285c07ed121462","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.6.tgz","fileCount":5,"integrity":"sha512-uYc6fCtkPvNB7GddMm3AZLB/GTzr7rIpcv9hDfX0cUMG4DanUtmSJ4k3p6ski7yXZCCcdCfXqFmi6UpcCKCVag==","signatures":[{"sig":"MEYCIQCV3QOVAo4VHXpgQfjZ6zsemcF/EHpDHpU8Y+ARoQdfZwIhAMJJEY7D+djl6JQCdKyheOA88iLqJjTDpd0Sf4aLE4El","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3328196},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"6e2f2f7b8ee4332ee21413047c4297ebb4717694","scripts":{"lazy":"node build-filter.js && node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.6_1782008986930_0.8377601692682501","host":"s3://npm-registry-packages-npm-production"}},"1.3.7":{"name":"@redsocs/spam-warden","version":"1.3.7","keywords":["spam-detection","spam-filter","anti-spam","thai-nlp","thai","nlp","text-classification","client-side","browser","naive-bayes","moderation","content-moderation","security","lightweight","redsocs","siem","soc","dlp","telemetry","threat-intelligence","pii-masking","edge-security"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.7","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"7f61dc65d7729e2fbf51014d33465faaaae561f7","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.7.tgz","fileCount":5,"integrity":"sha512-dce5G3AT0ZLVWZphV+i2xrKojg/pTSPeBtlk/aqQgJMFB9YtjW7byS2IVWHkv/cOhLyUASWP8d6a/AGZIYSvJA==","signatures":[{"sig":"MEYCIQC7uUxfj6LBrU87qCDObIzSpQaqyj+2Al/ZVvdJD8sU5wIhAOQU9vTyC9nYgncM31GOls0/RRrsqRxl2lsJ/2N4PsC0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3332021},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"57ba5d861185bb34cbe241eca1ddb324514457ae","scripts":{"lazy":"node build-filter.js && node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","dev:lazy":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run lazy && npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Lazy import, build, and re-encryption complete.\"","dev:test":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; build_status=$?; rm -f model.json; if [ $build_status -ne 0 ]; then exit $build_status; fi; npm test)","dev:build":"if [ -z \"$MODEL_DECRYPTION_KEY\" ]; then echo \"Error: MODEL_DECRYPTION_KEY environment variable is required\"; exit 1; fi && openssl enc -d -pbkdf2 -in model.json.enc -out model.json -k \"$MODEL_DECRYPTION_KEY\" && (npm run build; status=$?; openssl enc -e -pbkdf2 -in model.json -out model.json.enc -k \"$MODEL_DECRYPTION_KEY\"; rm -f model.json; exit $status) && echo \"✅ Build and re-encryption complete.\"","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.7_1782060780580_0.18623036539542515","host":"s3://npm-registry-packages-npm-production"}},"1.3.8":{"name":"@redsocs/spam-warden","version":"1.3.8","keywords":["spam-detection","spam-filter","anti-spam","thai-nlp","thai","nlp","text-classification","client-side","browser","naive-bayes","moderation","content-moderation","security","lightweight","redsocs","siem","soc","dlp","telemetry","threat-intelligence","pii-masking","edge-security"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.8","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"557edcf4fb9aa9ad8c3981e41fb81ab4fb90265f","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.8.tgz","fileCount":5,"integrity":"sha512-hGk6G6cZVfmoBNsNgWzVn0IUnxoNU4IA60XYSpBrWgqYqhBM1Q6UE+utNrhWeh5ddEPcFYlShCuFdA69WWMNNQ==","signatures":[{"sig":"MEUCIQDtPEQaEYDHBYrqc6Y5ooluKbz+QAJmjXFD4XC5IUTr5QIgFGc4KIkLynuGuXC7/o+yBU225sFoUMKNkQ4rSrkDMNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4273920},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"ebaacc9674b2d0e523bdfd8405205defce92ea27","scripts":{"lazy":"node build-filter.js && node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","build:ci":"MODEL_DECRYPTION_KEY=$MODEL_DECRYPTION_KEY node build.js","dev:lazy":"node scripts/dev.js build:lazy 'Lazy Build'","dev:test":"node scripts/dev.js test Tests","dev:build":"node scripts/dev.js build Build","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.8_1782299048152_0.6077269555781908","host":"s3://npm-registry-packages-npm-production"}},"1.3.9":{"name":"@redsocs/spam-warden","version":"1.3.9","keywords":["spam-detection","spam-filter","anti-spam","thai-nlp","thai","nlp","text-classification","client-side","browser","naive-bayes","moderation","content-moderation","security","lightweight","redsocs","siem","soc","dlp","telemetry","threat-intelligence","pii-masking","edge-security"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.9","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"2d96859f340a2cd99c2e2a8718b4e993e38dbc3c","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.9.tgz","fileCount":5,"integrity":"sha512-5Nci3599arkx8ACwRPd8u4PdoMo65jTEZylH1WYv6W9tuJg0lXZzfsmEOkb5ikUKsXb/q+TnljDePrVPKfD8wQ==","signatures":[{"sig":"MEQCIGrgfywbcwfUKgvdEHs0s7lPPkIA1Q3EcleoR5H9oVomAiBS+Lt7KewaocJpiYtb7RyF3EU8piy7q+OlrE71P6R+KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4274463},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"9bf802dbf2195bfbeb9c2c7da4f2740252d0e48f","scripts":{"lazy":"node build-filter.js && node lazy.js","test":"node tests/test.js","build":"node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","build:ci":"MODEL_DECRYPTION_KEY=$MODEL_DECRYPTION_KEY node build.js","dev:lazy":"node scripts/dev.js build:lazy 'Lazy Build'","dev:test":"node scripts/dev.js test Tests","dev:build":"node scripts/dev.js build Build","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.13.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.9_1782299893140_0.21257259157056252","host":"s3://npm-registry-packages-npm-production"}},"1.3.10":{"name":"@redsocs/spam-warden","version":"1.3.10","keywords":["spam-detection","spam-filter","anti-spam","thai-nlp","thai","nlp","text-classification","client-side","browser","naive-bayes","moderation","content-moderation","security","lightweight","redsocs","siem","soc","dlp","telemetry","threat-intelligence","pii-masking","edge-security"],"author":{"name":"RedSocs"},"license":"MIT","_id":"@redsocs/spam-warden@1.3.10","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"dist":{"shasum":"3ad0b03c72402803ab8ca6783f40344825164cad","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.10.tgz","fileCount":5,"integrity":"sha512-LeYzKV6YDQT2c20b6Pd38KytwuMuilNt5BFLy9kNnRSRuYKFxaFL8hHDErJE25zUQG4gSx8dfDFk2hmmSYE/rQ==","signatures":[{"sig":"MEYCIQCncvmpo7Uns5fbyl6WM94kvwAjmxwskKjLnqwuXcwfxgIhAK2PfQIh+c/sJojYC8N/mfoZn1eCdKOhoXIVrO2u8REZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4274513},"main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","gitHead":"c199a087b5596680c0d410ba4d43f9e4415912fd","scripts":{"lazy":"node build-filter.js && node lazy.js","test":"node tests/test.js","build":"node build-filter.js && node build.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\"","build:ci":"node build-filter.js && MODEL_DECRYPTION_KEY=$MODEL_DECRYPTION_KEY node build.js","dev:lazy":"node scripts/dev.js build:lazy 'Lazy Build'","dev:test":"node scripts/dev.js test Tests","dev:build":"node scripts/dev.js build Build","test-server":"node tests/simulate/server.js"},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"repository":{"url":"git+https://gitlab.com/redsocs/spam-warden.git","type":"git"},"_npmVersion":"11.17.0","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"terser":"^5.48.0","esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3"},"_npmOperationalInternal":{"tmp":"tmp/spam-warden_1.3.10_1786641479301_0.3513876570284573","host":"s3://npm-registry-packages-npm-production"}},"1.3.11":{"name":"@redsocs/spam-warden","version":"1.3.11","description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","main":"dist/spamwarden.min.js","browser":"dist/spamwarden.min.js","scripts":{"build":"node build-filter.js && node build.js","build:ci":"node build-filter.js && MODEL_DECRYPTION_KEY=$MODEL_DECRYPTION_KEY node build.js","lazy":"node build-filter.js && node lazy.js","dev:build":"node scripts/dev.js build Build","dev:lazy":"node scripts/dev.js build:lazy 'Lazy Build'","dev:test":"node scripts/dev.js test Tests","test":"node tests/test.js","test-server":"node tests/simulate/server.js","version":"node -e \"console.log(require('./dist/spamwarden.min.js').version)\""},"publishConfig":{"access":"public"},"keywords":["spam-detection","spam-filter","anti-spam","thai-nlp","thai","nlp","text-classification","client-side","browser","naive-bayes","moderation","content-moderation","security","lightweight","redsocs","siem","soc","dlp","telemetry","threat-intelligence","pii-masking","edge-security"],"author":{"name":"RedSocs"},"license":"MIT","repository":{"type":"git","url":"git+https://gitlab.com/redsocs/spam-warden.git"},"homepage":"https://gitlab.com/redsocs/spam-warden#readme","bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"devDependencies":{"esbuild":"^0.28.1","javascript-obfuscator":"^5.4.3","terser":"^5.48.0"},"gitHead":"de1ff8ac69d6af511c82458f4d613911469c7d01","_id":"@redsocs/spam-warden@1.3.11","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-13rrVnvXG8E2fa8wqt2XgVfux/eRoaT0qJ4+BgLS7cQsD+kDxR995X3ln/NolS/PLDDYDnBYfvht0setBZ2vRw==","shasum":"b6886f7525ed4b89775609631875455e130555ad","tarball":"https://registry.npmjs.org/@redsocs/spam-warden/-/spam-warden-1.3.11.tgz","fileCount":5,"unpackedSize":4284787,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCrBDFLTumjuene7tnoTZO2bi2Szl4F2c6Ay3Hv7nq/SAIgO/1XewaO3UIdTg6iUSIMgvYphwNbFfwe9LZYmr2NNZo="}]},"_npmUser":{"name":"rcortex","email":"getcisher@gmail.com"},"directories":{},"maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spam-warden_1.3.11_1786641653923_0.6090735453284097"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T14:58:10.583Z","modified":"2026-08-13T17:20:54.345Z","0.70.0":"2026-06-13T17:23:14.276Z","1.0.4":"2026-06-16T14:58:10.911Z","1.0.6":"2026-06-17T05:52:13.868Z","1.0.7":"2026-06-17T09:18:54.108Z","1.0.8":"2026-06-17T09:30:43.254Z","1.0.5":"2026-06-18T03:57:20.203Z","1.1.3":"2026-06-18T04:13:39.031Z","1.1.4":"2026-06-18T06:15:53.261Z","1.1.5":"2026-06-18T06:52:04.596Z","1.1.7":"2026-06-18T08:53:12.459Z","1.1.8":"2026-06-18T09:27:44.634Z","1.1.9":"2026-06-18T10:00:58.749Z","1.1.10":"2026-06-18T10:16:12.463Z","1.1.11":"2026-06-18T11:03:11.947Z","1.1.13":"2026-06-18T11:17:42.178Z","1.2.1":"2026-06-18T12:42:25.009Z","1.2.2":"2026-06-18T13:59:51.028Z","1.2.3":"2026-06-18T16:20:02.800Z","1.3.1":"2026-06-19T17:06:05.969Z","1.3.2":"2026-06-19T17:15:44.914Z","1.3.3":"2026-06-19T17:46:35.360Z","1.3.4":"2026-06-19T18:17:52.853Z","1.3.5":"2026-06-20T13:37:20.195Z","1.3.6":"2026-06-21T02:29:47.098Z","1.3.7":"2026-06-21T16:53:00.800Z","1.3.8":"2026-06-24T11:04:08.327Z","1.3.9":"2026-06-24T11:18:13.307Z","1.3.10":"2026-08-13T17:17:59.542Z","1.3.11":"2026-08-13T17:20:54.108Z"},"bugs":{"url":"https://gitlab.com/redsocs/spam-warden/-/issues"},"author":{"name":"RedSocs"},"license":"MIT","homepage":"https://gitlab.com/redsocs/spam-warden#readme","keywords":["spam-detection","spam-filter","anti-spam","thai-nlp","thai","nlp","text-classification","client-side","browser","naive-bayes","moderation","content-moderation","security","lightweight","redsocs","siem","soc","dlp","telemetry","threat-intelligence","pii-masking","edge-security"],"repository":{"type":"git","url":"git+https://gitlab.com/redsocs/spam-warden.git"},"description":"Lightweight universal JavaScript library for real-time spam detection. Trained on Thai spam data using Bernoulli Naive Bayes.","maintainers":[{"name":"rcortex","email":"getcisher@gmail.com"}],"readme":"# SpamWarden.js\n\nLightweight, universal JavaScript library for real-time spam detection and automated form protection. Optimized for Thai text and high-performance cross-platform environments.\n\n[![CI](https://gitlab.com/redsocs/spam-warden/badges/main/pipeline.svg)](https://gitlab.com/redsocs/spam-warden/-/pipelines)\n[![npm](https://img.shields.io/npm/v/%40redsocs%2Fspam-warden.svg)](https://www.npmjs.com/package/@redsocs/spam-warden)\n[![Sponsor](https://img.shields.io/badge/Sponsor-Buy%20Me%20a%20Coffee-ffdd00?style=flat&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/redsocs?new=1)\n\n---\n\n## What is this?\n\n**SpamWarden.js** is a zero-dependency, universal engine that detects spam directly at the source. It is engineered specifically to combat the regional surge in gambling, loan, and \"fast money\" spam campaigns targeting public sector and enterprise platforms.\n\nBy running natively in the browser, it intercepts malicious payloads before they ever reach your database, saving server resources, maintaining data integrity, and feeding sanitized threat intelligence directly into your SIEM.\n\n👉 **[Live Demo, Scanner & Script Generator](https://spam-warden-js-527b79.gitlab.io/)**\n\n---\n\n## 🛑 A Note on Honesty: Our War on Spammers (Old vs. New)\n\nLet’s be completely transparent about how this library has evolved.\n\nIn our earlier versions, our absolute obsession with punishing casino and loan botnets led us to build something genuinely brutal. We deployed aggressive DOM scraping, intentional memory leaks, infinite `history.replaceState` loops, and hidden `debugger` traps. The goal was simple: crash their headless browsers and completely destroy their automated assets.\n\n**The problem?** If you build a script that behaves exactly like hostile malware, enterprise Static Application Security Testing (SAST) tools will flag it as hostile malware. Government and corporate scanners took one look at our aggressive heuristic scraping and thrown critical alerts for \"stealth loader behavior\" and \"anti-analysis malware.\"\n\n**The Solution:** We had to grow up and build an enterprise-compliant architecture. We stripped out the browser-crashing loops, the wild DOM scraping, and the sketchy `atob` obfuscation.\n\nBut we did not surrender. Instead of crashing their machines, we now target their operational costs. The new architecture replaces the brutal malware traps with a **Cryptographic Proof of Work (PoW) Tarpit**. It sails right past SAST compliance audits, but if a headless bot tries to bypass the UI and execute our decoy endpoints, it forces their CPU into a mathematical chokehold, burning their compute credits for every attack they attempt.\n\n---\n\n## What's Inside: The Hybrid Detection Engine\n\nSpamWarden doesn't just rely on one method. It processes input through a strict three-phase pipeline designed to be lightning-fast and mathematically invisible to security scanners (no `eval()`, no DOM injection).\n\n### Phase 1: The \"Lightcheck\" (Zero-Math Blocking)\n\nBefore waking up the heavy machine learning model, the engine does a microsecond sweep for hardcoded malicious intent.\n\n- Instantly blocks isolated currency symbols (`$`, `€`, `£`, `฿`) often used in fast-money scams.\n- Instantly blocks known spam link shorteners and redirectors (`line[dot]me`, `bit[dot]ly`).\n- _Result: Zero CPU wasted on obvious bot blasts._\n\n### Phase 2: The Thai-Optimized Tokenizer\n\nStandard Western spam filters break text by spaces, which completely fails for the Thai language.\n\n- The engine sweeps through the input, stripping whitespace and generating **trigrams** (3-letter groups) and **quadgrams** (4-letter groups) for the entire string.\n- _Result: Mathematically forces space-less Thai words to reveal their hidden spam clusters._\n\n### Phase 3: Present-Only Naive Bayes (The Core)\n\nA modified Naive Bayes classifier trained exclusively on real-world spam samples.\n\n- **CPU Friendly:** It utilizes a `Set` to track _only_ the vocabulary features actually present in the user's text, calculating logarithmic probability exclusively for those matches rather than iterating over the entire 28,000+ word dictionary.\n- **Dynamic Thresholding:** To prevent false positives on genuinely long, detailed user comments, it applies a length-dependent threshold penalty: $5.5+0.49\\times{N}$ (where N is the number of matched features). The longer the text, the harder the engine adjusts to remain fair.\n\n---\n\n## Security & Active Defense (SAST Compliant)\n\nSpamWarden utilizes a **Hostile Active Defense** architecture. It is built to pass enterprise audits while remaining an absolute nightmare for automated botnets.\n\n1. **The Phantom Core (Closure Isolation):** The real detection engine does _not_ exist on the global `window` object. It is sealed entirely inside an anonymous execution closure. It is technically impossible for an attacker's script to query, overwrite, or disable the core function via the browser console.\n2. **Polymorphic Ghost Tarpits (The Honeypot):** At execution, the script dynamically generates polymorphic decoy engines hidden behind believable frontend variable names (e.g., `window.aBcDeCache`). If a bot bypasses the UI and blindly executes these fakes, they are trapped in the bounded PoW `djb2` hash loop.\n3. **Brutal DOM Protection:** By utilizing Document-Level Capturing Phase listeners and Prototype Monkey-Patching, SpamWarden intercepts malicious submissions _before_ they reach the form element, defeating direct `document.forms[0].submit()` bypasses.\n4. **Anti-Tamper Lockout:** If a script attempts to strip the `data-sw-protect` targeting attributes off your HTML, a hidden internal `MutationObserver` instantly detects the tampering and permanently disables the form.\n\n---\n\n## Quickstart\n\n> [!IMPORTANT]\n> **For Public Sector & Government Admins:** Get your free token configuration and drop-in script to protect your online portals at [redsocs.com/spam-warden](https://redsocs.com/spam-warden).\n\n---\n\n### 1. Zero-Config Local Protection (No Telemetry)\n\nExplicit opt-in protection. No data leaves the browser. Simply include the script and tag your inputs.\n\n**Which file should you choose? (Pick ONLY ONE):**\n\n- `spamwarden.min.js`: The standard minified version. Best for general performance and faster browser parse times.\n- `spamwarden.min.ob.js`: The obfuscated version. It applies control-flow flattening and string encoding to aggressively penalize reverse-engineering attempts by malicious actors, at the cost of a slightly larger file size.\n\n```html\n<!-- ⚠️ IMPORTANT: Choose ONLY ONE of the scripts below. Do not include both! -->\n\n<!-- Option A: Standard Minified (Best Performance) -->\n<script src=\"https://cdn.redsocs.com/js/spamwarden.min.js\"></script>\n\n<!-- Option B: Obfuscated (Maximum Security) -->\n<!-- <script src=\"https://cdn.redsocs.com/js/spamwarden.min.ob.js\"></script> -->\n\n<form>\n  <!-- Just add data-sw-protect=\"true\" to any field -->\n  <textarea name=\"comment\" data-sw-protect=\"true\"></textarea>\n  <button type=\"submit\">Submit</button>\n</form>\n```\n\n---\n\n### 2. Enterprise Telemetry & DLP (SIEM Integration)\n\nReport blocked payloads to a central SOC, SIEM, or custom logging server. Use the `siems` attribute to define your receiving endpoint(s). You can provide a single URL or a comma-separated list of multiple URLs to broadcast the telemetry to several destinations simultaneously.\n\n#### Data Protection & Privacy (DLP / SD Flag)\n\nWhen telemetry is sent to a central SIEM, you might inadvertently transmit Personally Identifiable Information (PII) if the user typed it into the field.\n\nTo ensure compliance with PDPA/GDPR, enable the **Sanitize Data (SD)** flag by adding `data-sd=\"1\"` to the script tag, or setting `reportSD: true` in the programmatic config.\n\nWhen activated, SpamWarden's built-in DLP engine intercepts the payload _before_ it leaves the browser and aggressively masks:\n\n- **Credit Cards:** Replaces 16-digit patterns with `[CARD_MASKED]`\n- **Emails:** Replaces standard email formats with `[EMAIL_MASKED]`\n- **Phone Numbers:** Replaces standard Thai/International formats with `[PHONE_MASKED]`\n\nThis guarantees that PII is scrubbed from the threat intelligence telemetry without requiring any backend processing.\n\n**Single Endpoint:**\n\n```html\n<script\n  src=\"https://cdn.redsocs.com/js/spamwarden.min.ob.js\"\n  siems=\"siem.redsocs.com/v1\"\n  data-sd=\"1\"\n></script>\n```\n\n**Multiple Endpoints (Comma-separated):**\n\n```html\n<script\n  src=\"https://cdn.redsocs.com/js/spamwarden.min.ob.js\"\n  siems=\"api-spam.siem.go.th/v1?token=[token],siem-logger.yourdomain.com/logs\"\n  data-sd=\"1\"\n></script>\n```\n\n### 3. API Usage (Node Only)\n\n```javascript\nconst sw = require(\"@redsocs/spam-warden\");\n\nconst result = sw.spamcheck(\n  \"[Hello, this is a Thai casino & scam ads — guess what? Your tax pays for my traffic.]\",\n);\n\nif (result.isSpam) {\n  console.log(\"Blocked:\", result.reason || \"AI match\");\n  console.log(\"Confidence:\", result.prob);\n}\n```\n\n### 4. Programmatic Configuration (Advanced)\n\nIf you are using a modern framework (React, Vue) or Node.js, you can configure SpamWarden programmatically instead of relying on HTML script attributes.\n\n```javascript\n// Example: Customizing behavior\nwindow.spamwarden.configure({\n  // Telemetry Destinations\n  endpoint: \"https://siem.yourdomain.com/logs\",\n  siemEndpoint: \"https://backup-siem.yourdomain.com/logs\",\n  autoReport: true,\n  isTrusted: true,\n\n  // Data Protection (DLP)\n  reportSD: true, // Same as data-sd=\"1\"\n  payloadLimit: 250, // Max length of the reported payload text\n\n  // Custom Intercepts\n  onSpam: function (result) {\n    // Override the default alert() trap with your own UI behavior\n    console.warn(\"Spam detected with confidence: \" + result.prob);\n    // showCustomModal(\"Blocked due to policy violation.\");\n  },\n\n  customReporter: function (payload) {\n    // Override the default HTTP POST and handle the SIEM payload manually\n    // myCustomLogger.send(payload);\n  },\n});\n```\n\n### 5. Developer Mode & Debugging\n\nBecause SpamWarden utilizes Hostile Active Defense (Phantom Cores, Traps, etc.), debugging it in the console can be difficult by design.\n\nIf you are actively developing your UI and need to bypass the security traps or inspect the engine natively, append `data-sw-dev=\"true\"` to your script tag:\n\n```html\n<script src=\"...\" data-sw-dev=\"true\"></script>\n```\n\n> [!WARNING]\n> **Never deploy to production with `data-sw-dev=\"true\"`.** This completely disables the decoy traps and exposes the global `window.spamwarden` object, making it easier for automated botnets to bypass the system.\n\n---\n\n## Scope & Independent Integrity Auditing\n\nSpamWarden.js is built exclusively to evaluate the live, fully rendered Document Object Model (DOM) right inside the browser.\n\n> [!IMPORTANT]\n> **Client-Side Compliance & Integrity Testing:**\n> While standard backend firewalls check incoming traffic patterns, they are completely blind to data injected directly into compromised template columns or static database rows. If your server has already been breached, backend validation will fail to detect the hidden output being served to search engine crawlers\n>\n> To audit existing compromise footprints, we use our private **[`badlinks`](https://redsocs.com/badlinks)** engine running within the internal **RedSocs Inspector** tools for our EASM platform. This specialized configuration allows auditors and security teams to:\n>\n> - **Expose Stealth SEO Hijacking:** Automatically unmask hidden tags, hidden layout nodes (`display: none`, `opacity: 0`), and malicious cross-domain tracking assets designed to cheat search engine indices.\n> - **Run Local Compliance Sandboxing:** Evaluate target pages on the fly exactly as an NCSA integrity inspector or external search crawler experiences them, without altering a single line of production code on the target server.\n> - **Generate Deterministic Audit Telemetry:** Stream immediate, non-disruptive compliance indicators back to your secure C2 infrastructure or central SOC to document legal alignment with the [NCSA Web Standard 1.0 framework](https://cdn.redsocs.com/html/ncsa-check.html) - Thailand.\n\n---\n\n## Local Simulation & Testing\n\nSpin up a local simulation server to test the DOM auto-blocking behavior and inspect SIEM telemetry payloads in real time:\n\n1. **Start the server**: `npm run test-server`\n2. **Open the test page** in your browser:\n   [http://localhost:3000/](https://www.google.com/search?q=http://localhost:3000/)\n3. **Submit a spam message** (e.g., including currency signs like `฿` or links like `line[dot]me`).\n4. **Observe the result**:\n\n- The form submission will be blocked on the page.\n- The terminal will display the defanged and sanitized telemetry payload sent to the SIEM receiver:\n\n```text\n🚨 [SIEM RECEIVER] Blocked Payload Received!\n================================================\nEndpoint: siem.gov-sec.go.th/v1?token=eGuec...\nURL:          h_tt_p://victim.go.th:3000/\nRule Matched: currency_symbol\nConfidence:   100%\nPII Masked?   true\nPasted?       false\nActors:       [[at]TUNA_FISH]\nSanitized:    \"Win [CARD_MASKED] now! [at]TUNA_FISH\"\n================================================\n```\n\n**And if it no config or attribute script at `siems` endpoint (like `siems=\"https://siem-log.youdomain.co.th/spam\"`) when initial page; this tool send nothing to the outside.**\n\n---\n\nAbout\n\n- **Author:** [RedSocs](https://redsocs.com)\n- **License:** MIT\n- **Inquiries & Enterprise Support:** [pichit[at]redsocs.com](https://www.google.com/search?q=mailto%3Apichit%40redsocs.com)\n- **Sponsor:** [Buy Me a Coffee](https://buymeacoffee.com/redsocs?new=1)\n  [![Sponsor](https://img.shields.io/badge/Sponsor-Buy%20Me%20a%20Coffee-ffdd00?style=flat&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/redsocs?new=1)\n\n### Technical Specs\n\n| Property          | Value                             |\n| ----------------- | --------------------------------- |\n| **Minified Size** | ~2.0 MB (including model weights) |\n| **Gzipped Size**  | **~341 KB**                       |\n| **Dependencies**  | 0 (Vanilla JS)                    |\n| **Vocabulary**    | 34,177 features                   |\n\n---\n\n**Disclaimer:** This tool is not endorsed by the National Cyber Security Agency (NCSA) or any government security sector unit. You can validate your judgment at the Standard & Action Security Policy Audit at [https://www.ncsa.or.th/standards](https://www.ncsa.or.th/standards).\n","readmeFilename":"README.md"}