@logto/browser 0.1.4 → 0.1.5
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/lib/index.d.ts +1 -2
- package/lib/index.js +9 -10
- package/package.json +6 -6
package/lib/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export type { IdTokenClaims, UserInfoResponse } from '@logto/js';
|
|
|
5
5
|
export * from './errors';
|
|
6
6
|
export declare type LogtoConfig = {
|
|
7
7
|
endpoint: string;
|
|
8
|
-
|
|
8
|
+
appId: string;
|
|
9
9
|
scopes?: string[];
|
|
10
10
|
resources?: string[];
|
|
11
11
|
usingPersistStorage?: boolean;
|
|
@@ -41,7 +41,6 @@ export default class LogtoClient {
|
|
|
41
41
|
protected readonly requester: Requester;
|
|
42
42
|
protected readonly accessTokenMap: Map<string, AccessToken>;
|
|
43
43
|
private readonly getAccessTokenPromiseMap;
|
|
44
|
-
private _refreshToken;
|
|
45
44
|
private _idToken;
|
|
46
45
|
constructor(logtoConfig: LogtoConfig, requester?: <T>(input: RequestInfo, init?: RequestInit | undefined) => Promise<T>);
|
|
47
46
|
get isAuthenticated(): boolean;
|
package/lib/index.js
CHANGED
|
@@ -33,9 +33,8 @@ class LogtoClient {
|
|
|
33
33
|
this.accessTokenMap = new Map();
|
|
34
34
|
this.getAccessTokenPromiseMap = new Map();
|
|
35
35
|
this.logtoConfig = logtoConfig;
|
|
36
|
-
this.logtoStorageKey = (0, utils_1.buildLogtoKey)(logtoConfig.
|
|
36
|
+
this.logtoStorageKey = (0, utils_1.buildLogtoKey)(logtoConfig.appId);
|
|
37
37
|
this.requester = requester;
|
|
38
|
-
this._refreshToken = localStorage.getItem((0, utils_1.buildRefreshTokenKey)(this.logtoStorageKey));
|
|
39
38
|
this._idToken = localStorage.getItem((0, utils_1.buildIdTokenKey)(this.logtoStorageKey));
|
|
40
39
|
}
|
|
41
40
|
get isAuthenticated() {
|
|
@@ -64,10 +63,9 @@ class LogtoClient {
|
|
|
64
63
|
sessionStorage.setItem(this.logtoStorageKey, jsonItem);
|
|
65
64
|
}
|
|
66
65
|
get refreshToken() {
|
|
67
|
-
return this.
|
|
66
|
+
return localStorage.getItem((0, utils_1.buildRefreshTokenKey)(this.logtoStorageKey));
|
|
68
67
|
}
|
|
69
68
|
set refreshToken(refreshToken) {
|
|
70
|
-
this._refreshToken = refreshToken;
|
|
71
69
|
const refreshTokenKey = (0, utils_1.buildRefreshTokenKey)(this.logtoStorageKey);
|
|
72
70
|
if (!refreshToken) {
|
|
73
71
|
localStorage.removeItem(refreshTokenKey);
|
|
@@ -134,7 +132,7 @@ class LogtoClient {
|
|
|
134
132
|
return (0, js_1.fetchUserInfo)(userinfoEndpoint, accessToken, this.requester);
|
|
135
133
|
}
|
|
136
134
|
async signIn(redirectUri) {
|
|
137
|
-
const { clientId, resources, scopes: customScopes } = this.logtoConfig;
|
|
135
|
+
const { appId: clientId, resources, scopes: customScopes } = this.logtoConfig;
|
|
138
136
|
const { authorizationEndpoint } = await this.getOidcConfig();
|
|
139
137
|
const codeVerifier = (0, js_1.generateCodeVerifier)();
|
|
140
138
|
const codeChallenge = await (0, js_1.generateCodeChallenge)(codeVerifier);
|
|
@@ -168,7 +166,7 @@ class LogtoClient {
|
|
|
168
166
|
}
|
|
169
167
|
const { redirectUri, state, codeVerifier } = signInSession;
|
|
170
168
|
const code = (0, js_1.verifyAndParseCodeFromCallbackUri)(callbackUri, redirectUri, state);
|
|
171
|
-
const { clientId } = logtoConfig;
|
|
169
|
+
const { appId: clientId } = logtoConfig;
|
|
172
170
|
const { tokenEndpoint } = await this.getOidcConfig();
|
|
173
171
|
const codeTokenResponse = await (0, js_1.fetchTokenByAuthorizationCode)({
|
|
174
172
|
clientId,
|
|
@@ -179,12 +177,13 @@ class LogtoClient {
|
|
|
179
177
|
}, requester);
|
|
180
178
|
await this.verifyIdToken(codeTokenResponse.idToken);
|
|
181
179
|
this.saveCodeToken(codeTokenResponse);
|
|
180
|
+
this.signInSession = null;
|
|
182
181
|
}
|
|
183
182
|
async signOut(postLogoutRedirectUri) {
|
|
184
183
|
if (!this.idToken) {
|
|
185
184
|
throw new errors_1.LogtoClientError('not_authenticated');
|
|
186
185
|
}
|
|
187
|
-
const { clientId } = this.logtoConfig;
|
|
186
|
+
const { appId: clientId } = this.logtoConfig;
|
|
188
187
|
const { endSessionEndpoint, revocationEndpoint } = await this.getOidcConfig();
|
|
189
188
|
if (this.refreshToken) {
|
|
190
189
|
try {
|
|
@@ -210,7 +209,7 @@ class LogtoClient {
|
|
|
210
209
|
}
|
|
211
210
|
try {
|
|
212
211
|
const accessTokenKey = (0, utils_1.buildAccessTokenKey)(resource);
|
|
213
|
-
const { clientId } = this.logtoConfig;
|
|
212
|
+
const { appId: clientId } = this.logtoConfig;
|
|
214
213
|
const { tokenEndpoint } = await this.getOidcConfig();
|
|
215
214
|
const { accessToken, refreshToken, idToken, scope, expiresIn } = await (0, js_1.fetchTokenByRefreshToken)({ clientId, tokenEndpoint, refreshToken: this.refreshToken, resource }, this.requester);
|
|
216
215
|
this.accessTokenMap.set(accessTokenKey, {
|
|
@@ -239,11 +238,11 @@ class LogtoClient {
|
|
|
239
238
|
return (0, jose_1.createRemoteJWKSet)(new URL(jwksUri));
|
|
240
239
|
}
|
|
241
240
|
async verifyIdToken(idToken) {
|
|
242
|
-
const {
|
|
241
|
+
const { appId } = this.logtoConfig;
|
|
243
242
|
const { issuer } = await this.getOidcConfig();
|
|
244
243
|
const jwtVerifyGetKey = await this.getJwtVerifyGetKey();
|
|
245
244
|
try {
|
|
246
|
-
await (0, js_1.verifyIdToken)(idToken,
|
|
245
|
+
await (0, js_1.verifyIdToken)(idToken, appId, issuer, jwtVerifyGetKey);
|
|
247
246
|
}
|
|
248
247
|
catch (error) {
|
|
249
248
|
throw new errors_1.LogtoClientError('invalid_id_token', error);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logto/browser",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"exports": "./lib/index.js",
|
|
6
6
|
"typings": "./lib/index.d.ts",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"lint": "eslint --ext .ts src",
|
|
22
22
|
"test": "jest",
|
|
23
23
|
"test:coverage": "jest --silent --coverage",
|
|
24
|
-
"prepack": "pnpm test
|
|
24
|
+
"prepack": "pnpm test"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@logto/js": "^0.1.
|
|
27
|
+
"@logto/js": "^0.1.5",
|
|
28
28
|
"@silverhand/essentials": "^1.1.6",
|
|
29
29
|
"jose": "^4.5.0",
|
|
30
30
|
"lodash.get": "^4.4.2",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@jest/types": "^27.5.1",
|
|
36
|
-
"@silverhand/eslint-config": "^0.
|
|
37
|
-
"@silverhand/ts-config": "^0.
|
|
36
|
+
"@silverhand/eslint-config": "^0.10.0",
|
|
37
|
+
"@silverhand/ts-config": "^0.10.0",
|
|
38
38
|
"@types/jest": "^27.4.0",
|
|
39
39
|
"@types/lodash.get": "^4.4.6",
|
|
40
40
|
"@types/lodash.once": "^4.1.6",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "ed98d55270ae923f95a57fe4f3bc5a5959518c06"
|
|
59
59
|
}
|