@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 +23 -15
- package/dist/index.d.ts +1 -1
- package/dist/rest-strategy.d.ts +4 -2
- package/dist/rest-strategy.js +38 -14
- package/dist/rest-strategy.js.map +1 -1
- package/dist/types.d.ts +13 -2
- package/package.json +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
- `
|
|
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
|
|
139
|
+
## Token storage
|
|
132
140
|
|
|
133
|
-
|
|
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';
|
package/dist/rest-strategy.d.ts
CHANGED
|
@@ -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
|
|
10
|
-
private readonly
|
|
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
|
}
|
package/dist/rest-strategy.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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.
|
|
138
|
-
|
|
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 =
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAiE;AACjE,sDAAuE;AAGvE,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,
|
|
1
|
+
{"version":3,"file":"rest-strategy.js","sourceRoot":"","sources":["../src/rest-strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAiE;AACjE,sDAAuE;AAGvE,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,sBAAsB,GAAgB,gBAAgB,CAAC;AAE7D,MAAa,YAAY;IAWvB,YAAY,MAAc;;QAFlB,mBAAc,GAAyB,IAAI,CAAC;QA0C7C,cAAS,GAAG,GAA2B,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;aAC7C;YAED,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAE3D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAEvC,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aACpE;YAED,OAAO,eAAe,CAAC;QACzB,CAAC,CAAA,CAAC;QAEK,WAAM,GAAG,CAAmC,MAAU,EAAc,EAAE;YAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC/C;YACD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,WAAW,GAAuB,EAAE,CAAC;YACzC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACxC,WAAW,GAAG,MAA4B,CAAC;aAC5C;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,kCAAO,WAAW,KAAE,MAAM,IAAG,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aACpE;YACD,OAAO,QAAa,CAAC;QACvB,CAAC,CAAA,CAAC;QAEK,WAAM,GAAG,CAAmC,MAAU,EAAc,EAAE;YAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC/C;YACD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,WAAW,GAAuB,EAAE,CAAC;YACzC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACxC,WAAW,GAAG,MAA4B,CAAC;aAC5C;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,kCAAO,WAAW,KAAE,MAAM,IAAG,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aACpE;YACD,OAAO,QAAa,CAAC;QACvB,CAAC,CAAA,CAAC;QAEK,YAAO,GAAG,GAAwB,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,GAAG,EAAE;gBACR,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;YAED,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAA,CAAC;QAEK,iBAAY,GAAG,GAAwB,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACrD;YAED,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO;aACR;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC;aAClC;YAED,IAAI,QAAQ,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClD,QAAQ,GAAG,OAAO,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAE/C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;aACpE;YAED,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAA,CAAC;QAEK,UAAK,GAAG,GAAS,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;aAC1F;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,QAAiB,EAAE,GAAY,EAAU,EAAE;YACjE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBAChC,OAAO,QAAQ,CAAC;aACjB;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACzC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,QAAiB,EAAE,GAAY,EAAsB,EAAE;;YACpF,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,kBAAkB,0CAAE,QAAQ,CAAC;YACjD,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACpC,OAAO,KAAK,IAAI,SAAS,CAAC;QAC5B,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,KAAa,EAAE,iBAA0B,EAAQ,EAAE;YAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAChE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,EAAE;gBAChD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACxE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;aACxE;YACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QACrC,CAAC,CAAC;QA9KA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,KAAc,MAAM,EAAf,IAAI,UAAK,MAAM,EAA1E,oDAAiE,CAAS,CAAC;QAEjF,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAc,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI;YAChC,GAAG,EAAE,kBAAkB;YACvB,OAAO,EAAE,sBAAsB;SAChC,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,aAAa,GAAG,MAAA,MAAM,CAAC,aAAa,mCAAI,eAAK,CAAC,MAAM,EAAE,CAAC;IAC9D,CAAC;IAEO,UAAU,CAAC,IAAiB;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK;;QACP,OAAO,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mCAAI,SAAS,CAAC;IAC9F,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IACrC,CAAC;CA0IF;AA3LD,oCA2LC"}
|
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
|
-
|
|
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
|
};
|