{"_id":"@bradthomasbrown/sha","name":"@bradthomasbrown/sha","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@bradthomasbrown/sha","description":"Minimal, unoptimized, and unaudited SHA (256 only for now) hash library in JavaScript/TypeScript.","version":"1.0.0","author":{"name":"Brad Brown","email":"https://t.me/bradthomasbrown"},"type":"module","exports":{".":"./dist/sha.js"},"devDependencies":{"@types/bun":"^1.3.5"},"_id":"@bradthomasbrown/sha@1.0.0","gitHead":"2ae567cfd9178f1ae0a5a9342165861b9d7e0aea","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-q6/wmIuBYjroGt3DhV+hfoiTUYhS8XrmMg6iguTzXrbVIzndoepD14huXbW4UCO2Ee7hXI/n21JEpJCA1sDL2w==","shasum":"3165b730bd358dbffd269311f85255eb9a4ddf46","tarball":"https://registry.npmjs.org/@bradthomasbrown/sha/-/sha-1.0.0.tgz","fileCount":5,"unpackedSize":6334,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDWWX2Lobb5ESZKb24dNxMwAGhNA/jOEq1pwMdWaxAwUQIhAKvBPel8nDM6qlK6ow/fVLplpavf4gK7U6d8XGxq71Bk"}]},"_npmUser":{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"},"directories":{},"maintainers":[{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sha_1.0.0_1767527255292_0.36790552106446617"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-04T11:47:35.192Z","1.0.0":"2026-01-04T11:47:35.458Z","modified":"2026-01-04T11:47:35.771Z"},"maintainers":[{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"}],"description":"Minimal, unoptimized, and unaudited SHA (256 only for now) hash library in JavaScript/TypeScript.","author":{"name":"Brad Brown","email":"https://t.me/bradthomasbrown"},"readme":"# sha\r\nThis is a simple, minimal implementation of SHA-256 in TypeScript/JavaScript. \r\n\r\n## Why?\r\nIn line with our \"making a bunch of libraries our selves\" approach, we needed SHA-256 for an EVM precompile implementation, so we went ahead and made this. It should also support arbitrary bit strings, which is unusual and not necessary, enabled with the \"unaligned bits\" parameter.\r\n\r\n## Installation\r\n```sh\r\nnpm i @bradthomasbrown/sha\r\n```\r\n\r\n## Usage\r\n```js\r\nimport { sha256 } from \"./dist/sha\";\r\n\r\nconst encoder = new TextEncoder();\r\n\r\n// sha256(\"abc\")\r\nconsole.log(sha256(encoder.encode(\"abc\")).toHex());\r\n// ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\r\n\r\n// sha256(\"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\")\r\nconsole.log(sha256(encoder.encode(\"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\")).toHex());\r\n// 248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1\r\n\r\n// sha256(\"a\" * 1_000_000\r\nconsole.log(sha256(encoder.encode(\"a\".repeat(1000000))).toHex());\r\n// cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0\r\n\r\n// sha256(1b)\r\nconsole.log(sha256(new Uint8Array([0b10000000]), 1).toHex());\r\n// b9debf7d52f36e6468a54817c1fa071166c3a63d384850e1575b42f702dc5aa1\r\n\r\n// sha256(101b)\r\nconsole.log(sha256(new Uint8Array([0b10100000]), 3).toHex());\r\n// 36c2b2165533d184079d0431fdfa588021eff5cb79a6a6ad82d7d0377c81928b\r\n\r\n// sha256(000000001b)\r\nconsole.log(sha256(new Uint8Array([0, 0b10000000]), 1).toHex());\r\n// cd30fdd0694698ed4db051b5317fbcd585a6c66b38bab81f5fe3515375ab35e6\r\n```","readmeFilename":"README.md","_rev":"1-3e2d021657bb3fa3ca2632e6b600c34c"}