{"_id":"@beland/crypto-middleware","name":"@beland/crypto-middleware","dist-tags":{"latest":"0.0.0-development"},"versions":{"0.0.0-development":{"name":"@beland/crypto-middleware","version":"0.0.0-development","description":"Memetaverse Authentication Middleware","main":"./lib","scripts":{"test":"jest","build":"rm -rf lib && tsc -p . -outDir lib --sourceMap false --skipLibCheck","verify":"ts-node bin/verify.ts","format":"prettier --write '**/*.{ts,js,json,md}'","semantic-release":"semantic-release","husky-setup":"husky install","precommit":"lint-staged --config .husky/pre-commit.js"},"jest":{"preset":"ts-jest","roots":["<rootDir>/src/"],"moduleNameMapper":{"\\.(css|less|sass|scss|gif|ttf|eot|svg)$":"<rootDir>/src/__mocks__/files.ts"}},"release":{"branches":["main"]},"repository":{"type":"git","url":"git+https://github.com/memetaverseproject/memetaverse-crypto-middleware.git"},"keywords":["express","koa","passport","connect","middleware","well-known-components"],"author":"","license":"Apache-2.0","bugs":{"url":"https://github.com/memetaverseproject/memetaverse-crypto-middleware/issues"},"homepage":"https://github.com/memetaverseproject/memetaverse-crypto-middleware#readme","dependencies":{"@beland/crypto":"1.0.3","node-fetch":"^2.7.0","passport-strategy":"^1.0.0"},"devDependencies":{"@types/express":"^4.17.13","@types/jest":"^29.5.4","@types/koa":"^2.13.4","@types/passport-strategy":"^0.2.35","@well-known-components/interfaces":"^1.1.0","chalk":"^5.3.0","express":"^4.18.2","husky":"^7.0.2","jest":"^29.7.0","koa":"^2.13.3","lint-staged":"^11.2.0","prettier":"^2.4.1","semantic-release":"^17.4.7","ts-jest":"^29.1.1","ts-loader":"^9.2.6","ts-node":"^10.2.1","tsc-files":"^1.1.2","typescript":"^4.4.3"},"gitHead":"2a4fb7f8d8987174501ca92591b2ff626bbe3e7c","_id":"@beland/crypto-middleware@0.0.0-development","_nodeVersion":"19.9.0","_npmVersion":"9.6.3","dist":{"integrity":"sha512-E77jtvPLTnm2lYVaDDAWAQZueSB50EFlgFT3t6Mgbm6ixSCo1mpF7y3E+OOcjPTiYdZZBMbvLXefW1lwO0f3kw==","shasum":"fa5b207f3081e2a39e923d18b55ac285a6d213eb","tarball":"https://registry.npmjs.org/@beland/crypto-middleware/-/crypto-middleware-0.0.0-development.tgz","fileCount":16,"unpackedSize":33225,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNyaB1j/P+V1ztHU5/ByP8aXZZyef9lGbtKljqEewb9AiEAuoOg4n8oO8QqxTnygGQB6D3XLTfZVhdg+cFGXu/KnVY="}]},"_npmUser":{"name":"beland","email":"beland.developer@gmail.com"},"directories":{},"maintainers":[{"name":"beland","email":"beland.developer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crypto-middleware_0.0.0-development_1701133970490_0.8399987461819438"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-28T01:12:50.382Z","0.0.0-development":"2023-11-28T01:12:50.663Z","modified":"2023-11-28T01:12:50.942Z"},"maintainers":[{"name":"beland","email":"beland.developer@gmail.com"}],"description":"Memetaverse Authentication Middleware","homepage":"https://github.com/memetaverseproject/memetaverse-crypto-middleware#readme","keywords":["express","koa","passport","connect","middleware","well-known-components"],"repository":{"type":"git","url":"git+https://github.com/memetaverseproject/memetaverse-crypto-middleware.git"},"bugs":{"url":"https://github.com/memetaverseproject/memetaverse-crypto-middleware/issues"},"license":"Apache-2.0","readme":"# Memetaverse Authentication Middleware\n\n[![Coverage Status](https://coveralls.io/repos/github/memetaverse/memetaverse-crypto-middleware/badge.svg?branch=main)](https://coveralls.io/github/memetaverse/memetaverse-crypto-middleware?branch=main)\n\nA multi framework middleware to authenticate request signed with `@memetaverse/SignedFetch`\n\n## Index\n\n- [Memetaverse Authentication Middleware](#memetaverse-authentication-middleware)\n  - [Index](#index)\n  - [Install](#install)\n  - [Use with Express](#use-with-express)\n  - [Use with Koa](#use-with-koa)\n  - [Use with Well Known Components](#use-with-well-known-components)\n  - [Use with PassportJS](#use-with-passportjs)\n  - [Options](#options)\n  - [Develop](#develop)\n\n## Install\n\n```bash\n  npm install -s memetaverse-crypto-middleware\n```\n\n## Use with [Express](https://expressjs.com/)\n\n```typescript\nimport { Request } from 'express'\nimport * as dcl from 'memetaverse-crypto-middleware'\n\napp.get(\n  '/user/required',\n  dcl.express(),\n  (req: Request & dcl.memetaverseSignatureData) => {\n    const address: string = req.auth\n    const metadata: Record<string, any> = req.authMetadata\n  }\n)\n\napp.get(\n  '/user/optional',\n  dcl.express({ optional: true }),\n  (req: Request & dcl.memetaverseSignatureData) => {\n    const address: string | undefined = req.auth\n    const metadata: Record<string, any> | undefined = req.authMetadata\n  }\n)\n```\n\n## Use with [Koa](https://koajs.com/)\n\n```typescript\nimport { Context } from 'koa'\nimport * as dcl from 'memetaverse-crypto-middleware'\n\napp.get(\n  '/user/required',\n  dcl.koa(),\n  (ctx: Context & dcl.memetaverseSignatureData) => {\n    const address: string = ctx.auth\n    const metadata: Record<string, any> = ctx.authMetadata\n  }\n)\n\napp.get(\n  '/user/optional',\n  dcl.koa({ optional: true }),\n  (ctx: Context & dcl.memetaverseSignatureData) => {\n    const address: string | undefined = ctx.auth\n    const metadata: Record<string, any> | undefined = ctx.authMetadata\n  }\n)\n```\n\n## Use with [Well Known Components](https://github.com/well-known-components)\n\n```typescript\nimport type { IHttpServerComponent } from '@well-known-components/interfaces'\nimport * as dcl from 'memetaverse-crypto-middleware'\n\napp.use('/user/required', dcl.wellKnownComponents())\napp.get('/user/required', (ctx: dcl.memetaverseSignatureRequiredContext) => {\n  const address: string = ctx.verification.auth\n  const metadata: Record<string, any> = ctx.verification.authMetadata\n})\n\napp.use('/user/optional', dcl.wellKnownComponents({ optional: true })\napp.get('/user/optional', (ctx: dcl.memetaverseSignatureContext<{}>) => {\n  const address: string | undefined= ctx.verification?.auth\n  const metadata: Record<string, any> | undefined = ctx.verification?.authMetadata\n})\n```\n\n## Use with [PassportJS](http://www.passportjs.org/)\n\n```typescript\nimport { Context } from 'koa'\nimport * as dcl from 'memetaverse-crypto-middleware'\n\npassport.use(dcl.passport())\n\napp.get(\n  '/user/required',\n  passport.authenticate('memetaverse'),\n  (req: Request & dcl.memetaverseSignatureData) => {\n    const address: string = req.auth\n    const metadata: Record<string, any> = req.authMetadata\n  }\n)\n\napp.get(\n  '/user/required',\n  passport.authenticate('memetaverse', { optional: true }),\n  (req: Request & dcl.memetaverseSignatureData) => {\n    const address: string | undefined = req.auth\n    const metadata: Record<string, any> | undefined = req.authMetadata\n  }\n)\n```\n\n## Options\n\n| `name`       | `type`                                         | `description`                                                                                                |\n| ------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |\n| `optional`   | `boolean`                                      | if `false` request will fail if there is no signature or if is invalid (default: `false`)                    |\n| `expiration` | `number`                                       | time in milliseconds where a signature is considered valid (default: `60_000`)                               |\n| `catalyst`   | `string`                                       | catalyst url to validate contract wallet signatures (default: `https://peer-lb.memetaverse.club/`)           |\n| `onError`    | `(err: Error & { statusCode: number }) => any` | formats the response body when an error occurred (default: `(err) => ({ ok: false, message: err.message })`) |\n\n\n## Develop\n\nIf you want to contribute make you will need to setup `husky` otherwise your commit may fail because is not following the format standard\n\n```bash\n  npm run husky-setup\n```\n","readmeFilename":"README.md"}