mock-jwks
Version:
A tool to mock a JWKS for development of microservices who consume jwts signed with RSA
1 lines • 1.75 kB
Source Map (JSON)
{"mappings":";;AAGA,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;ACE9C,OAAO,MAAM,cAAc,GACzB,UAAU,MAAM,EAChB,iBAAmC;;IAmCjC;;OAEG;;;oBAPiB,UAAU;;CAajC,CAAA;AAED,uBAAuB,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD;;GAEG;AACH,eAAe,cAAc,CAAA","sources":["src/src/tools.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,"import type { JwtPayload } from 'jsonwebtoken'\nimport { http, type HttpHandler, HttpResponse } from 'msw'\nimport { type SetupServerApi, setupServer } from 'msw/node'\nimport { createJWKS, createKeyPair, signJwt } from './tools.js'\n\nexport const createJWKSMock = (\n jwksBase: string,\n jwksPath = '/.well-known/jwks.json'\n) => {\n const keypair = createKeyPair()\n const JWKS = createJWKS({\n ...keypair,\n jwksOrigin: jwksBase,\n })\n\n const handler: HttpHandler = http.get(new URL(jwksPath, jwksBase).href, () =>\n HttpResponse.json(JWKS)\n )\n\n const kid = () => JWKS.keys[0].kid\n\n let server: SetupServerApi | undefined\n\n const stop = () => {\n server?.close()\n server = undefined\n }\n\n const start = () => {\n if (server) {\n throw new Error('JWKSMock is already started')\n }\n server = setupServer(handler)\n server.listen({ onUnhandledRequest: 'bypass' })\n return () => stop()\n }\n\n const token = (token: JwtPayload = {}) =>\n signJwt(keypair.privateKey, token, kid())\n\n return {\n start,\n /**\n * @deprecated Use the thunk returned by `start` instead.\n */\n stop,\n kid,\n token,\n mswHandler: handler,\n }\n}\n\nexport type JWKSMock = ReturnType<typeof createJWKSMock>\n\n/**\n * @deprecated Use the named export instead\n */\nexport default createJWKSMock\n"],"names":[],"version":3,"file":"types.d.ts.map","sourceRoot":"../"}