{"version":3,"file":"index.mjs","names":[],"sources":["../../src/jwt-session/index.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as v from 'valibot';\nimport { SignJWT, decodeJwt, jwtVerify } from 'jose';\n\nconst AccountSchema = v.object({\n\taddress: v.string(),\n\tpublicKey: v.string(),\n\tlabel: v.optional(v.string()),\n});\n\nconst JwtSessionSchema = v.object({\n\texp: v.number(), // Expiration Time\n\tiat: v.number(), // Issued At\n\tiss: v.string(), // Issuer\n\taud: v.string(), // Audience (the dapp origin)\n\tpayload: v.object({\n\t\taccounts: v.array(AccountSchema),\n\t}),\n});\n\ntype JwtSessionPayload = v.InferOutput<typeof JwtSessionSchema>;\n\nexport async function createJwtSession(\n\tpayload: JwtSessionPayload['payload'],\n\toptions: {\n\t\tsecretKey: Parameters<SignJWT['sign']>[0];\n\t\texpirationTime: Parameters<SignJWT['setExpirationTime']>[0];\n\t\tissuer: Parameters<SignJWT['setIssuer']>[0];\n\t\taudience: Parameters<SignJWT['setAudience']>[0];\n\t},\n) {\n\tconst token = await new SignJWT({ payload })\n\t\t.setProtectedHeader({ alg: 'HS256' })\n\t\t.setExpirationTime(options.expirationTime)\n\t\t.setIssuedAt()\n\t\t.setIssuer(options.issuer)\n\t\t.setAudience(options.audience)\n\t\t.sign(options.secretKey);\n\n\treturn token;\n}\n\nexport function decodeJwtSession(jwt: string) {\n\tconst decodedJwt = decodeJwt(jwt);\n\n\treturn v.parse(JwtSessionSchema, decodedJwt);\n}\n\nexport async function verifyJwtSession(jwt: string, secretKey: CryptoKey | Uint8Array) {\n\tconst verified = await jwtVerify(jwt, secretKey, { algorithms: ['HS256'] });\n\n\treturn v.parse(JwtSessionSchema, verified.payload);\n}\n"],"mappings":";;;;AAMA,MAAM,gBAAgB,EAAE,OAAO;CAC9B,SAAS,EAAE,QAAQ;CACnB,WAAW,EAAE,QAAQ;CACrB,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,MAAM,mBAAmB,EAAE,OAAO;CACjC,KAAK,EAAE,QAAQ;CACf,KAAK,EAAE,QAAQ;CACf,KAAK,EAAE,QAAQ;CACf,KAAK,EAAE,QAAQ;CACf,SAAS,EAAE,OAAO,EACjB,UAAU,EAAE,MAAM,cAAc,EAChC,CAAC;CACF,CAAC;AAIF,eAAsB,iBACrB,SACA,SAMC;AASD,QARc,MAAM,IAAI,QAAQ,EAAE,SAAS,CAAC,CAC1C,mBAAmB,EAAE,KAAK,SAAS,CAAC,CACpC,kBAAkB,QAAQ,eAAe,CACzC,aAAa,CACb,UAAU,QAAQ,OAAO,CACzB,YAAY,QAAQ,SAAS,CAC7B,KAAK,QAAQ,UAAU;;AAK1B,SAAgB,iBAAiB,KAAa;CAC7C,MAAM,aAAa,UAAU,IAAI;AAEjC,QAAO,EAAE,MAAM,kBAAkB,WAAW;;AAG7C,eAAsB,iBAAiB,KAAa,WAAmC;CACtF,MAAM,WAAW,MAAM,UAAU,KAAK,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;AAE3E,QAAO,EAAE,MAAM,kBAAkB,SAAS,QAAQ"}