{"_id":"@agnosticeng/sign","_rev":"1-fa597e015033a8209ffc7565d87e6a1e","name":"@agnosticeng/sign","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@agnosticeng/sign","version":"0.0.1","_id":"@agnosticeng/sign@0.0.1","maintainers":[{"name":"didierfranc","email":"mail@didierfranc.com"}],"dist":{"shasum":"5cf2bcb4a6f81c12657e4304de71b35124d38f66","tarball":"https://registry.npmjs.org/@agnosticeng/sign/-/sign-0.0.1.tgz","fileCount":5,"integrity":"sha512-wNgSURZUmXtMVZpyxXKophV1r9Uk9RxOTIIi1RrnhcEp+AxpbU2AOWOYTkkOFHPxw5O9Gi72aK56odUbedldiQ==","signatures":[{"sig":"MEQCICu5nT0/r93ELwKBODlAM6tRCd0DkkPv89Cb/sN1APKvAiBU+7vkjnjOrJ6mzM8vJmSPyd5DcvwtQ7Fjps8bT0BTPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5067},"main":"./dist/sign.umd.cjs","type":"module","module":"./dist/sign.js","exports":{".":{"import":"./dist/sign.js","require":"./dist/sign.umd.cjs"}},"gitHead":"b9585c1c067ec3a4ed30dd14cf4c788be25e2d90","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview"},"_npmUser":{"name":"didierfranc","email":"mail@didierfranc.com"},"_npmVersion":"10.8.2","description":"A simple TypeScript library for URL signing and verification.","directories":{},"_nodeVersion":"20.18.2","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.1.0","typescript":"~5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/sign_0.0.1_1738945064331_0.3050379253957052","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@agnosticeng/sign","version":"0.0.2","type":"module","main":"./dist/sign.umd.cjs","types":"./dist/sign.d.ts","module":"./dist/sign.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/sign.js","require":"./dist/sign.umd.cjs"}},"scripts":{"dev":"vite","build":"vite build && tsc","preview":"vite preview"},"devDependencies":{"typescript":"~5.7.2","vite":"^6.1.0"},"_id":"@agnosticeng/sign@0.0.2","gitHead":"08fe54065daeda86c7e25a998239108c8423281f","description":"A simple TypeScript library for URL signing and verification.","_nodeVersion":"20.18.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-t6iSk7beXTb/zagH5at3An3U0ECr94xOwul+CWen8mLNkq3MkctxUVRMBoLF3qmsQWtsa3txnZtm8Ao5zfOvMw==","shasum":"23e5f015ef4eaeb8f8d05d4869ff694557f0bf6f","tarball":"https://registry.npmjs.org/@agnosticeng/sign/-/sign-0.0.2.tgz","fileCount":5,"unpackedSize":3873,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA4Mt6KxhBh1Pg4WcwxaJdHS9yjIvz9VzNK1+9kVtKt9AiA9WTZTwQ/azV1xE/UUBKVIzbMv/Qkxjre7yiAEqaDUFg=="}]},"_npmUser":{"name":"didierfranc","email":"mail@didierfranc.com"},"directories":{},"maintainers":[{"name":"didierfranc","email":"mail@didierfranc.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sign_0.0.2_1738945892878_0.23403662907435385"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-07T16:17:44.212Z","modified":"2025-02-07T16:31:33.306Z","0.0.1":"2025-02-07T16:17:44.505Z","0.0.2":"2025-02-07T16:31:33.090Z"},"description":"A simple TypeScript library for URL signing and verification.","maintainers":[{"name":"didierfranc","email":"mail@didierfranc.com"}],"readme":"# @agnosticeng/sign\n\nA simple TypeScript library for URL signing and verification.\n\n## Installation\n\n```bash\nnpm install @agnosticeng/sign\n```\n\n## Usage\n\n```typescript\nimport { sign, check } from '@agnosticeng/sign';\n\n// Generate a signed URL\nconst url = new URL('https://example.com/path');\nurl.searchParams.set('exp', '1234567890'); // Optional expiration\nconst secret = 'your-secret-key';\n\nconst signedUrl = await sign(secret, url);\nconsole.log(signedUrl.toString());\n// https://example.com/path?exp=1234567890&sig=...\n\n// Verify a signed URL\nconst isValid = await check(secret, signedUrl);\nconsole.log(isValid); // true\n```\n\n## API\n\n### sign(secret: string, url: URL): Promise<URL>\n\nSigns a URL by adding a signature query parameter.\n\n- `secret`: A secret key used for signing\n- `url`: URL object to sign\n- Returns: Promise resolving to signed URL\n\n### check(secret: string, url: URL): Promise<boolean>\n\nVerifies if a URL signature is valid.\n\n- `secret`: Same secret key used for signing\n- `url`: Signed URL object to verify\n- Returns: Promise resolving to boolean indicating if signature is valid\n\n## How it works\n\nThe library generates an HMAC SHA-256 signature based on:\n- URL hostname\n- URL pathname\n- Expiration value (if present in query params)\n\nThe signature is added as a `sig` query parameter.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}