From 67d9928a61835a468682098d1871a84f7a16f94b Mon Sep 17 00:00:00 2001 From: ztimson Date: Mon, 30 Sep 2024 15:58:37 -0400 Subject: [PATCH] Added jwtDecode function --- package-lock.json | 4 ++-- package.json | 2 +- src/index.ts | 1 + src/jwt.ts | 15 +++++++++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 src/jwt.ts diff --git a/package-lock.json b/package-lock.json index 5481710..12d3bfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ztimson/utils", - "version": "0.16.3", + "version": "0.16.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ztimson/utils", - "version": "0.16.3", + "version": "0.16.7", "license": "MIT", "devDependencies": { "@types/jest": "^29.5.12", diff --git a/package.json b/package.json index 5317c09..d7c6f5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/utils", - "version": "0.16.6", + "version": "0.16.7", "description": "Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/index.ts b/src/index.ts index b83a6ba..9a31da6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ export * from './files'; export * from './emitter'; export * from './errors'; export * from './http'; +export * from './jwt'; export * from './logger'; export * from './math'; export * from './misc'; diff --git a/src/jwt.ts b/src/jwt.ts new file mode 100644 index 0000000..1a9500a --- /dev/null +++ b/src/jwt.ts @@ -0,0 +1,15 @@ +import {JSONAttemptParse} from './objects.ts'; + +/** + * Decode a JWT payload, this will not check for tampering so be careful + * + * @param {string} token JWT to decode + * @return {unknown} JWT payload + */ +function decodeJwt(token: string): T { + const base64 = token.split('.')[1] + .replace(/-/g, '+').replace(/_/g, '/'); + return JSONAttemptParse(decodeURIComponent(window.atob(base64).split('').map(function(c) { + return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); + }).join(''))); +}