UNPKG

@openapi-qraft/react

Version:

OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.

1 lines 4.99 kB
{"version":3,"file":"index.cjs","sources":["../../../../src/lib/jwt-decode/index.ts"],"sourcesContent":["export interface JwtDecodeOptions {\n header?: boolean;\n}\n\nexport interface JwtHeader {\n typ?: string;\n alg?: string;\n kid?: string;\n}\n\nexport interface JwtPayload {\n iss?: string;\n sub?: string;\n aud?: string[] | string;\n exp?: number;\n nbf?: number;\n iat?: number;\n jti?: string;\n}\n\nexport class InvalidTokenError extends Error {}\n\nInvalidTokenError.prototype.name = 'InvalidTokenError';\n\n/**\n * Decode a base64 string to a UTF-8 string.\n * Could be used in Node.js or in the browser.\n */\nexport function b64DecodeUnicode(data: string): string {\n if (typeof atob === 'function')\n return decodeURIComponent(Array.from(atob(data), byteToPercent).join(''));\n\n return Buffer.from(data, 'base64').toString('utf-8');\n}\n\nfunction base64UrlDecode(str: string) {\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw new Error('base64 string is not of the correct length');\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (_err) {\n return atob(output);\n }\n}\n\nexport function jwtDecode<T = JwtHeader>(\n token: string,\n options: JwtDecodeOptions & { header: true }\n): T;\nexport function jwtDecode<T = JwtPayload>(\n token: string,\n options?: JwtDecodeOptions\n): T;\nexport function jwtDecode<T = JwtHeader | JwtPayload>(\n token: string,\n options?: JwtDecodeOptions\n): T {\n if (typeof token !== 'string') {\n throw new InvalidTokenError('Invalid token specified: must be a string');\n }\n\n options ||= {};\n\n const pos = options.header === true ? 0 : 1;\n const part = token.split('.')[pos];\n\n if (typeof part !== 'string') {\n throw new InvalidTokenError(\n `Invalid token specified: missing part #${pos + 1}`\n );\n }\n\n let decoded: string;\n try {\n decoded = base64UrlDecode(part);\n } catch (e) {\n throw new InvalidTokenError(\n `Invalid token specified: invalid base64 for part #${pos + 1} (${(e as Error).message})`\n );\n }\n\n try {\n return JSON.parse(decoded) as T;\n } catch (e) {\n throw new InvalidTokenError(\n `Invalid token specified: invalid json for part #${pos + 1} (${(e as Error).message})`\n );\n }\n}\n\nfunction byteToPercent(b: string) {\n return `%${`00${b.charCodeAt(0).toString(16)}`.slice(-2)}`;\n}\n"],"names":["InvalidTokenError","Error","prototype","name","b64DecodeUnicode","data","atob","decodeURIComponent","Array","from","byteToPercent","join","Buffer","toString","base64UrlDecode","str","output","replace","length","_err","jwtDecode","token","options","pos","header","part","split","decoded","e","message","JSON","parse","b","charCodeAt","slice"],"mappings":"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"}