{"_id":"@ktbatterham/external-posture-core","_rev":"26-5896242451bf7594979d10669957db48","name":"@ktbatterham/external-posture-core","dist-tags":{"latest":"1.4.0"},"versions":{"0.1.0":{"name":"@ktbatterham/external-posture-core","version":"0.1.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.1.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"dist":{"shasum":"26747764db1d52d1b940cf6311191d9391e46e65","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.1.0.tgz","fileCount":9,"integrity":"sha512-mpyb7b+0kQoXUJvr/hOKfuNY3Vbl5S3ubgHdWMOGR400uJOHtmbgeCoo1IF8GUpV1vf8HSrqvEtu0vNFTRCnrQ==","signatures":[{"sig":"MEYCIQCSkHU0TPsDe4kk2fOPzOHNebAOBOBEQXMOuNas2UfNLQIhAP35idDtkcD6Q2zqqT32nkMqve2uxgstDSOPpFURjhxJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128848},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"85f8a725cd9cff30421459db538ca969b08bfa90","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.1.0_1775372466939_0.013931782447820673","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ktbatterham/external-posture-core","version":"0.2.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.2.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"dist":{"shasum":"148a6c65a0720939c4a1852b6e179c2eca0da082","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.2.0.tgz","fileCount":17,"integrity":"sha512-HhlCtXz1Xc+sit2Wo4ji0cgTPlBOLrpe8ODOWK/tnSl4488HjdMxkRR5Hrr41hz6aayH4W4jTEiXRXpcKYJKeA==","signatures":[{"sig":"MEQCIERzier4Ws85oYj99GwSZwnBgvMxXC2Gb720udYam4gUAiAjNdsQcLqyHWfPo8vRcYtLRf4ir1CMCDqIKt2R5W13FA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":147661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"4b6252824d6ce66196f72a2a1b32630bdbb5ee8c","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.2.0_1775577740884_0.6001415577421869","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ktbatterham/external-posture-core","version":"0.3.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.3.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"external-posture-insight":"dist/cli.js"},"dist":{"shasum":"3a1d17d9136ee2ae684d77c7bf52bc5ec4d9a453","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.3.0.tgz","fileCount":25,"integrity":"sha512-835bEXlDaIuBq6wK3qcemkBJMtc1wTiHbhmHkqqiUEbK6HeyA4wn12XrvNWDoHZaB3TOWs0sOTt9hfGn2GSVvA==","signatures":[{"sig":"MEUCIEQP6kfcqDMRvi2vZh0g+KmXmhRKsLVDxVzm1pPdUc+nAiEA3u+aZJkEHUSaIY6T4PpeW8cdimxpC5zxcHMY7Snw2Z0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":179445},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"ae14db88d967e5fb88954597a6d153d08bb18d04","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.3.0_1775629137781_0.5146446429722569","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ktbatterham/external-posture-core","version":"0.4.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.4.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"external-posture-insight":"dist/cli.js"},"dist":{"shasum":"bc08ba5631096d6d06dac250132edfd7e5bd99f8","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.4.0.tgz","fileCount":29,"integrity":"sha512-lWfH7z0h5wfwk0zHOjQyFZaXuClYiVYWGd+vDl0BKstVloGozveGZjeRs5qLNFO1h7vjiBxa55eyxcua8xFwUA==","signatures":[{"sig":"MEUCIQCX6/OukaW+M8lZ1353mjpJb6mDXesRA7GK/92lbKa6QgIgU2706wcV95VUVSZTkx7zC74EU/Q6gOthgxOLno7AP8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208999},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"f12ec2af2efeaddb5323d94916a66110f5be76ba","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.4.0_1775757326254_0.9133212242450095","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ktbatterham/external-posture-core","version":"0.5.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.5.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"external-posture-insight":"dist/cli.js"},"dist":{"shasum":"9a6ec92d3349f330dfbe738399b82561e1806b24","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.5.0.tgz","fileCount":53,"integrity":"sha512-fLABdSTtLyh32irjYVXzgxZ1XumpVo1bDCnPc1FXtNUhuBMIId20AuLwG3xQzEoqkV8GfT9sSFUvAXv/ttnogQ==","signatures":[{"sig":"MEYCIQDTmYjTp1Oz+E+v9RoT1bX0o2saJjpX78h+q1+p6FAIOQIhALlOqA7LpbOu2j65p20K+XjU87K2kt/vwsMjr+tqAQfk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229348},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"abc05fdf4bcf4dea824e7e6a51f055ebcb061c26","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.5.0_1776360776248_0.46974091984551203","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ktbatterham/external-posture-core","version":"0.6.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.6.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"external-posture-insight":"dist/cli.js"},"dist":{"shasum":"a236222ac9d70113f992a608ae4b3bb33669137a","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.6.0.tgz","fileCount":53,"integrity":"sha512-Ili4y+a2rQkG66DUTKYQtQ00T4Kg33sfdHIQ1dsLw+nEseyxgt+jD+St4uGHxmVujElq2/0wEDTz2ukGsq8CQw==","signatures":[{"sig":"MEQCIHp32MPRthiyaoueZrCjb0yQSkp3LxK5QggkBMqDlFALAiARDeWN9sMbq3oGd13vWcbVdaGC9Y0E+jGjZMSuvAtg3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236324},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"e582b5c3231e923f20be026184c919365de4934e","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.6.0_1776362142477_0.28155846249090444","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@ktbatterham/external-posture-core","version":"0.6.1","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.6.1","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"external-posture-insight":"dist/cli.js"},"dist":{"shasum":"1b09e2aaef03fd175f4723272bd7c4a60e774b61","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.6.1.tgz","fileCount":53,"integrity":"sha512-MO5DQ3K9eQxHB9iagfudklnwZqQl9PAt+Mf7vVpMeMcn1YB+YnM2x7ZVOLlsaLGtg6YAmBOU6xw6ua7jmEyOFg==","signatures":[{"sig":"MEQCIQDIsTHNHdMsuIo9Uk57gE7f3IYfCRx1WkrOGgkfIrmz2wIfCgbURH45fYFi783ADY/JWRGt1Duv6RSvjSIrjxKpgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242697},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"c939ef04d3f781886c863d1b7c1cf42826efbf6c","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.6.1_1776594394812_0.5951430742170949","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ktbatterham/external-posture-core","version":"0.7.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.7.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"4400cb031f0751db6618ea3ed69e46674ad6998a","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.7.0.tgz","fileCount":55,"integrity":"sha512-z133mDPNpZXaNm6PDlm4oDRxPuKXLVAclNO08l+LdDno27v1sq6YaGuauSarsfwTafxzZaVmPChGvS+5v1zvMw==","signatures":[{"sig":"MEUCIQDjVeoHAYICBCqC1rMyRRCT9yeE9OeqklmuwY691qhfrwIgDBlRPyQprFTuzfXTFGIhhX0tmp5MwvDmgUn/jq9Xgss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269751},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"7886e7b0dcee2453f923edce9e83c007af643aba","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.7.0_1777135116069_0.3256184202095671","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@ktbatterham/external-posture-core","version":"0.8.0","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.8.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"f097da7dacf420bf09445768e3e4d1c6009ed520","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.8.0.tgz","fileCount":55,"integrity":"sha512-GcPwS8NARjYoGkuywk6ywQSmMtIpBgCdeCGCqU0K07bexJjNHOGyNSeKbSrXR1p3Mk4dR/pozNSFeezqGRyQtQ==","signatures":[{"sig":"MEUCIQCgu+NQSuRyX8jQGXocOm1ZPYyGSudlzFc0l60ms6M+UwIgfcB1/x51n5G1gShsCxDipUMiuwPfomNq6iNbiB+DGAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286742},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"gitHead":"adba7345f4d4dced8e4a236dd78236c86c5de682","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.8.0_1777493971091_0.6386603743790238","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@ktbatterham/external-posture-core","version":"0.8.1","keywords":["security","headers","tls","dns","owasp","posture","scanner"],"author":{"name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.8.1","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"b6ccec3f791b499021c850ee706c6e6be5dc51e6","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.8.1.tgz","fileCount":55,"integrity":"sha512-BbuMKNWFmcd1qaTqMnV4f+e5cOG2POqchlfALfcCgPGCo5xz6x9LbE9l9NdQKqKUleGFGgYlDEW6gTtPMM4eLQ==","signatures":[{"sig":"MEUCIQDmIVu4JoanQBtDFTjRSOQP1HiE5dUeGsvN2FaEPKEHTwIgMB/7u2DhtC/8aNvtIcQ74+eyl7SHzNHMxshNs6kQzY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":289607},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"75e2141b8e19e1961bcc93f32f4b7b02f94c0b3b","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.8.1_1778141760997_0.8564467225547854","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@ktbatterham/external-posture-core","version":"0.8.2","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.8.2","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"856078806605fe006c1a351b480d3c187370f45d","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.8.2.tgz","fileCount":56,"integrity":"sha512-QggvqtEK3infXYwzSIGJb3HpKKE8F8h6kBGkP/wQ3xrjaGQSkRP8uHnWwhklwumvbdtoE7H/pODRAG+MFSHQTg==","signatures":[{"sig":"MEYCIQCavNWYgDo4mLmH9gW3M4JHC/UWcTEz1+HtSnE29w28XQIhANOErpNU6qXRZrtWQSSjKsehtQWWqQIwOoOMCcELu3x/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":302582},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"ef5d4d501b703cc601302378d845ddd72255a15c","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.8.2_1778784266939_0.1798082976953863","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@ktbatterham/external-posture-core","version":"0.9.0","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.9.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"1cc29b44631379f4b5885c4f02170f8a8e792caa","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.9.0.tgz","fileCount":58,"integrity":"sha512-6m0NsmYGBBswIJP5/VqbBwPN2cPLK/3LLagAiAUJdYrUhmYBYxBHjS6DlZX8WydNEctBm/lzb+gcWcwhDkh2CQ==","signatures":[{"sig":"MEQCIBX9mhFAweTSymJovKzKK9tz8ofiaTZJf5sVxkfwP8cNAiAyQFPieXj2/xvFTHpP/9YmIYV8ji1nUA3gb7TMNQLESw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":319704},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"8b0c509ce232eabcceb0889c118a8c2d86747673","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.9.0_1778998891894_0.5451341693293226","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@ktbatterham/external-posture-core","version":"0.10.0","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.10.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"c22d6243a8f071b50f99419e29a0efe3915cd8e4","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.10.0.tgz","fileCount":58,"integrity":"sha512-+6umpUl/un69Q3z7TY1Jzn0EjSDPhGx8/E2JdMX9oHGa+pADXljP2WiWEHVuh+GkoSxb+bai1RPsDlzbbgXZxA==","signatures":[{"sig":"MEUCIBihiXT9kMDpvAw28Rt7y459RcpdKORyqK52b+dvwxcpAiEA3ZOqWbI4Qh3RM+/ftO6CSycrK2AwmiymLEuW774aXuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324614},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.10.0_1779219724567_0.6127550580854397","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@ktbatterham/external-posture-core","version":"0.11.0","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.11.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://github.com/ktbatterham/external-posture-insight/tree/main/packages/core","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"78cfe0c52508e24f9cd92032f022a62f805b10a1","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.11.0.tgz","fileCount":62,"integrity":"sha512-jyZ3IjkiM8Qi1OlMrQkum9MtlWVIDk+rdGeYAdyksZRMJWcMqaznf2f8K/ZvEJ+Kgv95KFEnmUgE6sDf4e50aw==","signatures":[{"sig":"MEYCIQCWn0h+QOOGf10AEnJgYAW4O2k6L3pIZxPqF3A/ujRN6QIhAPvOC34Ny5tfBw7EUIWtnzwplTLXeZkSdnncNQUdTUz2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":351071},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"09c6cfffa4e17dde2c60aaa689149d49b317ffc0","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"Low-noise external posture analysis core for web targets.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.11.0_1779344090089_0.701208772834363","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@ktbatterham/external-posture-core","version":"0.11.1","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.11.1","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"b1b10d820beece79f932c20b57962bfaf2642cec","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.11.1.tgz","fileCount":62,"integrity":"sha512-/EH+eFfFdwkqene7DyxTZs5Sa/eZbf/3Zxs0D24wnj3l66xFjJcHYz9UJ3QR9BUUvcP0/XdMNpJKD2nzpwmn3g==","signatures":[{"sig":"MEQCIHFRxzGT82gV4NsnsNWjEpvkQq7qxWruAEfVdm1ncow7AiAL4lhsqM4Bp/JaAVzW0XZR7aVwpjno11OxtuVs4swrKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":351908},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"b53ed010b54d5b07490da623f6756e7c2776f76c","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"cheerio":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.11.1_1779346083350_0.1362367757583176","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@ktbatterham/external-posture-core","version":"0.11.2","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@0.11.2","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"435390f863341877047c1d3aaede2e603e4b95ac","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-0.11.2.tgz","fileCount":62,"integrity":"sha512-0KbeHFJR5gMcOJHJmeXj3q/A6DtOQVjt7HjFcnSEbhCWKhKMFNAUNvLEkxY3Cfir1f95XNaPElg6niPSE71C3g==","signatures":[{"sig":"MEQCIEfMXMcu75JtKhBDtoWh017tGtqenrZUlDUIf2qwN3NZAiAlIfcSKN8DmynDSsK125eBnjkebKmOxGydmhvKAoSY1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352014},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"006658c2741efda4e82572c80de61553c228f3ff","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_0.11.2_1779630599337_0.12635321469717398","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@ktbatterham/external-posture-core","version":"1.0.0","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.0.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"723cb1e40295c5e3937e3b4878b6933be564d707","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.0.0.tgz","fileCount":62,"integrity":"sha512-8i8Fh7GNYGuppZ2tBsit8phcQud5V5JrLAqQftoQpXIdIWB9MyG7RIumRtYF+469nlRD04g3srvVIlAB2AcRuw==","signatures":[{"sig":"MEYCIQDMXT3Hmi9hp93mZUxJUo55WYxFdpcwO1dK1CcOLiLYZgIhAPtDueU8dbcaxHoby+35LS8BHNd91RXi0MUpKn1PXI4F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":369159},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"d0c8ad0ab542477977cc16445feba47a32a6f694","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.0.0_1779908243542_0.40262867686302295","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ktbatterham/external-posture-core","version":"1.0.1","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.0.1","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"326ce4cec02b7918efe8dd73d184b021d2f4ce74","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.0.1.tgz","fileCount":64,"integrity":"sha512-m7Tl4hc8FkRnbB2FnGPDGW1hqahpxK3SeIsDV9FlM0F3CGu6OLMd5HqQrt4zVD+c9Xjyc52Jf5HNCn+AfHVFjQ==","signatures":[{"sig":"MEUCIQD4fwk0Bcn7d9Su9a2yTnqs1qsAJUpxBVWxs6kbUESkdQIgNYxx0/DEPckgpLHpA6E2jt8jVkWWrBnPem/OnC7Vylo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":385124},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"14aaf4ffb80553952e724216134a39df479c054f","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.0.1_1780143719548_0.11625880097462127","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ktbatterham/external-posture-core","version":"1.1.0","keywords":["security","headers","tls","dns","owasp","posture","scanner","defensive-security","cli","monitoring","supply-chain"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.1.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"c5441ea7c2599cc715b4585d06d0b23965b672ae","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.1.0.tgz","fileCount":66,"integrity":"sha512-NdTZZlMCtAh49ES/hAHx8pF85wJPwb20hOXemZW/Zo85Bf1uCxuAmBYfGgkYeqpZiIl0EZu6j5CHRJCYjc589w==","signatures":[{"sig":"MEUCIBpcJCRYgJTNBpJphqmF3MhdeHiXKeSqRreEMU4duHhoAiEAyv31atwma3IOjSI0GuODTKfO7Do1C+44WXwopBAG/+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":399099},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./risk-events":{"types":"./dist/riskEvents.d.ts","default":"./dist/riskEvents.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"af5de392ad1a0e7492d3574f26002769bbf08432","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.1.0_1780300337918_0.6377858613113363","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@ktbatterham/external-posture-core","version":"1.1.1","keywords":["security","security-headers","headers","tls","dns","dmarc","owasp","posture","scanner","attack-surface","external-attack-surface","defensive-security","cli","ci","monitoring","supply-chain","vendor-risk"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.1.1","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"659dcfa7ff7c7590bd471cff80e30a1475932f86","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.1.1.tgz","fileCount":68,"integrity":"sha512-1g/IjOVLbT1RYDKMhTetMx/c7YvG6RqGBsWHvt4vb1gWN6wbX5dY1ydqGunI7oV/vdU5o+zdz5HeoSMX7J6M2A==","signatures":[{"sig":"MEYCIQD3NyyEGDY5BpiZwmttO8mF5lxpstJFRI4TogZhc8ffCwIhAI68WfTNxBP6tUcbTO/mZGEc3Mqi++z0XLv+kSPviZlD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":404450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./risk-events":{"types":"./dist/riskEvents.d.ts","default":"./dist/riskEvents.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"}},"gitHead":"522964e222efabfdc3c328951c406897ad1f808b","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.1.1_1780396235883_0.6863413228456654","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@ktbatterham/external-posture-core","version":"1.2.0","keywords":["security","security-headers","headers","tls","dns","dmarc","owasp","posture","scanner","attack-surface","external-attack-surface","defensive-security","cli","ci","monitoring","supply-chain","vendor-risk"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.2.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"df24e52f28066b08a53fc9fbbde9d767a840d52d","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.2.0.tgz","fileCount":70,"integrity":"sha512-ZlWxzBq00XdKz+7waeeWkjZ2FiaQZfJsk+rh42Qwaf5/aYJhJ6MNsVPGnttrfJJJrxoyLFpGLn5ryIlyeAfMwA==","signatures":[{"sig":"MEQCIDvpUZGIQM6SIfqur9KxHotor4RE9SmXh2UKR7hD+STWAiBfx8WsBwdpGEb5hQZJpQEYNtr9JDTWDmYUYI/0v1knkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ktbatterham%2fexternal-posture-core@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":416568},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./risk-events":{"types":"./dist/riskEvents.d.ts","default":"./dist/riskEvents.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"},"./posture-digest":{"types":"./dist/postureDigest.d.ts","default":"./dist/postureDigest.js"}},"gitHead":"b1d7c03b42375cc7cd997b3c6f935a53a0cbd7f0","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.8","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.2.0_1780551674216_0.14770917349301937","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@ktbatterham/external-posture-core","version":"1.2.1","keywords":["security","security-headers","headers","tls","dns","dmarc","owasp","posture","scanner","attack-surface","external-attack-surface","defensive-security","cli","ci","monitoring","supply-chain","vendor-risk"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.2.1","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"d0c7d266547bb7b53647f0c04643ed3c64eedcff","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.2.1.tgz","fileCount":70,"integrity":"sha512-MQJ2CJBNPB5k74yIgYAGKZyto3YXF4WthQ9z0wdfE9frFlHxTE2c8XOfmccVo3IxBXjN01WPq4ZyzAXHPRPHlQ==","signatures":[{"sig":"MEUCIQDxgm+RX8OvBcYZC2mo9X2argyYOZwqrbmr4PpFW9fxBQIgfvxG2mMTZKeeydgdpR43fe0ahNPQWjfYVW9LTmjgdUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420297},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./risk-events":{"types":"./dist/riskEvents.d.ts","default":"./dist/riskEvents.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"},"./posture-digest":{"types":"./dist/postureDigest.d.ts","default":"./dist/postureDigest.js"}},"gitHead":"b8868666191253076c0fcf7161f8dbc35c073744","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.2.1_1780759740386_0.020770854604736932","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@ktbatterham/external-posture-core","version":"1.3.0","keywords":["security","security-headers","headers","tls","dns","dmarc","owasp","posture","scanner","attack-surface","external-attack-surface","defensive-security","cli","ci","monitoring","supply-chain","vendor-risk"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.3.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"e3acd7971c4e1bc341d036abfdbd16deb8f4736d","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.3.0.tgz","fileCount":72,"integrity":"sha512-2RW/79L7KV1FPgKCpeXuNtQJN65gUT6vsEZaif3/8YxylKNtPmhfbV0zEIj7t7WW9R47RezZEkbO4bGym3b6Lg==","signatures":[{"sig":"MEUCIQDbjwiJAXRiegirbtOTMa1rbzW+QjD/zb3rLSrGa1AeyAIgF0EJKlQ5YnygVyHlDTH0KpeKFil0thlHGUz5K57OLps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428117},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./risk-events":{"types":"./dist/riskEvents.d.ts","default":"./dist/riskEvents.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"},"./posture-drift":{"types":"./dist/postureDrift.d.ts","default":"./dist/postureDrift.js"},"./posture-digest":{"types":"./dist/postureDigest.d.ts","default":"./dist/postureDigest.js"}},"gitHead":"7dc6e60cbfe8aea18d52c416b2531495bb6471e0","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.3.0_1781202850619_0.7386677738803666","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@ktbatterham/external-posture-core","version":"1.4.0","keywords":["security","security-headers","headers","tls","dns","dmarc","owasp","posture","scanner","attack-surface","external-attack-surface","defensive-security","cli","ci","monitoring","supply-chain","vendor-risk"],"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","_id":"@ktbatterham/external-posture-core@1.4.0","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"homepage":"https://securl.online","bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"bin":{"epi":"dist/cli.js","external-posture-insight":"dist/cli.js"},"dist":{"shasum":"51e18d7b395622825f4c658973ad69f949fe6f3e","tarball":"https://registry.npmjs.org/@ktbatterham/external-posture-core/-/external-posture-core-1.4.0.tgz","fileCount":74,"integrity":"sha512-PqM+jS/YC2Dk8XP/CAZdyOteHU+dO0Qtk5eSomu7t/MgorWIXXEpLZKhtuJCDrLPfe1DQSPjz2oCQ8ynyI59HQ==","signatures":[{"sig":"MEUCIQCMHzWzVMB1H30Q5/KLvlChHUkD17KRAkkwvX8KwZGShwIgGSGNf2bQ6w7W5qjgOweD4K9byIJW+C0QM81RX8f+3XQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":444881},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./cli":{"default":"./dist/cli.js"},"./types":{"types":"./dist/types.d.ts","default":"./dist/types.js"},"./risk-events":{"types":"./dist/riskEvents.d.ts","default":"./dist/riskEvents.js"},"./history-diff":{"types":"./dist/historyDiff.d.ts","default":"./dist/historyDiff.js"},"./posture-drift":{"types":"./dist/postureDrift.d.ts","default":"./dist/postureDrift.js"},"./posture-digest":{"types":"./dist/postureDigest.d.ts","default":"./dist/postureDigest.js"},"./remediation-plan":{"types":"./dist/postureRemediation.d.ts","default":"./dist/postureRemediation.js"}},"gitHead":"2a0a78962cc527668ab04319d78d32f30edbfd09","scripts":{"test":"npm run build && node --test test/*.test.mjs","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ktbatterham","email":"ktbatterham@me.com"},"deprecated":"Package renamed to securl. Install with: npm install securl","repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.4","description":"Passive external security posture analysis engine for SecURL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","dependencies":{"node-html-parser":"^7.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/external-posture-core_1.4.0_1781356038606_0.8199502446150604","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-05T07:01:06.806Z","modified":"2026-06-14T13:38:31.607Z","0.1.0":"2026-04-05T07:01:07.121Z","0.2.0":"2026-04-07T16:02:21.074Z","0.3.0":"2026-04-08T06:18:57.961Z","0.4.0":"2026-04-09T17:55:26.531Z","0.5.0":"2026-04-16T17:32:56.406Z","0.6.0":"2026-04-16T17:55:42.615Z","0.6.1":"2026-04-19T10:26:34.963Z","0.7.0":"2026-04-25T16:38:36.247Z","0.8.0":"2026-04-29T20:19:31.252Z","0.8.1":"2026-05-07T08:16:01.208Z","0.8.2":"2026-05-14T18:44:27.072Z","0.9.0":"2026-05-17T06:21:32.061Z","0.10.0":"2026-05-19T19:42:04.718Z","0.11.0":"2026-05-21T06:14:50.298Z","0.11.1":"2026-05-21T06:48:03.492Z","0.11.2":"2026-05-24T13:49:59.467Z","1.0.0":"2026-05-27T18:57:23.780Z","1.0.1":"2026-05-30T12:21:59.689Z","1.1.0":"2026-06-01T07:52:18.063Z","1.1.1":"2026-06-02T10:30:36.068Z","1.2.0":"2026-06-04T05:41:15.394Z","1.2.1":"2026-06-06T15:29:00.555Z","1.3.0":"2026-06-11T18:34:10.760Z","1.4.0":"2026-06-13T13:07:18.750Z"},"bugs":{"url":"https://github.com/ktbatterham/external-posture-insight/issues"},"author":{"url":"https://github.com/ktbatterham","name":"Keith Batterham"},"license":"MIT","homepage":"https://securl.online","keywords":["security","security-headers","headers","tls","dns","dmarc","owasp","posture","scanner","attack-surface","external-attack-surface","defensive-security","cli","ci","monitoring","supply-chain","vendor-risk"],"repository":{"url":"git+https://github.com/ktbatterham/external-posture-insight.git","type":"git","directory":"packages/core"},"description":"Passive external security posture analysis engine for SecURL.","maintainers":[{"name":"ktbatterham","email":"ktbatterham@me.com"}],"readme":"# @ktbatterham/external-posture-core\n\n[![npm version](https://img.shields.io/npm/v/%40ktbatterham%2Fexternal-posture-core)](https://www.npmjs.com/package/@ktbatterham/external-posture-core)\n[![npm package](https://img.shields.io/badge/npm-package-red)](https://www.npmjs.com/package/@ktbatterham/external-posture-core)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Core package checks](https://github.com/ktbatterham/external-posture-insight/actions/workflows/core-package-checks.yml/badge.svg)](https://github.com/ktbatterham/external-posture-insight/actions/workflows/core-package-checks.yml)\n\n**The passive security posture engine behind SecURL.**\n\n`@ktbatterham/external-posture-core` is the reusable scanner engine behind [SecURL](https://securl.online), a posture-first external security review tool for public web targets.\n\nIt is designed for passive, low-noise assessment rather than active exploitation or broad reconnaissance. The engine turns public web signals into structured JSON, Markdown, SARIF, and CI-friendly output.\n\nUse it when you need a fast outside-in read on a public web service:\n\n- run a security posture smoke check in CI before release\n- generate JSON or SARIF evidence for internal review\n- compare the current posture against a saved baseline\n- classify monitoring changes into risk events for alerts or dashboards\n- enrich vendor, supplier, or customer domain reviews without credentials or agents\n\n<p>\n  <a href=\"https://securl.online\"><strong>Visit the SecURL site</strong></a>\n  ·\n  <a href=\"https://app.securl.online\"><strong>Try the live scanner</strong></a>\n  ·\n  <a href=\"https://apps.apple.com/app/securl/id6774322464\"><strong>Get the iOS app</strong></a>\n  ·\n  <a href=\"https://github.com/ktbatterham/external-posture-insight\"><strong>View the source</strong></a>\n</p>\n\n## Quick Start\n\nRun a scan without installing:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com\n```\n\nInstall globally for the short `epi` command:\n\n```bash\nnpm install -g @ktbatterham/external-posture-core\nepi scan example.com\n```\n\nPrefer the hosted report workspace? Use [app.securl.online](https://app.securl.online). For the product overview, start at [securl.online](https://securl.online). Prefer mobile? Install [SecURL on the App Store](https://apps.apple.com/app/securl/id6774322464).\n\n## Common use cases\n\n### 1. Quick CLI posture check\n\n```bash\nnpx @ktbatterham/external-posture-core scan https://example.com --format summary\n```\n\nExample summary output:\n\n```text\nexample.com  A  93/100  2 findings\n```\n\n### 2. CI gate for public-facing deployments\n\nFail the job when a target drops below a minimum score or introduces warning-level findings:\n\n```bash\nnpx @ktbatterham/external-posture-core scan https://example.com \\\n  --quiet \\\n  --format ci-json \\\n  --fail-if-score-below 75 \\\n  --fail-on warning\n```\n\nCompare a new scan with a saved baseline:\n\n```bash\nnpx @ktbatterham/external-posture-core scan https://example.com \\\n  --baseline ./security-baseline.json \\\n  --fail-on-regression\n```\n\n### 3. Node.js SDK scan\n\n```js\nimport { analyzeUrl } from \"@ktbatterham/external-posture-core\";\n\nconst result = await analyzeUrl(\"https://example.com\", {\n  scanMode: \"quiet\",\n});\n\nconsole.log({\n  score: result.score,\n  grade: result.grade,\n  mainRisk: result.executiveSummary.mainRisk,\n  findings: result.issues.map((issue) => ({\n    severity: issue.severity,\n    title: issue.title,\n  })),\n});\n```\n\n### 4. Monitoring and risk-event classification\n\nVersion `1.1.0+` includes helpers for turning two scan snapshots into alert-friendly posture events.\n\n```js\nimport {\n  buildHistoryDiffFromSnapshots,\n  snapshotFromAnalysis,\n} from \"@ktbatterham/external-posture-core/history-diff\";\nimport {\n  buildPostureRiskEventsFromSnapshots,\n} from \"@ktbatterham/external-posture-core/risk-events\";\n\nconst currentSnapshot = snapshotFromAnalysis(currentReport);\nconst previousSnapshot = snapshotFromAnalysis(previousReport);\nconst diff = buildHistoryDiffFromSnapshots(currentSnapshot, previousSnapshot);\nconst riskEvents = buildPostureRiskEventsFromSnapshots(\n  currentSnapshot,\n  previousSnapshot,\n  diff,\n);\n\nconsole.log(riskEvents);\n```\n\nRisk events include score regressions, grade drops, new critical findings, certificates nearing expiry, security header regressions, WAF signal removals, new CT priority hosts, identity-provider changes, and new third-party or AI vendors.\n\nVersion `1.3.0+` also includes a higher-level posture drift report for monitoring and alerting surfaces that need one stable payload with the diff, risk events, changed areas, severity counts, and an overall direction.\n\n```js\nimport {\n  buildPostureDriftReportFromSnapshots,\n} from \"@ktbatterham/external-posture-core/posture-drift\";\n\nconst drift = buildPostureDriftReportFromSnapshots(\n  currentSnapshot,\n  previousSnapshot,\n);\n\nconsole.log(drift.summary.direction, drift.summary.changedAreas);\n```\n\nRunnable examples are included in [`examples/`](./examples):\n\n```bash\nnode examples/scan-url.mjs https://example.com\nnode examples/risk-events.mjs current-report.json previous-report.json\n```\n\n### 5. Compact posture digest for APIs and mobile clients\n\nVersion `1.2.0+` includes a digest helper for turning a full scan result into a smaller, stable summary payload.\n\n```js\nimport { analyzeUrl } from \"@ktbatterham/external-posture-core\";\nimport { buildPostureDigest } from \"@ktbatterham/external-posture-core/posture-digest\";\n\nconst result = await analyzeUrl(\"https://example.com\", {\n  scanMode: \"quiet\",\n});\n\nconst digest = buildPostureDigest(result);\n\nconsole.log({\n  grade: digest.posture.grade,\n  score: digest.posture.score,\n  topFindings: digest.findings.top,\n  topFixes: digest.remediationPlan?.topActions,\n  riskIndicators: digest.intelligence.riskIndicators,\n});\n```\n\n### 6. Evidence-backed remediation plans\n\nVersion `1.4.0+` includes a remediation plan helper that turns score drivers and findings into prioritized, owner-aware fix guidance. Findings can also carry structured evidence references so clients can show why a finding was raised.\n\n```js\nimport {\n  attachIssueEvidence,\n  buildPostureRemediationPlan,\n} from \"@ktbatterham/external-posture-core/remediation-plan\";\n\nconst resultWithEvidence = attachIssueEvidence(result);\nconst remediationPlan = buildPostureRemediationPlan(resultWithEvidence);\n\nconsole.log(remediationPlan.items.map((item) => ({\n  title: item.title,\n  owner: item.owner,\n  impact: item.impact,\n  action: item.action,\n})));\n```\n\n## Package trust and release signals\n\n- public source repository with package code under `packages/core`\n- npm publishing from GitHub Actions with provenance enabled\n- CI checks covering audit, build, lint, tests, and dry-run packaging\n- no install scripts\n- one runtime dependency (`node-html-parser`)\n- published MIT license, changelog, release notes, and security policy\n\nSecurity disclosure guidance:\n\n- [`packages/core/SECURITY.md`](./SECURITY.md)\n- [`/SECURITY.md`](../../SECURITY.md)\n\n## Safety model\n\nExternal Posture Insight is passive-first and production-conscious, but it is not magic invisibility dust. A standard scan may make DNS queries, perform TLS handshakes, fetch the target page, follow redirects, query third-party public datasets such as Certificate Transparency / OSV, and run a small set of low-noise HTTP checks. It does not attempt exploitation, brute forcing, authentication bypass, form submission, fuzzing, password testing, or vulnerability exploitation.\n\nUse it only against systems you own or are authorized to assess. Results are heuristic and should be treated as decision support, not a formal penetration test or compliance attestation.\n\n## What it covers\n\n- HTTP security headers and redirect posture\n- TLS and certificate inspection\n- Cookie hygiene\n- Passive HTML inspection\n- Passive public IOC and abuse indicators for suspicious scripts, off-origin credential flows, exposed paths, CT takeover clues, and visible vulnerable client libraries\n- AI surface and third-party trust signals\n- Low-noise exposure, CORS, API-surface, and DNS/mail posture checks\n- OWASP/MITRE-aligned finding labels\n\n## Current status\n\nThis package is published and consumable from npm:\n\n- [`@ktbatterham/external-posture-core`](https://www.npmjs.com/package/@ktbatterham/external-posture-core)\n- Product site: [securl.online](https://securl.online)\n- Live scanner: [app.securl.online](https://app.securl.online)\n- iOS app: [SecURL on the App Store](https://apps.apple.com/app/securl/id6774322464)\n\nIt is also used by the External Posture Insight app from the local workspace during development.\n\n## Release workflow\n\n- local package check: `npm run pack:core`\n- CI verification: `.github/workflows/core-package-checks.yml`\n- publish workflow: `.github/workflows/publish-core-package.yml`\n- publish requires an `NPM_TOKEN` repository secret\n- publish uses npm provenance (`npm publish --provenance`)\n\nRecommended release flow:\n\n1. update the version in `packages/core/package.json`\n2. run `npm run test:core`\n3. run `npm run pack:core`\n4. create and push a tag like `core-v0.1.1`\n5. let the publish workflow release the package\n\nSee also:\n\n- `packages/core/CHANGELOG.md`\n- `packages/core/RELEASING.md`\n\n## Public API\n\nPrimary exports:\n\n- `analyzeUrl(url, options)` - scan a public target and return a structured posture result.\n- `analyzeTarget(url, options)` - compatibility alias for `analyzeUrl`.\n- `analyzeHtmlDocument(url, html)` - run passive HTML/content analysis against already-fetched markup.\n- `snapshotFromAnalysis(result)` - reduce a scan result to a comparison snapshot.\n- `buildHistoryDiffFromSnapshots(current, previous)` - build a structured diff between scans.\n- `buildPostureRiskEventsFromSnapshots(current, previous, diff)` - classify scan changes into alert-friendly risk events.\n- `buildPostureDigest(result)` - reduce a full scan result to a compact API/mobile-friendly digest.\n- `buildPostureDriftReportFromSnapshots(current, previous)` - produce a complete scan-to-scan drift report for monitoring, alerting, and history views.\n- `buildPostureRemediationPlan(result)` - generate prioritized, owner-aware remediation actions from findings and score drivers.\n- `attachIssueEvidence(result)` - add structured evidence references to findings without changing their existing fields.\n\nPackage subpath exports:\n\n- `@ktbatterham/external-posture-core/history-diff`\n- `@ktbatterham/external-posture-core/posture-digest`\n- `@ktbatterham/external-posture-core/posture-drift`\n- `@ktbatterham/external-posture-core/remediation-plan`\n- `@ktbatterham/external-posture-core/risk-events`\n- `@ktbatterham/external-posture-core/types`\n\n## CLI\n\nThe package includes a pipe-friendly CLI:\n\nScan multiple targets in one run:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com github.com bbc.co.uk\nepi scan example.com github.com bbc.co.uk\n```\n\nAvailable output formats:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com --format summary\nnpx @ktbatterham/external-posture-core scan example.com --format json\nnpx @ktbatterham/external-posture-core scan example.com --format markdown\nnpx @ktbatterham/external-posture-core scan example.com --format sarif\nnpx @ktbatterham/external-posture-core scan example.com --format ci-json\n```\n\nThe CLI writes machine-readable report output to stdout, and lightweight multi-target progress to stderr only when running interactively. This keeps JSON/SARIF output pipe-friendly.\n\nScan modes:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com\nnpx @ktbatterham/external-posture-core scan example.com --quiet\nnpx @ktbatterham/external-posture-core scan example.com --deep-passive\n```\n\n- default scan: primary response plus bounded passive enrichment, including HTML, DNS/mail, Certificate Transparency, OSV, exposure, CORS, API-surface, and public trust signals.\n- `--quiet`: keeps primary response, TLS, headers, cookies, redirects, DNS/mail, Certificate Transparency summary, infrastructure, and public trust checks; skips page-body analysis, related-page crawl, security.txt fetch, identity discovery, exposure probes, CORS probes, API probes, OSV lookups, and CT host sampling. Use this for lower-noise CI smoke checks or frequent regression monitoring.\n- `--deep-passive`: expands passive CT host sampling, related-page crawl, exposure probes, and API-surface probes while keeping request counts and scan duration bounded. Use this for pre-release or scheduled posture reviews where a broader passive pass is worth the extra time.\n\nCI policy modes:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com github.com --fail-on warning\nnpx @ktbatterham/external-posture-core scan example.com --baseline previous-report.json --fail-on-regression\nnpx @ktbatterham/external-posture-core scan example.com github.com --fail-if-score-below 75\nnpx @ktbatterham/external-posture-core compare current-report.json baseline-report.json --fail-on critical --fail-on-regression\n```\n\n- `--fail-on` sets exit code `1` when findings at or above the selected severity are present.\n- `--fail-on-regression` sets exit code `1` when the baseline comparison detects a regression (score drop, new issues, or worse HTTP status class).\n- `--fail-if-score-below` sets exit code `1` when any scanned target score is below the given threshold.\n\nWrite results to a file:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com --format json --output report.json\n```\n\nCompare against a previously saved JSON report:\n\n```bash\nnpx @ktbatterham/external-posture-core scan example.com --baseline previous-report.json\n```\n\nCompare two saved reports directly:\n\n```bash\nnpx @ktbatterham/external-posture-core compare current-report.json baseline-report.json\nnpx @ktbatterham/external-posture-core compare current-report.json baseline-report.json --format sarif\n```\n\nBatch scans return:\n\n- summary: one line per target\n- markdown: a compact comparison table\n- sarif: one SARIF log containing findings across all scanned targets\n- ci-json: compact machine-readable output with policy pass/fail status\n- json:\n\n```json\n{\n  \"analyses\": [{ \"...\": \"scan result\" }]\n}\n```\n\nDirect report comparison returns:\n\n- summary: score, status, and change summary\n- markdown: a compact comparison report\n- sarif: only findings that are newly introduced in the current report versus the baseline\n- ci-json: compact machine-readable output with policy pass/fail status and diff details\n- json:\n\n```json\n{\n  \"current\": { \"...\": \"latest saved report\" },\n  \"baseline\": { \"...\": \"older saved report\" },\n  \"diff\": { \"...\": \"structured change summary\" }\n}\n```\n\nShow usage:\n\n```bash\nnpx @ktbatterham/external-posture-core --help\n```\n\n### `analyzeUrl(url)`\n\nRun a full posture analysis for a public target.\n\n```js\nimport { analyzeUrl } from \"@ktbatterham/external-posture-core\";\n\nconst result = await analyzeUrl(\"https://example.com\");\nconsole.log(result.score, result.grade);\n```\n\n`analyzeTarget` remains available as a compatibility alias, but `analyzeUrl` is the primary public entrypoint.\n\n`analyzeUrl(\"https://example.com\", { scanMode: \"quiet\" })` uses the same quiet boundary as CLI `--quiet`. `analyzeUrl(\"https://example.com\", { scanMode: \"deep-passive\" })` uses the expanded passive recon boundary as CLI `--deep-passive`.\n\nWhen a baseline report is supplied to the CLI, summary and Markdown output append a `Changes Since Baseline` section. JSON output returns:\n\n```json\n{\n  \"analysis\": { \"...\": \"latest scan result\" },\n  \"diff\": { \"...\": \"structured change summary\" }\n}\n```\n\n### `analyzeHtmlDocument(url, html)`\n\nRun passive HTML/content analysis against a fetched HTML document.\n\n```js\nimport { analyzeHtmlDocument } from \"@ktbatterham/external-posture-core\";\n\nconst htmlSecurity = analyzeHtmlDocument(\"https://example.com\", \"<html>...</html>\");\nconsole.log(htmlSecurity.clientExposureSignals);\n```\n\n## Notes\n\n- Only use this against targets you are authorized to assess.\n- The package is intentionally conservative about active probing.\n- Default scans perform bounded passive enrichment; quiet scans skip page-body and probe-heavy enrichment to keep request volume lower.\n- Scoring is heuristic and should be treated as a prioritization aid, not an absolute security truth.\n- The author is not responsible for misuse, unauthorized scanning, operational impact, or decisions made from the output without appropriate validation.\n","readmeFilename":"README.md"}