react-token-manager 1.0.5 → 1.0.6

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/README.md CHANGED
@@ -27,16 +27,18 @@ configureTokenManager({
27
27
  import { useTokenManager } from 'react-token-manager'
28
28
 
29
29
  export default function Dashboard() {
30
- const {
31
- setTokens,
32
- getTokens,
33
- removeTokens,
34
- clearAllTokens,
35
- decodeToken,
36
- isExpired
30
+ const {
31
+ setTokens,
32
+ getTokens,
33
+ getAllTokens,
34
+ getSingleToken,
35
+ removeTokens,
36
+ clearTokens,
37
+ decodeToken,
38
+ isExpired,
37
39
  } = useTokenManager()
38
40
 
39
- // Set multiple tokens at once
41
+ // Set multiple tokens
40
42
  setTokens({
41
43
  access_token: 'abc123',
42
44
  refresh_token: 'xyz789',
@@ -45,27 +47,26 @@ export default function Dashboard() {
45
47
  // Get multiple tokens
46
48
  const tokens = getTokens(['access_token', 'refresh_token'])
47
49
  console.log(tokens.access_token) // 'abc123'
48
- console.log(tokens.refresh_token) // 'xyz789'
50
+
51
+ // Get all tracked tokens
52
+ const allTokens = getAllTokens()
53
+ console.log(allTokens)
54
+
55
+ // Get a single token by key
56
+ const accessToken = getSingleToken('access_token')
57
+ console.log(accessToken)
49
58
 
50
59
  // Decode a token
51
- const payload = decodeToken(tokens.access_token!)
60
+ const payload = decodeToken(accessToken!)
52
61
 
53
62
  // Check if a token is expired
54
- console.log(isExpired(tokens.access_token!))
63
+ console.log(isExpired(accessToken!))
55
64
 
56
65
  // Remove multiple tokens
57
66
  removeTokens(['access_token', 'refresh_token'])
58
67
 
59
68
  // Clear all tracked tokens
60
- clearAllTokens()
61
-
62
- return (
63
- <div>
64
- <p>Access Token: {tokens.access_token}</p>
65
- <p>Refresh Token: {tokens.refresh_token}</p>
66
- <p>Decoded Payload: {JSON.stringify(payload)}</p>
67
- </div>
68
- )
69
+ clearTokens()
69
70
  }
70
71
  ```
71
72
 
@@ -86,18 +87,26 @@ manager.set({
86
87
 
87
88
  // Get multiple tokens
88
89
  const tokens = manager.get(['access_token', 'refresh_token'])
89
- console.log(tokens.access_token) // 'abc123'
90
+ console.log(tokens.access_token)
90
91
 
91
- // Remove multiple tokens
92
- manager.remove(['access_token', 'refresh_token'])
92
+ // Get a single token
93
+ const access = manager.getOne('access_token')
94
+
95
+ // Get all tracked tokens
96
+ const allTokens = manager.getAll()
97
+ console.log(allTokens)
98
+
99
+ // Decode a token
100
+ console.log(manager.decode(access!))
93
101
 
94
- // Clear all tracked tokens
95
- manager.clearAll()
102
+ // Check if token is expired
103
+ console.log(manager.isExpired(access!))
96
104
 
97
- // Decode and check expiration
98
- console.log(manager.decode(tokens.access_token!))
99
- console.log(manager.isExpired(tokens.access_token!))
105
+ // Remove multiple tokens
106
+ manager.remove(['access_token', 'refresh_token'])
100
107
 
108
+ // Clear all tokens
109
+ manager.clear()
101
110
  ```
102
111
 
103
112
  ## API Reference
@@ -115,7 +124,11 @@ useTokenManager(options?: TokenManagerOptions)
115
124
  Returns:
116
125
  setTokens(tokens: Record<string, string>) // Set multiple tokens
117
126
 
118
- getTokens(keys: string | string[]) // Get multiple tokens
127
+ getTokens(keys: string | string[]) // Get multiple tokens
128
+
129
+ getAllTokens() // Get all tracked tokens
130
+
131
+ getSingleToken(key: string) //Get a single token by key
119
132
 
120
133
  removeTokens(keys: string | string[]) // Remove multiple tokens
121
134
 
@@ -129,6 +142,10 @@ TokenManager Class Methods
129
142
 
130
143
  get(keys: string | string[]) // Retrieve multiple tokens
131
144
 
145
+ getOne(key: string) // Retrieve a single token
146
+
147
+ getAll() // Get all tracked tokens
148
+
132
149
  remove(keys: string | string[]) // Delete multiple tokens
133
150
 
134
151
  decode<T = unknown>(token: string) // Decode a single token
@@ -163,11 +180,13 @@ configureTokenManager({ storage: 'cookie' })
163
180
  Checking Expiry Before API Call
164
181
 
165
182
  ```bash
166
- const { getTokens, isExpired } = useTokenManager()
167
- const { access_token } = getTokens(['access_token'])
183
+ const { getSingleToken, isExpired } = useTokenManager()
184
+ const accessToken = getSingleToken('access_token')
168
185
 
169
- if (!isExpired(access_token!)) {
170
- callApi(access_token)
186
+ if (!isExpired(accessToken!)) {
187
+ callApi(accessToken)
188
+ } else {
189
+ refreshToken()
171
190
  }
172
191
  ```
173
192
 
package/dist/index.d.mts CHANGED
@@ -9,8 +9,12 @@ declare class TokenManager {
9
9
  constructor(options?: TokenManagerOptions);
10
10
  /** Set multiple tokens at once */
11
11
  set(tokens: Record<string, string>): void;
12
- /** Get token(s) */
12
+ /** Get token(s) by key(s) */
13
13
  get(keys: string | string[]): Record<string, string | null>;
14
+ /** Get a single token by key */
15
+ getOne(key: string): string | null;
16
+ /** Get all tracked tokens */
17
+ getAll(): Record<string, string | null>;
14
18
  /** Remove specific tokens */
15
19
  remove(keys: string | string[]): void;
16
20
  /** Clear all tracked auth tokens */
@@ -26,8 +30,12 @@ declare class TokenManager {
26
30
  declare const useTokenManager: () => {
27
31
  /** Set multiple tokens */
28
32
  setTokens: (tokens: Record<string, string>) => void;
33
+ /** Get all tokens by keys */
34
+ getAllTokens: () => Record<string, string | null>;
29
35
  /** Get multiple tokens by keys */
30
36
  getTokens: (keys: string | string[]) => Record<string, string | null>;
37
+ /** Get a single token by key */
38
+ getSingleToken: (key: string) => string | null;
31
39
  /** Remove multiple tokens by keys */
32
40
  removeTokens: (keys: string | string[]) => void;
33
41
  clearTokens: () => void;
package/dist/index.d.ts CHANGED
@@ -9,8 +9,12 @@ declare class TokenManager {
9
9
  constructor(options?: TokenManagerOptions);
10
10
  /** Set multiple tokens at once */
11
11
  set(tokens: Record<string, string>): void;
12
- /** Get token(s) */
12
+ /** Get token(s) by key(s) */
13
13
  get(keys: string | string[]): Record<string, string | null>;
14
+ /** Get a single token by key */
15
+ getOne(key: string): string | null;
16
+ /** Get all tracked tokens */
17
+ getAll(): Record<string, string | null>;
14
18
  /** Remove specific tokens */
15
19
  remove(keys: string | string[]): void;
16
20
  /** Clear all tracked auth tokens */
@@ -26,8 +30,12 @@ declare class TokenManager {
26
30
  declare const useTokenManager: () => {
27
31
  /** Set multiple tokens */
28
32
  setTokens: (tokens: Record<string, string>) => void;
33
+ /** Get all tokens by keys */
34
+ getAllTokens: () => Record<string, string | null>;
29
35
  /** Get multiple tokens by keys */
30
36
  getTokens: (keys: string | string[]) => Record<string, string | null>;
37
+ /** Get a single token by key */
38
+ getSingleToken: (key: string) => string | null;
31
39
  /** Remove multiple tokens by keys */
32
40
  removeTokens: (keys: string | string[]) => void;
33
41
  clearTokens: () => void;
package/dist/index.js CHANGED
@@ -60,21 +60,27 @@ var TokenManager = class {
60
60
  else document.cookie = `${key}=${value}; path=/`;
61
61
  });
62
62
  }
63
- /** Get token(s) */
63
+ /** Get token(s) by key(s) */
64
64
  get(keys) {
65
65
  const keyArray = Array.isArray(keys) ? keys : [keys];
66
66
  const result = {};
67
67
  keyArray.forEach((key) => {
68
- let value = null;
69
- if (this.storage === "localStorage") value = localStorage.getItem(key);
70
- else if (this.storage === "sessionStorage") value = sessionStorage.getItem(key);
71
- else {
72
- const match = document.cookie.match(
73
- new RegExp("(^| )" + key + "=([^;]+)")
74
- );
75
- value = match ? match[2] : null;
76
- }
77
- result[key] = value;
68
+ result[key] = this.getOne(key);
69
+ });
70
+ return result;
71
+ }
72
+ /** Get a single token by key */
73
+ getOne(key) {
74
+ if (this.storage === "localStorage") return localStorage.getItem(key);
75
+ if (this.storage === "sessionStorage") return sessionStorage.getItem(key);
76
+ const match = document.cookie.match(new RegExp("(^| )" + key + "=([^;]+)"));
77
+ return match ? match[2] : null;
78
+ }
79
+ /** Get all tracked tokens */
80
+ getAll() {
81
+ const result = {};
82
+ this.trackedKeys.forEach((key) => {
83
+ result[key] = this.getOne(key);
78
84
  });
79
85
  return result;
80
86
  }
@@ -114,8 +120,8 @@ var TokenManager = class {
114
120
  isExpired(token) {
115
121
  let tokenToCheck = token;
116
122
  if (!tokenToCheck) {
117
- const stored = this.get("access_token");
118
- tokenToCheck = stored["access_token"] || void 0;
123
+ const stored = this.getOne("access_token");
124
+ tokenToCheck = stored || void 0;
119
125
  }
120
126
  if (!tokenToCheck) return true;
121
127
  const decoded = this.decode(tokenToCheck);
@@ -131,8 +137,12 @@ var useTokenManager = () => {
131
137
  return {
132
138
  /** Set multiple tokens */
133
139
  setTokens: (tokens) => manager.set(tokens),
140
+ /** Get all tokens by keys */
141
+ getAllTokens: () => manager.getAll(),
134
142
  /** Get multiple tokens by keys */
135
143
  getTokens: (keys) => manager.get(keys),
144
+ /** Get a single token by key */
145
+ getSingleToken: (key) => manager.getOne(key),
136
146
  /** Remove multiple tokens by keys */
137
147
  removeTokens: (keys) => manager.remove(keys),
138
148
  clearTokens: () => manager.clear(),
package/dist/index.mjs CHANGED
@@ -22,21 +22,27 @@ var TokenManager = class {
22
22
  else document.cookie = `${key}=${value}; path=/`;
23
23
  });
24
24
  }
25
- /** Get token(s) */
25
+ /** Get token(s) by key(s) */
26
26
  get(keys) {
27
27
  const keyArray = Array.isArray(keys) ? keys : [keys];
28
28
  const result = {};
29
29
  keyArray.forEach((key) => {
30
- let value = null;
31
- if (this.storage === "localStorage") value = localStorage.getItem(key);
32
- else if (this.storage === "sessionStorage") value = sessionStorage.getItem(key);
33
- else {
34
- const match = document.cookie.match(
35
- new RegExp("(^| )" + key + "=([^;]+)")
36
- );
37
- value = match ? match[2] : null;
38
- }
39
- result[key] = value;
30
+ result[key] = this.getOne(key);
31
+ });
32
+ return result;
33
+ }
34
+ /** Get a single token by key */
35
+ getOne(key) {
36
+ if (this.storage === "localStorage") return localStorage.getItem(key);
37
+ if (this.storage === "sessionStorage") return sessionStorage.getItem(key);
38
+ const match = document.cookie.match(new RegExp("(^| )" + key + "=([^;]+)"));
39
+ return match ? match[2] : null;
40
+ }
41
+ /** Get all tracked tokens */
42
+ getAll() {
43
+ const result = {};
44
+ this.trackedKeys.forEach((key) => {
45
+ result[key] = this.getOne(key);
40
46
  });
41
47
  return result;
42
48
  }
@@ -76,8 +82,8 @@ var TokenManager = class {
76
82
  isExpired(token) {
77
83
  let tokenToCheck = token;
78
84
  if (!tokenToCheck) {
79
- const stored = this.get("access_token");
80
- tokenToCheck = stored["access_token"] || void 0;
85
+ const stored = this.getOne("access_token");
86
+ tokenToCheck = stored || void 0;
81
87
  }
82
88
  if (!tokenToCheck) return true;
83
89
  const decoded = this.decode(tokenToCheck);
@@ -93,8 +99,12 @@ var useTokenManager = () => {
93
99
  return {
94
100
  /** Set multiple tokens */
95
101
  setTokens: (tokens) => manager.set(tokens),
102
+ /** Get all tokens by keys */
103
+ getAllTokens: () => manager.getAll(),
96
104
  /** Get multiple tokens by keys */
97
105
  getTokens: (keys) => manager.get(keys),
106
+ /** Get a single token by key */
107
+ getSingleToken: (key) => manager.getOne(key),
98
108
  /** Remove multiple tokens by keys */
99
109
  removeTokens: (keys) => manager.remove(keys),
100
110
  clearTokens: () => manager.clear(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-token-manager",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "A simple React library to manage JWT tokens",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
package/src/core.ts CHANGED
@@ -31,36 +31,41 @@ export class TokenManager {
31
31
  set(tokens: Record<string, string>) {
32
32
  Object.entries(tokens).forEach(([key, value]) => {
33
33
  this.trackedKeys.add(key)
34
-
35
34
  if (this.storage === 'localStorage') localStorage.setItem(key, value)
36
35
  else if (this.storage === 'sessionStorage') sessionStorage.setItem(key, value)
37
36
  else document.cookie = `${key}=${value}; path=/`
38
37
  })
39
38
  }
40
39
 
41
- /** Get token(s) */
40
+ /** Get token(s) by key(s) */
42
41
  get(keys: string | string[]): Record<string, string | null> {
43
42
  const keyArray = Array.isArray(keys) ? keys : [keys]
44
43
  const result: Record<string, string | null> = {}
45
44
 
46
45
  keyArray.forEach((key) => {
47
- let value: string | null = null
48
-
49
- if (this.storage === 'localStorage') value = localStorage.getItem(key)
50
- else if (this.storage === 'sessionStorage') value = sessionStorage.getItem(key)
51
- else {
52
- const match = document.cookie.match(
53
- new RegExp('(^| )' + key + '=([^;]+)')
54
- )
55
- value = match ? match[2] : null
56
- }
57
-
58
- result[key] = value
46
+ result[key] = this.getOne(key)
59
47
  })
60
48
 
61
49
  return result
62
50
  }
63
51
 
52
+ /** Get a single token by key */
53
+ getOne(key: string): string | null {
54
+ if (this.storage === 'localStorage') return localStorage.getItem(key)
55
+ if (this.storage === 'sessionStorage') return sessionStorage.getItem(key)
56
+ const match = document.cookie.match(new RegExp('(^| )' + key + '=([^;]+)'))
57
+ return match ? match[2] : null
58
+ }
59
+
60
+ /** Get all tracked tokens */
61
+ getAll(): Record<string, string | null> {
62
+ const result: Record<string, string | null> = {}
63
+ this.trackedKeys.forEach((key) => {
64
+ result[key] = this.getOne(key)
65
+ })
66
+ return result
67
+ }
68
+
64
69
  /** Remove specific tokens */
65
70
  remove(keys: string | string[]) {
66
71
  const keyArray = Array.isArray(keys) ? keys : [keys]
@@ -103,10 +108,9 @@ export class TokenManager {
103
108
  isExpired(token?: string): boolean {
104
109
  let tokenToCheck = token
105
110
 
106
- // If no token passed, try to get access_token
107
111
  if (!tokenToCheck) {
108
- const stored = this.get('access_token')
109
- tokenToCheck = stored['access_token'] || undefined
112
+ const stored = this.getOne('access_token')
113
+ tokenToCheck = stored || undefined
110
114
  }
111
115
 
112
116
  if (!tokenToCheck) return true
@@ -117,5 +121,4 @@ export class TokenManager {
117
121
 
118
122
  return Date.now() >= decoded.exp * 1000
119
123
  }
120
-
121
124
  }
package/src/hook.ts CHANGED
@@ -8,11 +8,18 @@ export const useTokenManager = () => {
8
8
  /** Set multiple tokens */
9
9
  setTokens: (tokens: Record<string, string>) => manager.set(tokens),
10
10
 
11
+ /** Get all tokens by keys */
12
+ getAllTokens: () => manager.getAll(),
13
+
11
14
  /** Get multiple tokens by keys */
12
15
  getTokens: (keys: string | string[]) => manager.get(keys),
13
16
 
17
+ /** Get a single token by key */
18
+ getSingleToken: (key: string) => manager.getOne(key),
19
+
14
20
  /** Remove multiple tokens by keys */
15
21
  removeTokens: (keys: string | string[]) => manager.remove(keys),
22
+
16
23
 
17
24
  clearTokens: () => manager.clear(),
18
25