@auth-strategy-manager/rest 1.0.4 → 1.2.0

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
@@ -29,19 +29,18 @@ const axiosInstance = axios.create({
29
29
  // Create REST strategy
30
30
  const restStrategy = new RestStrategy({
31
31
  name: 'my-rest',
32
- tokenKey: 'access_token',
33
32
  signInUrl: 'https://myapp.com/sign-in',
34
33
  axiosInstance,
35
-
36
- // URL endpoints
34
+ accessToken: {
35
+ key: 'access_token',
36
+ storage: 'sessionStorage',
37
+ getToken: (response: unknown) => (response as any).data?.access_token || (response as any).access_token,
38
+ },
37
39
  checkAuth: { url: '/auth/check-auth', method: 'GET' },
38
40
  signIn: { url: '/auth/sign-in', method: 'POST' },
39
41
  signUp: { url: '/auth/sign-up', method: 'POST' },
40
42
  signOut: { url: '/auth/sign-out', method: 'POST' },
41
43
  refresh: { url: '/auth/refresh', method: 'POST' },
42
-
43
- // Custom token extraction function
44
- getToken: (response: unknown) => (response as any).data?.access_token || (response as any).access_token
45
44
  });
46
45
 
47
46
  // Use with strategy manager
@@ -61,7 +60,7 @@ const isAuthenticated = await restStrategy.checkAuth();
61
60
  // Sign out
62
61
  await restStrategy.signOut();
63
62
 
64
- // Очистка состояния
63
+ // Clear state
65
64
  restStrategy.clear();
66
65
  ```
67
66
 
@@ -77,16 +76,25 @@ type RestConfig = {
77
76
  signOut: UrlConfig;
78
77
  refresh: UrlConfig;
79
78
  name?: string;
80
- tokenKey?: string;
79
+ accessToken: AccessTokenConfig;
80
+ refreshToken?: RefreshTokenConfig;
81
81
  signInUrl?: string;
82
82
  axiosInstance?: AxiosInstance;
83
+ };
84
+
85
+ type AccessTokenConfig = {
86
+ key: string;
87
+ storage: 'sessionStorage' | 'localStorage';
83
88
  getToken?: (response: unknown, url?: string) => string;
84
89
  };
85
90
 
86
- type UrlConfig = {
87
- url: string;
88
- method?: string;
91
+ type RefreshTokenConfig = {
92
+ key: string;
93
+ storage: 'sessionStorage' | 'localStorage';
94
+ getToken?: (response: unknown, url?: string) => string;
89
95
  };
96
+
97
+ type UrlConfig = { url: string; method?: string };
90
98
  ```
91
99
 
92
100
  ### Parameters
@@ -97,10 +105,10 @@ type UrlConfig = {
97
105
  - `signOut` - Endpoint for user sign out
98
106
  - `refresh` - Endpoint for token refresh
99
107
  - `name` - Strategy name (default: 'rest')
100
- - `tokenKey` - Storage key for token (default: 'access')
108
+ - `accessToken` - Access token storage and extraction (required)
109
+ - `refreshToken` - Optional: refresh token storage and extraction (e.g. access in sessionStorage, refresh in localStorage)
101
110
  - `signInUrl` - URL for redirect after logout
102
111
  - `axiosInstance` - Custom axios instance
103
- - `getToken` - Custom function for extracting token from response
104
112
 
105
113
  ## API
106
114
 
@@ -128,9 +136,9 @@ constructor(config: RestConfig)
128
136
  - `token?: string` - Current token
129
137
  - `isAuthenticated: boolean` - Authentication status
130
138
 
131
- ## Token Storage
139
+ ## Token storage
132
140
 
133
- Tokens are stored in `sessionStorage` with the configured `tokenKey`.
141
+ Access token (and optionally refresh token) are stored using the configured `accessToken` and `refreshToken` configs. Each can use `sessionStorage` or `localStorage` independently.
134
142
 
135
143
  ## License
136
144
 
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { RestStrategy } from './rest-strategy';
2
- export type { Config as RestConfig, UrlConfig } from './types';
2
+ export type { AccessTokenConfig, Config as RestConfig, RefreshTokenConfig, StorageType, TokenConfig, UrlConfig, } from './types';
@@ -6,11 +6,12 @@ export declare class RestStrategy implements Strategy {
6
6
  readonly axiosInstance: AxiosInstance;
7
7
  readonly urls: Partial<Record<UrlName, any>>;
8
8
  signInUrl?: string;
9
- private readonly tokenKey;
10
- private readonly getToken?;
9
+ private readonly accessToken;
10
+ private readonly refreshTokenConfig?;
11
11
  private readonly helper;
12
12
  private currentRefresh;
13
13
  constructor(config: Config);
14
+ private getStorage;
14
15
  get startUrl(): string | undefined;
15
16
  set startUrl(url: string);
16
17
  get token(): string | undefined;
@@ -23,5 +24,6 @@ export declare class RestStrategy implements Strategy {
23
24
  refreshToken: () => Promise<void>;
24
25
  clear: () => void;
25
26
  private extractToken;
27
+ private extractRefreshToken;
26
28
  private setAuthParams;
27
29
  }
@@ -27,7 +27,8 @@ exports.RestStrategy = void 0;
27
27
  const axios_1 = __importDefault(require("axios"));
28
28
  const core_1 = require("@auth-strategy-manager/core");
29
29
  const DEFAULT_NAME = 'rest';
30
- const DEFAULT_TOKEN_KEY = 'access';
30
+ const DEFAULT_ACCESS_KEY = 'access';
31
+ const DEFAULT_ACCESS_STORAGE = 'sessionStorage';
31
32
  class RestStrategy {
32
33
  constructor(config) {
33
34
  var _a;
@@ -45,7 +46,7 @@ class RestStrategy {
45
46
  const isAuthenticated = Boolean(token);
46
47
  if (isAuthenticated) {
47
48
  this.helper.activeStrategyName = this.name;
48
- this.setAuthParams(token);
49
+ this.setAuthParams(token, this.extractRefreshToken(response, url));
49
50
  }
50
51
  return isAuthenticated;
51
52
  });
@@ -61,7 +62,7 @@ class RestStrategy {
61
62
  const response = yield this.axiosInstance(url, Object.assign(Object.assign({}, axiosConfig), { method }));
62
63
  const token = this.extractToken(response, url);
63
64
  if (token) {
64
- this.setAuthParams(token);
65
+ this.setAuthParams(token, this.extractRefreshToken(response, url));
65
66
  }
66
67
  return response;
67
68
  });
@@ -77,7 +78,7 @@ class RestStrategy {
77
78
  const response = yield this.axiosInstance(url, Object.assign(Object.assign({}, axiosConfig), { method }));
78
79
  const token = this.extractToken(response, url);
79
80
  if (token) {
80
- this.setAuthParams(token);
81
+ this.setAuthParams(token, this.extractRefreshToken(response, url));
81
82
  }
82
83
  return response;
83
84
  });
@@ -111,35 +112,58 @@ class RestStrategy {
111
112
  const response = yield this.axiosInstance(url, { method });
112
113
  const token = this.extractToken(response, url);
113
114
  if (token) {
114
- this.setAuthParams(token);
115
+ this.setAuthParams(token, this.extractRefreshToken(response, url));
115
116
  }
116
117
  resolver();
117
118
  this.currentRefresh = null;
118
119
  });
119
120
  this.clear = () => {
120
- window.sessionStorage.clear();
121
+ this.getStorage(this.accessToken.storage).removeItem(this.accessToken.key);
122
+ if (this.refreshTokenConfig) {
123
+ this.getStorage(this.refreshTokenConfig.storage).removeItem(this.refreshTokenConfig.key);
124
+ }
121
125
  this.helper.reset();
122
126
  };
123
127
  this.extractToken = (response, url) => {
124
128
  if (typeof response === 'string') {
125
129
  return response;
126
130
  }
127
- return this.getToken ? this.getToken(response, url) : '';
131
+ const getter = this.accessToken.getToken;
132
+ return getter ? getter(response, url) : '';
133
+ };
134
+ this.extractRefreshToken = (response, url) => {
135
+ var _a;
136
+ const getter = (_a = this.refreshTokenConfig) === null || _a === void 0 ? void 0 : _a.getToken;
137
+ if (!getter)
138
+ return undefined;
139
+ const value = getter(response, url);
140
+ return value || undefined;
128
141
  };
129
- this.setAuthParams = (token) => {
130
- window.sessionStorage.setItem(this.tokenKey, token);
142
+ this.setAuthParams = (token, refreshTokenValue) => {
143
+ const accessStorage = this.getStorage(this.accessToken.storage);
144
+ accessStorage.setItem(this.accessToken.key, token);
145
+ if (this.refreshTokenConfig && refreshTokenValue) {
146
+ const refreshStorage = this.getStorage(this.refreshTokenConfig.storage);
147
+ refreshStorage.setItem(this.refreshTokenConfig.key, refreshTokenValue);
148
+ }
131
149
  this.helper.activeStrategyName = this.name;
132
150
  this.helper.isAuthenticated = true;
133
151
  };
134
- const { name, tokenKey, getToken, signInUrl: loginUrl } = config, urls = __rest(config, ["name", "tokenKey", "getToken", "signInUrl"]);
152
+ const { name, accessToken, refreshToken, signInUrl: loginUrl } = config, urls = __rest(config, ["name", "accessToken", "refreshToken", "signInUrl"]);
135
153
  this.helper = new core_1.StrategyHelper();
136
154
  this.name = name || DEFAULT_NAME;
137
- this.tokenKey = tokenKey || DEFAULT_TOKEN_KEY;
138
- this.getToken = getToken;
155
+ this.accessToken = accessToken !== null && accessToken !== void 0 ? accessToken : {
156
+ key: DEFAULT_ACCESS_KEY,
157
+ storage: DEFAULT_ACCESS_STORAGE,
158
+ };
159
+ this.refreshTokenConfig = refreshToken;
139
160
  this.signInUrl = loginUrl;
140
161
  this.urls = urls;
141
162
  this.axiosInstance = (_a = config.axiosInstance) !== null && _a !== void 0 ? _a : axios_1.default.create();
142
163
  }
164
+ getStorage(type) {
165
+ return window[type];
166
+ }
143
167
  get startUrl() {
144
168
  return this.helper.startUrl;
145
169
  }
@@ -148,10 +172,10 @@ class RestStrategy {
148
172
  }
149
173
  get token() {
150
174
  var _a;
151
- return (_a = window.sessionStorage.getItem(this.tokenKey)) !== null && _a !== void 0 ? _a : undefined;
175
+ return (_a = this.getStorage(this.accessToken.storage).getItem(this.accessToken.key)) !== null && _a !== void 0 ? _a : undefined;
152
176
  }
153
177
  set token(token) {
154
- window.sessionStorage.setItem(this.tokenKey, token);
178
+ this.getStorage(this.accessToken.storage).setItem(this.accessToken.key, token);
155
179
  }
156
180
  get isAuthenticated() {
157
181
  return this.helper.isAuthenticated;
@@ -1 +1 @@
1
- {"version":3,"file":"rest-strategy.js","sourceRoot":"","sources":["../src/rest-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest-strategy.js","sourceRoot":"","sources":["../src/rest-strategy.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -4,11 +4,22 @@ export type UrlConfig = {
4
4
  method?: AxiosRequestConfig['method'];
5
5
  };
6
6
  export type UrlName = 'checkAuth' | 'signIn' | 'signUp' | 'signOut' | 'refresh';
7
+ export type StorageType = 'sessionStorage' | 'localStorage';
8
+ export type TokenConfig = {
9
+ key: string;
10
+ storage: StorageType;
11
+ /** Extract access / refresh token from API response */
12
+ getToken?: (response: unknown, url?: string) => string;
13
+ };
14
+ export type AccessTokenConfig = TokenConfig;
15
+ export type RefreshTokenConfig = TokenConfig;
7
16
  export type Config = Record<UrlName, UrlConfig> & {
8
17
  name?: string;
9
- tokenKey?: string;
18
+ /** Where and how to store the access token. Default: { key: 'access', storage: 'sessionStorage' } */
19
+ accessToken?: AccessTokenConfig;
20
+ /** Optional: where and how to store the refresh token (e.g. access in sessionStorage, refresh in localStorage) */
21
+ refreshToken?: RefreshTokenConfig;
10
22
  /** URL for redirecting to the authorization page */
11
23
  signInUrl?: string;
12
24
  axiosInstance?: any;
13
- getToken?: (response: unknown, url?: string) => string;
14
25
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auth-strategy-manager/rest",
3
- "version": "1.0.4",
3
+ "version": "1.2.0",
4
4
  "description": "REST API strategy for auth-strategy-manager",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",