react-token-manager 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +13 -13
- package/dist/index.mjs +13 -13
- package/package.json +3 -2
- package/src/core.ts +24 -25
package/dist/index.js
CHANGED
|
@@ -109,8 +109,10 @@ var TokenManager = class {
|
|
|
109
109
|
decode(token) {
|
|
110
110
|
if (!token) return null;
|
|
111
111
|
try {
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
const cleanToken = token.trim().replace(/^"|"$/g, "");
|
|
113
|
+
return jwtDecode(cleanToken);
|
|
114
|
+
} catch (err) {
|
|
115
|
+
console.error("JWT decode error:", err, token);
|
|
114
116
|
return null;
|
|
115
117
|
}
|
|
116
118
|
}
|
|
@@ -119,18 +121,16 @@ var TokenManager = class {
|
|
|
119
121
|
*/
|
|
120
122
|
isExpired(token) {
|
|
121
123
|
const tokenToCheck = token != null ? token : this.getOne("access_token");
|
|
124
|
+
console.log("tokenToCheck:", tokenToCheck);
|
|
122
125
|
if (!tokenToCheck) return true;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
} catch {
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
126
|
+
const decoded = this.decode(tokenToCheck);
|
|
127
|
+
console.log("decoded:", decoded);
|
|
128
|
+
if (!decoded || !decoded.exp) return true;
|
|
129
|
+
const now = Date.now();
|
|
130
|
+
const expTime = decoded.exp * 1e3;
|
|
131
|
+
const isExpired = now >= expTime;
|
|
132
|
+
console.log("Token expires at:", new Date(expTime), "isExpired:", isExpired);
|
|
133
|
+
return isExpired;
|
|
134
134
|
}
|
|
135
135
|
};
|
|
136
136
|
|
package/dist/index.mjs
CHANGED
|
@@ -71,8 +71,10 @@ var TokenManager = class {
|
|
|
71
71
|
decode(token) {
|
|
72
72
|
if (!token) return null;
|
|
73
73
|
try {
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
const cleanToken = token.trim().replace(/^"|"$/g, "");
|
|
75
|
+
return jwtDecode(cleanToken);
|
|
76
|
+
} catch (err) {
|
|
77
|
+
console.error("JWT decode error:", err, token);
|
|
76
78
|
return null;
|
|
77
79
|
}
|
|
78
80
|
}
|
|
@@ -81,18 +83,16 @@ var TokenManager = class {
|
|
|
81
83
|
*/
|
|
82
84
|
isExpired(token) {
|
|
83
85
|
const tokenToCheck = token != null ? token : this.getOne("access_token");
|
|
86
|
+
console.log("tokenToCheck:", tokenToCheck);
|
|
84
87
|
if (!tokenToCheck) return true;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
} catch {
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
88
|
+
const decoded = this.decode(tokenToCheck);
|
|
89
|
+
console.log("decoded:", decoded);
|
|
90
|
+
if (!decoded || !decoded.exp) return true;
|
|
91
|
+
const now = Date.now();
|
|
92
|
+
const expTime = decoded.exp * 1e3;
|
|
93
|
+
const isExpired = now >= expTime;
|
|
94
|
+
console.log("Token expires at:", new Date(expTime), "isExpired:", isExpired);
|
|
95
|
+
return isExpired;
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
98
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-token-manager",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "A simple React library to manage JWT tokens",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@types/react-dom": "^19.2.3",
|
|
20
20
|
"js-cookie": "^3.0.5",
|
|
21
|
-
"jwt-decode": "^4.0.0"
|
|
21
|
+
"jwt-decode": "^4.0.0",
|
|
22
|
+
"nextauthz": "^1.3.8"
|
|
22
23
|
},
|
|
23
24
|
"devDependencies": {
|
|
24
25
|
"@types/js-cookie": "^3.0.6",
|
package/src/core.ts
CHANGED
|
@@ -95,9 +95,13 @@ export class TokenManager {
|
|
|
95
95
|
/** Decode token */
|
|
96
96
|
decode<T = unknown>(token: string): T | null {
|
|
97
97
|
if (!token) return null
|
|
98
|
+
|
|
98
99
|
try {
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
// Remove quotes and trim spaces
|
|
101
|
+
const cleanToken = token.trim().replace(/^"|"$/g, '')
|
|
102
|
+
return jwtDecode<T>(cleanToken)
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.error('JWT decode error:', err, token)
|
|
101
105
|
return null
|
|
102
106
|
}
|
|
103
107
|
}
|
|
@@ -107,29 +111,24 @@ export class TokenManager {
|
|
|
107
111
|
*/
|
|
108
112
|
isExpired(token?: string): boolean {
|
|
109
113
|
// Use provided token, fallback to stored 'access_token'
|
|
110
|
-
const tokenToCheck = token ?? this.getOne('access_token')
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
const tokenToCheck = token ?? this.getOne('access_token')
|
|
115
|
+
|
|
116
|
+
console.log('tokenToCheck:', tokenToCheck)
|
|
117
|
+
|
|
113
118
|
if (!tokenToCheck) return true
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const now = Date.now()
|
|
128
|
-
const expTime = decoded.exp * 1000 // exp is in seconds
|
|
129
|
-
return now >= expTime
|
|
130
|
-
} catch {
|
|
131
|
-
// Any decoding error means token is invalid/expired
|
|
132
|
-
return true
|
|
133
|
-
}
|
|
119
|
+
|
|
120
|
+
const decoded = this.decode<JwtPayload>(tokenToCheck)
|
|
121
|
+
console.log('decoded:', decoded)
|
|
122
|
+
|
|
123
|
+
// If decoding fails or exp is missing, consider expired
|
|
124
|
+
if (!decoded || !decoded.exp) return true
|
|
125
|
+
|
|
126
|
+
const now = Date.now()
|
|
127
|
+
const expTime = decoded.exp * 1000
|
|
128
|
+
const isExpired = now >= expTime
|
|
129
|
+
|
|
130
|
+
console.log('Token expires at:', new Date(expTime), 'isExpired:', isExpired)
|
|
131
|
+
return isExpired
|
|
134
132
|
}
|
|
133
|
+
|
|
135
134
|
}
|