@logto/js 0.2.0 → 0.2.3-alpha.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/lib/module.js ADDED
@@ -0,0 +1,356 @@
1
+ import $lyZgO$camelcasekeys from "camelcase-keys";
2
+ import {conditional as $lyZgO$conditional, UrlSafeBase64 as $lyZgO$UrlSafeBase64, isNode as $lyZgO$isNode} from "@silverhand/essentials";
3
+ import $lyZgO$lodashget from "lodash.get";
4
+ import {fromUint8Array as $lyZgO$fromUint8Array} from "js-base64";
5
+ import {jwtVerify as $lyZgO$jwtVerify} from "jose";
6
+ import {type as $lyZgO$type, string as $lyZgO$string, number as $lyZgO$number, nullable as $lyZgO$nullable, optional as $lyZgO$optional, array as $lyZgO$array, assert as $lyZgO$assert} from "superstruct";
7
+
8
+ function $parcel$exportWildcard(dest, source) {
9
+ Object.keys(source).forEach(function(key) {
10
+ if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
11
+ return;
12
+ }
13
+
14
+ Object.defineProperty(dest, key, {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return source[key];
18
+ }
19
+ });
20
+ });
21
+
22
+ return dest;
23
+ }
24
+ function $parcel$export(e, n, v, s) {
25
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
26
+ }
27
+ var $1eda3e9ea5865065$exports = {};
28
+ var $ce6f2a62716522ae$exports = {};
29
+
30
+ $parcel$export($ce6f2a62716522ae$exports, "fetchTokenByAuthorizationCode", () => $ce6f2a62716522ae$export$684f740cd70532d4);
31
+ $parcel$export($ce6f2a62716522ae$exports, "fetchTokenByRefreshToken", () => $ce6f2a62716522ae$export$9909137b467efb8b);
32
+
33
+ var $5422b71ae76f21f1$exports = {};
34
+
35
+ $parcel$export($5422b71ae76f21f1$exports, "ContentType", () => $5422b71ae76f21f1$export$e2e108cbe2e4f865);
36
+ $parcel$export($5422b71ae76f21f1$exports, "TokenGrantType", () => $5422b71ae76f21f1$export$3f2aafdd1ccae76c);
37
+ $parcel$export($5422b71ae76f21f1$exports, "QueryKey", () => $5422b71ae76f21f1$export$65f63a8bc3cba53d);
38
+ $parcel$export($5422b71ae76f21f1$exports, "Prompt", () => $5422b71ae76f21f1$export$83716a4aa1642908);
39
+ const $5422b71ae76f21f1$export$e2e108cbe2e4f865 = {
40
+ formUrlEncoded: {
41
+ "Content-Type": "application/x-www-form-urlencoded"
42
+ }
43
+ };
44
+ let $5422b71ae76f21f1$export$3f2aafdd1ccae76c;
45
+ (function(TokenGrantType1) {
46
+ TokenGrantType1["AuthorizationCode"] = "authorization_code";
47
+ TokenGrantType1["RefreshToken"] = "refresh_token";
48
+ })($5422b71ae76f21f1$export$3f2aafdd1ccae76c || ($5422b71ae76f21f1$export$3f2aafdd1ccae76c = {}));
49
+ let $5422b71ae76f21f1$export$65f63a8bc3cba53d;
50
+ (function(QueryKey1) {
51
+ QueryKey1["ClientId"] = "client_id";
52
+ QueryKey1["Code"] = "code";
53
+ QueryKey1["CodeChallenge"] = "code_challenge";
54
+ QueryKey1["CodeChallengeMethod"] = "code_challenge_method";
55
+ QueryKey1["CodeVerifier"] = "code_verifier";
56
+ QueryKey1["Error"] = "error";
57
+ QueryKey1["ErrorDescription"] = "error_description";
58
+ QueryKey1["GrantType"] = "grant_type";
59
+ QueryKey1["IdToken"] = "id_token";
60
+ QueryKey1["IdTokenHint"] = "id_token_hint";
61
+ QueryKey1["PostLogoutRedirectUri"] = "post_logout_redirect_uri";
62
+ QueryKey1["Prompt"] = "prompt";
63
+ QueryKey1["RedirectUri"] = "redirect_uri";
64
+ QueryKey1["RefreshToken"] = "refresh_token";
65
+ QueryKey1["Resource"] = "resource";
66
+ QueryKey1["ResponseType"] = "response_type";
67
+ QueryKey1["Scope"] = "scope";
68
+ QueryKey1["State"] = "state";
69
+ QueryKey1["Token"] = "token";
70
+ })($5422b71ae76f21f1$export$65f63a8bc3cba53d || ($5422b71ae76f21f1$export$65f63a8bc3cba53d = {}));
71
+ let $5422b71ae76f21f1$export$83716a4aa1642908;
72
+ (function(Prompt1) {
73
+ Prompt1["Consent"] = "consent";
74
+ Prompt1["Login"] = "login";
75
+ })($5422b71ae76f21f1$export$83716a4aa1642908 || ($5422b71ae76f21f1$export$83716a4aa1642908 = {}));
76
+
77
+
78
+ const $ce6f2a62716522ae$export$684f740cd70532d4 = async ({ clientId: clientId , tokenEndpoint: tokenEndpoint , redirectUri: redirectUri , codeVerifier: codeVerifier , code: code , resource: resource }, requester)=>{
79
+ const parameters = new URLSearchParams();
80
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).ClientId, clientId);
81
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Code, code);
82
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).CodeVerifier, codeVerifier);
83
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).RedirectUri, redirectUri);
84
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).GrantType, (0, $5422b71ae76f21f1$export$3f2aafdd1ccae76c).AuthorizationCode);
85
+ if (resource) parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Resource, resource);
86
+ const snakeCaseCodeTokenResponse = await requester(tokenEndpoint, {
87
+ method: "POST",
88
+ headers: (0, $5422b71ae76f21f1$export$e2e108cbe2e4f865).formUrlEncoded,
89
+ body: parameters
90
+ });
91
+ return (0, $lyZgO$camelcasekeys)(snakeCaseCodeTokenResponse);
92
+ };
93
+ const $ce6f2a62716522ae$export$9909137b467efb8b = async ({ clientId: clientId , tokenEndpoint: tokenEndpoint , refreshToken: refreshToken , resource: resource , scopes: scopes }, requester)=>{
94
+ const parameters = new URLSearchParams();
95
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).ClientId, clientId);
96
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).RefreshToken, refreshToken);
97
+ parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).GrantType, (0, $5422b71ae76f21f1$export$3f2aafdd1ccae76c).RefreshToken);
98
+ if (resource) parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Resource, resource);
99
+ if (scopes?.length) parameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Scope, scopes.join(" "));
100
+ const snakeCaseRefreshTokenTokenResponse = await requester(tokenEndpoint, {
101
+ method: "POST",
102
+ headers: (0, $5422b71ae76f21f1$export$e2e108cbe2e4f865).formUrlEncoded,
103
+ body: parameters
104
+ });
105
+ return (0, $lyZgO$camelcasekeys)(snakeCaseRefreshTokenTokenResponse);
106
+ };
107
+
108
+
109
+ var $eefdbfea5ec3abd9$exports = {};
110
+
111
+ $parcel$export($eefdbfea5ec3abd9$exports, "discoveryPath", () => $eefdbfea5ec3abd9$export$815bda5ead26b243);
112
+ $parcel$export($eefdbfea5ec3abd9$exports, "fetchOidcConfig", () => $eefdbfea5ec3abd9$export$98242d8e822ad11f);
113
+
114
+ const $eefdbfea5ec3abd9$export$815bda5ead26b243 = "/oidc/.well-known/openid-configuration";
115
+ const $eefdbfea5ec3abd9$export$98242d8e822ad11f = async (endpoint, requester)=>(0, $lyZgO$camelcasekeys)(await requester(endpoint));
116
+
117
+
118
+ var $7397ba7739ada584$exports = {};
119
+
120
+ $parcel$export($7397ba7739ada584$exports, "revoke", () => $7397ba7739ada584$export$573f8dbbf6fbef75);
121
+
122
+ const $7397ba7739ada584$export$573f8dbbf6fbef75 = async (revocationEndpoint, clientId, token, requester)=>requester(revocationEndpoint, {
123
+ method: "POST",
124
+ headers: (0, $5422b71ae76f21f1$export$e2e108cbe2e4f865).formUrlEncoded,
125
+ body: new URLSearchParams({
126
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).ClientId]: clientId,
127
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Token]: token
128
+ })
129
+ });
130
+
131
+
132
+ var $bfba480b8ff41607$exports = {};
133
+
134
+ $parcel$export($bfba480b8ff41607$exports, "generateSignInUri", () => $bfba480b8ff41607$export$b01a187f12b774c6);
135
+
136
+ var $40555044b252dc61$exports = {};
137
+ var $2cac19d9fad63bff$exports = {};
138
+
139
+ $parcel$export($2cac19d9fad63bff$exports, "parseUriParameters", () => $2cac19d9fad63bff$export$4851e69315d5b72c);
140
+ $parcel$export($2cac19d9fad63bff$exports, "verifyAndParseCodeFromCallbackUri", () => $2cac19d9fad63bff$export$dc3fae3c99763885);
141
+
142
+
143
+ var $ab66c74b65acc6a3$exports = {};
144
+
145
+ $parcel$export($ab66c74b65acc6a3$exports, "LogtoError", () => $ab66c74b65acc6a3$export$ba60d77e6748b659);
146
+ $parcel$export($ab66c74b65acc6a3$exports, "LogtoRequestError", () => $ab66c74b65acc6a3$export$e6e15b8ba42b9b70);
147
+ $parcel$export($ab66c74b65acc6a3$exports, "OidcError", () => $ab66c74b65acc6a3$export$d4832bcf9ce430e0);
148
+
149
+ const $ab66c74b65acc6a3$var$logtoErrorCodes = Object.freeze({
150
+ id_token: {
151
+ invalid_iat: "Invalid issued at time",
152
+ invalid_token: "Invalid token"
153
+ },
154
+ callback_uri_verification: {
155
+ redirect_uri_mismatched: "Redirect URI mismatched",
156
+ error_found: "Error found",
157
+ missing_state: "Missing state",
158
+ state_mismatched: "State mismatched",
159
+ missing_code: "Missing code"
160
+ },
161
+ requester: {
162
+ not_provide_fetch: "Should provide a fetch function under Node.js"
163
+ }
164
+ });
165
+ const $ab66c74b65acc6a3$var$getMessageByErrorCode = (errorCode)=>{
166
+ // TODO: linear issue LOG-1419
167
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
168
+ const message = (0, $lyZgO$lodashget)($ab66c74b65acc6a3$var$logtoErrorCodes, errorCode);
169
+ if (typeof message === "string") return message;
170
+ return errorCode;
171
+ };
172
+ class $ab66c74b65acc6a3$export$ba60d77e6748b659 extends Error {
173
+ constructor(code, data){
174
+ super($ab66c74b65acc6a3$var$getMessageByErrorCode(code));
175
+ this.code = code;
176
+ this.data = data;
177
+ }
178
+ }
179
+ class $ab66c74b65acc6a3$export$e6e15b8ba42b9b70 extends Error {
180
+ constructor(code, message){
181
+ super(message);
182
+ this.code = code;
183
+ }
184
+ }
185
+ class $ab66c74b65acc6a3$export$d4832bcf9ce430e0 {
186
+ constructor(error, errorDescription){
187
+ this.error = error;
188
+ this.errorDescription = errorDescription;
189
+ }
190
+ }
191
+
192
+
193
+ const $2cac19d9fad63bff$export$4851e69315d5b72c = (uri)=>{
194
+ const [, queryString = ""] = uri.split("?");
195
+ return new URLSearchParams(queryString);
196
+ };
197
+ const $2cac19d9fad63bff$export$dc3fae3c99763885 = (callbackUri, redirectUri, state)=>{
198
+ if (!callbackUri.startsWith(redirectUri)) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("callback_uri_verification.redirect_uri_mismatched");
199
+ const uriParameters = $2cac19d9fad63bff$export$4851e69315d5b72c(callbackUri);
200
+ const error = (0, $lyZgO$conditional)(uriParameters.get((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Error));
201
+ const errorDescription = (0, $lyZgO$conditional)(uriParameters.get((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).ErrorDescription));
202
+ if (error) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("callback_uri_verification.error_found", new (0, $ab66c74b65acc6a3$export$d4832bcf9ce430e0)(error, errorDescription));
203
+ const stateFromCallbackUri = uriParameters.get((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).State);
204
+ if (!stateFromCallbackUri) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("callback_uri_verification.missing_state");
205
+ if (stateFromCallbackUri !== state) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("callback_uri_verification.state_mismatched");
206
+ const code = uriParameters.get((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Code);
207
+ if (!code) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("callback_uri_verification.missing_code");
208
+ return code;
209
+ };
210
+
211
+
212
+
213
+ var $2c86a16eb0b4362d$exports = {};
214
+
215
+ $parcel$export($2c86a16eb0b4362d$exports, "generateState", () => $2c86a16eb0b4362d$export$9ccd2716e53a229b);
216
+ $parcel$export($2c86a16eb0b4362d$exports, "generateCodeVerifier", () => $2c86a16eb0b4362d$export$cf1891f923f5943a);
217
+ $parcel$export($2c86a16eb0b4362d$exports, "generateCodeChallenge", () => $2c86a16eb0b4362d$export$414b01b1f867308a);
218
+
219
+ /**
220
+ * @param length The length of the raw random data.
221
+ */ const $2c86a16eb0b4362d$var$generateRandomString = (length = 64)=>(0, $lyZgO$fromUint8Array)(crypto.getRandomValues(new Uint8Array(length)), true);
222
+ const $2c86a16eb0b4362d$export$9ccd2716e53a229b = ()=>$2c86a16eb0b4362d$var$generateRandomString();
223
+ const $2c86a16eb0b4362d$export$cf1891f923f5943a = ()=>$2c86a16eb0b4362d$var$generateRandomString();
224
+ const $2c86a16eb0b4362d$export$414b01b1f867308a = async (codeVerifier)=>{
225
+ const encodedCodeVerifier = new TextEncoder().encode(codeVerifier);
226
+ // TODO: crypto related to linear issue LOG-1517
227
+ const codeChallenge = new Uint8Array(await crypto.subtle.digest("SHA-256", encodedCodeVerifier));
228
+ return (0, $lyZgO$fromUint8Array)(codeChallenge, true);
229
+ };
230
+
231
+
232
+ var $dfd50234d3585f12$exports = {};
233
+
234
+ $parcel$export($dfd50234d3585f12$exports, "verifyIdToken", () => $dfd50234d3585f12$export$b5b3317c8aecbcd5);
235
+ $parcel$export($dfd50234d3585f12$exports, "decodeIdToken", () => $dfd50234d3585f12$export$aac2d5b7f5cd16d5);
236
+
237
+
238
+
239
+
240
+ const $dfd50234d3585f12$var$issuedAtTimeTolerance = 60;
241
+ /**
242
+ * @link [ID Token](https://openid.net/specs/openid-connect-core-1_0.html#IDToken)
243
+ */ const $dfd50234d3585f12$var$IdTokenClaimsSchema = $lyZgO$type({
244
+ iss: $lyZgO$string(),
245
+ sub: $lyZgO$string(),
246
+ aud: $lyZgO$string(),
247
+ exp: $lyZgO$number(),
248
+ iat: $lyZgO$number(),
249
+ at_hash: $lyZgO$nullable($lyZgO$optional($lyZgO$string())),
250
+ name: $lyZgO$nullable($lyZgO$optional($lyZgO$string())),
251
+ username: $lyZgO$nullable($lyZgO$optional($lyZgO$string())),
252
+ avatar: $lyZgO$nullable($lyZgO$optional($lyZgO$string())),
253
+ role_names: $lyZgO$nullable($lyZgO$optional($lyZgO$array($lyZgO$string())))
254
+ });
255
+ const $dfd50234d3585f12$export$b5b3317c8aecbcd5 = async (idToken, clientId, issuer, jwks)=>{
256
+ const result = await (0, $lyZgO$jwtVerify)(idToken, jwks, {
257
+ audience: clientId,
258
+ issuer: issuer
259
+ });
260
+ if (Math.abs((result.payload.iat ?? 0) - Date.now() / 1000) > $dfd50234d3585f12$var$issuedAtTimeTolerance) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("id_token.invalid_iat");
261
+ };
262
+ const $dfd50234d3585f12$export$aac2d5b7f5cd16d5 = (token)=>{
263
+ const { 1: encodedPayload } = token.split(".");
264
+ if (!encodedPayload) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("id_token.invalid_token");
265
+ const json = (0, $lyZgO$UrlSafeBase64).decode(encodedPayload);
266
+ const idTokenClaims = JSON.parse(json);
267
+ $lyZgO$assert(idTokenClaims, $dfd50234d3585f12$var$IdTokenClaimsSchema);
268
+ return idTokenClaims;
269
+ };
270
+
271
+
272
+ var $637ac5b03d2b1bab$exports = {};
273
+
274
+ $parcel$export($637ac5b03d2b1bab$exports, "createRequester", () => $637ac5b03d2b1bab$export$8d54726fdbf08e0a);
275
+
276
+
277
+ const $637ac5b03d2b1bab$export$8d54726fdbf08e0a = (fetchFunction)=>{
278
+ if (!fetchFunction && (0, $lyZgO$isNode)()) throw new (0, $ab66c74b65acc6a3$export$ba60d77e6748b659)("requester.not_provide_fetch");
279
+ return async (...args)=>{
280
+ const response = await (fetchFunction ?? fetch)(...args);
281
+ if (!response.ok) {
282
+ // Expected request error from server
283
+ const { code: code , message: message } = await response.json();
284
+ throw new (0, $ab66c74b65acc6a3$export$e6e15b8ba42b9b70)(code, message);
285
+ }
286
+ return response.json();
287
+ };
288
+ };
289
+
290
+
291
+ var $570e2e6b31a027ff$exports = {};
292
+
293
+ $parcel$export($570e2e6b31a027ff$exports, "withReservedScopes", () => $570e2e6b31a027ff$export$887ed125f549a57);
294
+ const $570e2e6b31a027ff$export$887ed125f549a57 = (originalScopes)=>{
295
+ const uniqueScopes = new Set([
296
+ "openid",
297
+ "offline_access",
298
+ "profile",
299
+ ...originalScopes ?? []
300
+ ]);
301
+ return Array.from(uniqueScopes).join(" ");
302
+ };
303
+
304
+
305
+ $parcel$exportWildcard($40555044b252dc61$exports, $2cac19d9fad63bff$exports);
306
+ $parcel$exportWildcard($40555044b252dc61$exports, $ab66c74b65acc6a3$exports);
307
+ $parcel$exportWildcard($40555044b252dc61$exports, $2c86a16eb0b4362d$exports);
308
+ $parcel$exportWildcard($40555044b252dc61$exports, $dfd50234d3585f12$exports);
309
+ $parcel$exportWildcard($40555044b252dc61$exports, $637ac5b03d2b1bab$exports);
310
+ $parcel$exportWildcard($40555044b252dc61$exports, $570e2e6b31a027ff$exports);
311
+
312
+
313
+ const $bfba480b8ff41607$var$codeChallengeMethod = "S256";
314
+ const $bfba480b8ff41607$var$responseType = "code";
315
+ const $bfba480b8ff41607$export$b01a187f12b774c6 = ({ authorizationEndpoint: authorizationEndpoint , clientId: clientId , redirectUri: redirectUri , codeChallenge: codeChallenge , state: state , scopes: scopes , resources: resources , prompt: prompt })=>{
316
+ const urlSearchParameters = new URLSearchParams({
317
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).ClientId]: clientId,
318
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).RedirectUri]: redirectUri,
319
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).CodeChallenge]: codeChallenge,
320
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).CodeChallengeMethod]: $bfba480b8ff41607$var$codeChallengeMethod,
321
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).State]: state,
322
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).ResponseType]: $bfba480b8ff41607$var$responseType,
323
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Prompt]: prompt ?? (0, $5422b71ae76f21f1$export$83716a4aa1642908).Consent,
324
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Scope]: (0, $570e2e6b31a027ff$export$887ed125f549a57)(scopes)
325
+ });
326
+ for (const resource of resources ?? [])urlSearchParameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).Resource, resource);
327
+ return `${authorizationEndpoint}?${urlSearchParameters.toString()}`;
328
+ };
329
+
330
+
331
+ var $fcccd93c698efc4f$exports = {};
332
+
333
+ $parcel$export($fcccd93c698efc4f$exports, "generateSignOutUri", () => $fcccd93c698efc4f$export$b3c9a2bd2330de28);
334
+
335
+ const $fcccd93c698efc4f$export$b3c9a2bd2330de28 = ({ endSessionEndpoint: endSessionEndpoint , idToken: idToken , postLogoutRedirectUri: postLogoutRedirectUri })=>{
336
+ const urlSearchParameters = new URLSearchParams({
337
+ [(0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).IdTokenHint]: idToken
338
+ });
339
+ if (postLogoutRedirectUri) urlSearchParameters.append((0, $5422b71ae76f21f1$export$65f63a8bc3cba53d).PostLogoutRedirectUri, postLogoutRedirectUri);
340
+ return `${endSessionEndpoint}?${urlSearchParameters.toString()}`;
341
+ };
342
+
343
+
344
+ $parcel$exportWildcard($1eda3e9ea5865065$exports, $ce6f2a62716522ae$exports);
345
+ $parcel$exportWildcard($1eda3e9ea5865065$exports, $eefdbfea5ec3abd9$exports);
346
+ $parcel$exportWildcard($1eda3e9ea5865065$exports, $7397ba7739ada584$exports);
347
+ $parcel$exportWildcard($1eda3e9ea5865065$exports, $bfba480b8ff41607$exports);
348
+ $parcel$exportWildcard($1eda3e9ea5865065$exports, $fcccd93c698efc4f$exports);
349
+
350
+
351
+
352
+
353
+
354
+
355
+ export {$ce6f2a62716522ae$export$684f740cd70532d4 as fetchTokenByAuthorizationCode, $ce6f2a62716522ae$export$9909137b467efb8b as fetchTokenByRefreshToken, $eefdbfea5ec3abd9$export$815bda5ead26b243 as discoveryPath, $eefdbfea5ec3abd9$export$98242d8e822ad11f as fetchOidcConfig, $7397ba7739ada584$export$573f8dbbf6fbef75 as revoke, $bfba480b8ff41607$export$b01a187f12b774c6 as generateSignInUri, $fcccd93c698efc4f$export$b3c9a2bd2330de28 as generateSignOutUri, $2cac19d9fad63bff$export$4851e69315d5b72c as parseUriParameters, $2cac19d9fad63bff$export$dc3fae3c99763885 as verifyAndParseCodeFromCallbackUri, $ab66c74b65acc6a3$export$ba60d77e6748b659 as LogtoError, $ab66c74b65acc6a3$export$e6e15b8ba42b9b70 as LogtoRequestError, $ab66c74b65acc6a3$export$d4832bcf9ce430e0 as OidcError, $2c86a16eb0b4362d$export$9ccd2716e53a229b as generateState, $2c86a16eb0b4362d$export$cf1891f923f5943a as generateCodeVerifier, $2c86a16eb0b4362d$export$414b01b1f867308a as generateCodeChallenge, $dfd50234d3585f12$export$b5b3317c8aecbcd5 as verifyIdToken, $dfd50234d3585f12$export$aac2d5b7f5cd16d5 as decodeIdToken, $637ac5b03d2b1bab$export$8d54726fdbf08e0a as createRequester, $570e2e6b31a027ff$export$887ed125f549a57 as withReservedScopes, $5422b71ae76f21f1$export$e2e108cbe2e4f865 as ContentType, $5422b71ae76f21f1$export$3f2aafdd1ccae76c as TokenGrantType, $5422b71ae76f21f1$export$65f63a8bc3cba53d as QueryKey, $5422b71ae76f21f1$export$83716a4aa1642908 as Prompt};
356
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/js/src/index.ts","packages/js/src/core/index.ts","packages/js/src/core/fetch-token.ts","packages/js/src/consts/index.ts","packages/js/src/core/oidc-config.ts","packages/js/src/core/revoke.ts","packages/js/src/core/sign-in.ts","packages/js/src/utils/index.ts","packages/js/src/utils/callback-uri.ts","packages/js/src/utils/errors.ts","packages/js/src/utils/generators.ts","packages/js/src/utils/id-token.ts","packages/js/src/utils/requester.ts","packages/js/src/utils/scopes.ts","packages/js/src/core/sign-out.ts"],"sourcesContent":["/* istanbul ignore file */\nexport * from './core';\nexport * from './utils';\nexport * from './consts';\n","export * from './fetch-token';\nexport * from './oidc-config';\nexport * from './revoke';\nexport * from './sign-in';\nexport * from './sign-out';\n","import { KeysToCamelCase } from '@silverhand/essentials';\nimport camelcaseKeys from 'camelcase-keys';\n\nimport { ContentType, QueryKey, TokenGrantType } from '../consts';\nimport { Requester } from '../utils';\n\nexport type FetchTokenByAuthorizationCodeParameters = {\n clientId: string;\n tokenEndpoint: string;\n redirectUri: string;\n codeVerifier: string;\n code: string;\n resource?: string;\n};\n\nexport type FetchTokenByRefreshTokenParameters = {\n clientId: string;\n tokenEndpoint: string;\n refreshToken: string;\n resource?: string;\n scopes?: string[];\n};\n\ntype SnakeCaseCodeTokenResponse = {\n access_token: string;\n refresh_token?: string;\n id_token: string;\n scope: string;\n expires_in: number;\n};\n\nexport type CodeTokenResponse = KeysToCamelCase<SnakeCaseCodeTokenResponse>;\n\ntype SnakeCaseRefreshTokenTokenResponse = {\n access_token: string;\n refresh_token: string;\n id_token?: string;\n scope: string;\n expires_in: number;\n};\n\nexport type RefreshTokenTokenResponse = KeysToCamelCase<SnakeCaseRefreshTokenTokenResponse>;\n\nexport const fetchTokenByAuthorizationCode = async (\n {\n clientId,\n tokenEndpoint,\n redirectUri,\n codeVerifier,\n code,\n resource,\n }: FetchTokenByAuthorizationCodeParameters,\n requester: Requester\n): Promise<CodeTokenResponse> => {\n const parameters = new URLSearchParams();\n parameters.append(QueryKey.ClientId, clientId);\n parameters.append(QueryKey.Code, code);\n parameters.append(QueryKey.CodeVerifier, codeVerifier);\n parameters.append(QueryKey.RedirectUri, redirectUri);\n parameters.append(QueryKey.GrantType, TokenGrantType.AuthorizationCode);\n\n if (resource) {\n parameters.append(QueryKey.Resource, resource);\n }\n\n const snakeCaseCodeTokenResponse = await requester<SnakeCaseCodeTokenResponse>(tokenEndpoint, {\n method: 'POST',\n headers: ContentType.formUrlEncoded,\n body: parameters,\n });\n\n return camelcaseKeys(snakeCaseCodeTokenResponse);\n};\n\nexport const fetchTokenByRefreshToken = async (\n { clientId, tokenEndpoint, refreshToken, resource, scopes }: FetchTokenByRefreshTokenParameters,\n requester: Requester\n): Promise<RefreshTokenTokenResponse> => {\n const parameters = new URLSearchParams();\n parameters.append(QueryKey.ClientId, clientId);\n parameters.append(QueryKey.RefreshToken, refreshToken);\n parameters.append(QueryKey.GrantType, TokenGrantType.RefreshToken);\n\n if (resource) {\n parameters.append(QueryKey.Resource, resource);\n }\n\n if (scopes?.length) {\n parameters.append(QueryKey.Scope, scopes.join(' '));\n }\n\n const snakeCaseRefreshTokenTokenResponse = await requester<SnakeCaseRefreshTokenTokenResponse>(\n tokenEndpoint,\n {\n method: 'POST',\n headers: ContentType.formUrlEncoded,\n body: parameters,\n }\n );\n\n return camelcaseKeys(snakeCaseRefreshTokenTokenResponse);\n};\n","export const ContentType = {\n formUrlEncoded: { 'Content-Type': 'application/x-www-form-urlencoded' },\n};\n\nexport enum TokenGrantType {\n AuthorizationCode = 'authorization_code',\n RefreshToken = 'refresh_token',\n}\n\nexport enum QueryKey {\n ClientId = 'client_id',\n Code = 'code',\n CodeChallenge = 'code_challenge',\n CodeChallengeMethod = 'code_challenge_method',\n CodeVerifier = 'code_verifier',\n Error = 'error',\n ErrorDescription = 'error_description',\n GrantType = 'grant_type',\n IdToken = 'id_token',\n IdTokenHint = 'id_token_hint',\n PostLogoutRedirectUri = 'post_logout_redirect_uri',\n Prompt = 'prompt',\n RedirectUri = 'redirect_uri',\n RefreshToken = 'refresh_token',\n Resource = 'resource',\n ResponseType = 'response_type',\n Scope = 'scope',\n State = 'state',\n Token = 'token',\n}\n\nexport enum Prompt {\n Consent = 'consent',\n Login = 'login',\n}\n","import { KeysToCamelCase } from '@silverhand/essentials';\nimport camelcaseKeys from 'camelcase-keys';\n\nimport { Requester } from '../utils';\n\ntype OidcConfigSnakeCaseResponse = {\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint: string;\n revocation_endpoint: string;\n jwks_uri: string;\n issuer: string;\n};\n\nexport const discoveryPath = '/oidc/.well-known/openid-configuration';\n\nexport type OidcConfigResponse = KeysToCamelCase<OidcConfigSnakeCaseResponse>;\n\nexport const fetchOidcConfig = async (\n endpoint: string,\n requester: Requester\n): Promise<OidcConfigResponse> =>\n camelcaseKeys(await requester<OidcConfigSnakeCaseResponse>(endpoint));\n","import { ContentType, QueryKey } from '../consts';\nimport { Requester } from '../utils';\n\nexport const revoke = async (\n revocationEndpoint: string,\n clientId: string,\n token: string,\n requester: Requester\n): Promise<void> =>\n requester<void>(revocationEndpoint, {\n method: 'POST',\n headers: ContentType.formUrlEncoded,\n body: new URLSearchParams({\n [QueryKey.ClientId]: clientId,\n [QueryKey.Token]: token,\n }),\n });\n","import { Prompt, QueryKey } from '../consts';\nimport { withReservedScopes } from '../utils';\n\nconst codeChallengeMethod = 'S256';\nconst responseType = 'code';\n\nexport type SignInUriParameters = {\n authorizationEndpoint: string;\n clientId: string;\n redirectUri: string;\n codeChallenge: string;\n state: string;\n scopes?: string[];\n resources?: string[];\n prompt?: Prompt;\n};\n\nexport const generateSignInUri = ({\n authorizationEndpoint,\n clientId,\n redirectUri,\n codeChallenge,\n state,\n scopes,\n resources,\n prompt,\n}: SignInUriParameters) => {\n const urlSearchParameters = new URLSearchParams({\n [QueryKey.ClientId]: clientId,\n [QueryKey.RedirectUri]: redirectUri,\n [QueryKey.CodeChallenge]: codeChallenge,\n [QueryKey.CodeChallengeMethod]: codeChallengeMethod,\n [QueryKey.State]: state,\n [QueryKey.ResponseType]: responseType,\n [QueryKey.Prompt]: prompt ?? Prompt.Consent,\n [QueryKey.Scope]: withReservedScopes(scopes),\n });\n\n for (const resource of resources ?? []) {\n urlSearchParameters.append(QueryKey.Resource, resource);\n }\n\n return `${authorizationEndpoint}?${urlSearchParameters.toString()}`;\n};\n","export * from './callback-uri';\nexport * from './errors';\nexport * from './generators';\nexport * from './id-token';\nexport * from './requester';\nexport * from './scopes';\n","import { conditional } from '@silverhand/essentials';\n\nimport { QueryKey } from '../consts';\nimport { LogtoError, OidcError } from './errors';\n\nexport const parseUriParameters = (uri: string) => {\n const [, queryString = ''] = uri.split('?');\n\n return new URLSearchParams(queryString);\n};\n\n// eslint-disable-next-line complexity\nexport const verifyAndParseCodeFromCallbackUri = (\n callbackUri: string,\n redirectUri: string,\n state: string\n) => {\n if (!callbackUri.startsWith(redirectUri)) {\n throw new LogtoError('callback_uri_verification.redirect_uri_mismatched');\n }\n const uriParameters = parseUriParameters(callbackUri);\n\n const error = conditional(uriParameters.get(QueryKey.Error));\n const errorDescription = conditional(uriParameters.get(QueryKey.ErrorDescription));\n\n if (error) {\n throw new LogtoError(\n 'callback_uri_verification.error_found',\n new OidcError(error, errorDescription)\n );\n }\n\n const stateFromCallbackUri = uriParameters.get(QueryKey.State);\n\n if (!stateFromCallbackUri) {\n throw new LogtoError('callback_uri_verification.missing_state');\n }\n\n if (stateFromCallbackUri !== state) {\n throw new LogtoError('callback_uri_verification.state_mismatched');\n }\n\n const code = uriParameters.get(QueryKey.Code);\n\n if (!code) {\n throw new LogtoError('callback_uri_verification.missing_code');\n }\n\n return code;\n};\n","import { NormalizeKeyPaths } from '@silverhand/essentials';\nimport get from 'lodash.get';\n\nconst logtoErrorCodes = Object.freeze({\n id_token: {\n invalid_iat: 'Invalid issued at time',\n invalid_token: 'Invalid token',\n },\n callback_uri_verification: {\n redirect_uri_mismatched: 'Redirect URI mismatched',\n error_found: 'Error found',\n missing_state: 'Missing state',\n state_mismatched: 'State mismatched',\n missing_code: 'Missing code',\n },\n requester: {\n not_provide_fetch: 'Should provide a fetch function under Node.js',\n },\n});\n\nexport type LogtoErrorCode = NormalizeKeyPaths<typeof logtoErrorCodes>;\n\nconst getMessageByErrorCode = (errorCode: LogtoErrorCode): string => {\n // TODO: linear issue LOG-1419\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const message = get(logtoErrorCodes, errorCode);\n\n if (typeof message === 'string') {\n return message;\n }\n\n return errorCode;\n};\n\nexport class LogtoError extends Error {\n code: LogtoErrorCode;\n data: unknown;\n\n constructor(code: LogtoErrorCode, data?: unknown) {\n super(getMessageByErrorCode(code));\n this.code = code;\n this.data = data;\n }\n}\n\nexport class LogtoRequestError extends Error {\n code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n }\n}\n\nexport class OidcError {\n error: string;\n errorDescription?: string;\n\n constructor(error: string, errorDescription?: string) {\n this.error = error;\n this.errorDescription = errorDescription;\n }\n}\n","/** @link [Proof Key for Code Exchange by OAuth Public Clients](https://datatracker.ietf.org/doc/html/rfc7636) */\n\nimport { fromUint8Array } from 'js-base64';\n\n/**\n * @param length The length of the raw random data.\n */\nconst generateRandomString = (length = 64) =>\n fromUint8Array(crypto.getRandomValues(new Uint8Array(length)), true);\n\n/**\n * Generates random string for state and encodes them in url safe base64\n */\nexport const generateState = () => generateRandomString();\n\n/**\n * Generates code verifier\n *\n * @link [Client Creates a Code Verifier](https://datatracker.ietf.org/doc/html/rfc7636#section-4.1)\n */\nexport const generateCodeVerifier = () => generateRandomString();\n\n/**\n * Calculates the S256 PKCE code challenge for an arbitrary code verifier and encodes it in url safe base64\n *\n * @param {String} codeVerifier Code verifier to calculate the S256 code challenge for\n * @link [Client Creates the Code Challenge](https://datatracker.ietf.org/doc/html/rfc7636#section-4.2)\n */\nexport const generateCodeChallenge = async (codeVerifier: string): Promise<string> => {\n const encodedCodeVerifier = new TextEncoder().encode(codeVerifier);\n // TODO: crypto related to linear issue LOG-1517\n const codeChallenge = new Uint8Array(await crypto.subtle.digest('SHA-256', encodedCodeVerifier));\n\n return fromUint8Array(codeChallenge, true);\n};\n","import { UrlSafeBase64 } from '@silverhand/essentials';\nimport { jwtVerify, JWTVerifyGetKey } from 'jose';\nimport * as s from 'superstruct';\n\nimport { LogtoError } from './errors';\n\nconst issuedAtTimeTolerance = 60;\n\n/**\n * @link [ID Token](https://openid.net/specs/openid-connect-core-1_0.html#IDToken)\n */\nconst IdTokenClaimsSchema = s.type({\n iss: s.string(),\n sub: s.string(),\n aud: s.string(),\n exp: s.number(),\n iat: s.number(),\n at_hash: s.nullable(s.optional(s.string())),\n name: s.nullable(s.optional(s.string())),\n username: s.nullable(s.optional(s.string())),\n avatar: s.nullable(s.optional(s.string())),\n role_names: s.nullable(s.optional(s.array(s.string()))),\n});\n\nexport type IdTokenClaims = s.Infer<typeof IdTokenClaimsSchema>;\n\nexport const verifyIdToken = async (\n idToken: string,\n clientId: string,\n issuer: string,\n jwks: JWTVerifyGetKey\n) => {\n const result = await jwtVerify(idToken, jwks, { audience: clientId, issuer });\n\n if (Math.abs((result.payload.iat ?? 0) - Date.now() / 1000) > issuedAtTimeTolerance) {\n throw new LogtoError('id_token.invalid_iat');\n }\n};\n\nexport const decodeIdToken = (token: string): IdTokenClaims => {\n const { 1: encodedPayload } = token.split('.');\n\n if (!encodedPayload) {\n throw new LogtoError('id_token.invalid_token');\n }\n\n const json = UrlSafeBase64.decode(encodedPayload);\n const idTokenClaims: unknown = JSON.parse(json);\n s.assert(idTokenClaims, IdTokenClaimsSchema);\n\n return idTokenClaims;\n};\n","import { isNode } from '@silverhand/essentials';\n\nimport { LogtoError, LogtoRequestError } from './errors';\n\ntype LogtoRequestErrorBody = {\n code: string;\n message: string;\n};\n\nexport const createRequester = (fetchFunction?: typeof fetch) => {\n if (!fetchFunction && isNode()) {\n throw new LogtoError('requester.not_provide_fetch');\n }\n\n return async <T>(...args: Parameters<typeof fetch>): Promise<T> => {\n const response = await (fetchFunction ?? fetch)(...args);\n\n if (!response.ok) {\n // Expected request error from server\n const { code, message } = await response.json<LogtoRequestErrorBody>();\n throw new LogtoRequestError(code, message);\n }\n\n return response.json<T>();\n };\n};\n\nexport type Requester = ReturnType<typeof createRequester>;\n","/**\n * @param originalScopes\n * @return scopes should contain all reserved scopes ( Logto requires `openid` and `offline_access` )\n */\nexport const withReservedScopes = (originalScopes?: string[]): string => {\n const uniqueScopes = new Set(['openid', 'offline_access', 'profile', ...(originalScopes ?? [])]);\n\n return Array.from(uniqueScopes).join(' ');\n};\n","import { QueryKey } from '../consts';\n\ntype SignOutUriParameters = {\n endSessionEndpoint: string;\n idToken: string;\n postLogoutRedirectUri?: string;\n};\n\nexport const generateSignOutUri = ({\n endSessionEndpoint,\n idToken,\n postLogoutRedirectUri,\n}: SignOutUriParameters) => {\n const urlSearchParameters = new URLSearchParams({ [QueryKey.IdTokenHint]: idToken });\n\n if (postLogoutRedirectUri) {\n urlSearchParameters.append(QueryKey.PostLogoutRedirectUri, postLogoutRedirectUri);\n }\n\n return `${endSessionEndpoint}?${urlSearchParameters.toString()}`;\n};\n"],"names":[],"version":3,"file":"module.js.map"}
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@logto/js",
3
- "version": "0.2.0",
3
+ "version": "0.2.3-alpha.0",
4
+ "source": "./src/index.ts",
4
5
  "main": "./lib/index.js",
5
- "exports": "./lib/index.js",
6
- "typings": "./lib/index.d.ts",
6
+ "exports": {
7
+ "require": "./lib/index.js",
8
+ "import": "./lib/module.js"
9
+ },
10
+ "module": "./lib/module.js",
11
+ "types": "./lib/index.d.ts",
7
12
  "files": [
8
13
  "lib"
9
14
  ],
@@ -16,7 +21,8 @@
16
21
  "scripts": {
17
22
  "dev:tsc": "tsc -p tsconfig.build.json -w --preserveWatchOutput",
18
23
  "precommit": "lint-staged",
19
- "build": "rm -rf lib/ && tsc -p tsconfig.build.json",
24
+ "check": "tsc --noEmit",
25
+ "build": "rm -rf lib/ && pnpm check && parcel build",
20
26
  "lint": "eslint --ext .ts src",
21
27
  "test": "jest",
22
28
  "test:coverage": "jest --silent --env=jsdom && jest --silent --coverage",
@@ -32,6 +38,9 @@
32
38
  },
33
39
  "devDependencies": {
34
40
  "@jest/types": "^27.5.1",
41
+ "@parcel/core": "^2.6.2",
42
+ "@parcel/packager-ts": "^2.6.2",
43
+ "@parcel/transformer-typescript-types": "^2.6.2",
35
44
  "@peculiar/webcrypto": "^1.1.7",
36
45
  "@silverhand/eslint-config": "^0.14.0",
37
46
  "@silverhand/ts-config": "^0.14.0",
@@ -44,6 +53,7 @@
44
53
  "lint-staged": "^13.0.0",
45
54
  "nock": "^13.1.3",
46
55
  "node-fetch": "^2.6.7",
56
+ "parcel": "^2.6.2",
47
57
  "prettier": "^2.3.2",
48
58
  "text-encoder": "^0.0.4",
49
59
  "ts-jest": "^27.0.4",
@@ -57,5 +67,5 @@
57
67
  "publishConfig": {
58
68
  "access": "public"
59
69
  },
60
- "gitHead": "5166ae926de86816f29229f18bc756f3b17fb57b"
70
+ "gitHead": "e9e611773b0e73baa6c05a3f2d545fac64d03707"
61
71
  }
@@ -1,34 +0,0 @@
1
- export declare const ContentType: {
2
- formUrlEncoded: {
3
- 'Content-Type': string;
4
- };
5
- };
6
- export declare enum TokenGrantType {
7
- AuthorizationCode = "authorization_code",
8
- RefreshToken = "refresh_token"
9
- }
10
- export declare enum QueryKey {
11
- ClientId = "client_id",
12
- Code = "code",
13
- CodeChallenge = "code_challenge",
14
- CodeChallengeMethod = "code_challenge_method",
15
- CodeVerifier = "code_verifier",
16
- Error = "error",
17
- ErrorDescription = "error_description",
18
- GrantType = "grant_type",
19
- IdToken = "id_token",
20
- IdTokenHint = "id_token_hint",
21
- PostLogoutRedirectUri = "post_logout_redirect_uri",
22
- Prompt = "prompt",
23
- RedirectUri = "redirect_uri",
24
- RefreshToken = "refresh_token",
25
- Resource = "resource",
26
- ResponseType = "response_type",
27
- Scope = "scope",
28
- State = "state",
29
- Token = "token"
30
- }
31
- export declare enum Prompt {
32
- Consent = "consent",
33
- Login = "login"
34
- }
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Prompt = exports.QueryKey = exports.TokenGrantType = exports.ContentType = void 0;
4
- exports.ContentType = {
5
- formUrlEncoded: { 'Content-Type': 'application/x-www-form-urlencoded' },
6
- };
7
- var TokenGrantType;
8
- (function (TokenGrantType) {
9
- TokenGrantType["AuthorizationCode"] = "authorization_code";
10
- TokenGrantType["RefreshToken"] = "refresh_token";
11
- })(TokenGrantType = exports.TokenGrantType || (exports.TokenGrantType = {}));
12
- var QueryKey;
13
- (function (QueryKey) {
14
- QueryKey["ClientId"] = "client_id";
15
- QueryKey["Code"] = "code";
16
- QueryKey["CodeChallenge"] = "code_challenge";
17
- QueryKey["CodeChallengeMethod"] = "code_challenge_method";
18
- QueryKey["CodeVerifier"] = "code_verifier";
19
- QueryKey["Error"] = "error";
20
- QueryKey["ErrorDescription"] = "error_description";
21
- QueryKey["GrantType"] = "grant_type";
22
- QueryKey["IdToken"] = "id_token";
23
- QueryKey["IdTokenHint"] = "id_token_hint";
24
- QueryKey["PostLogoutRedirectUri"] = "post_logout_redirect_uri";
25
- QueryKey["Prompt"] = "prompt";
26
- QueryKey["RedirectUri"] = "redirect_uri";
27
- QueryKey["RefreshToken"] = "refresh_token";
28
- QueryKey["Resource"] = "resource";
29
- QueryKey["ResponseType"] = "response_type";
30
- QueryKey["Scope"] = "scope";
31
- QueryKey["State"] = "state";
32
- QueryKey["Token"] = "token";
33
- })(QueryKey = exports.QueryKey || (exports.QueryKey = {}));
34
- var Prompt;
35
- (function (Prompt) {
36
- Prompt["Consent"] = "consent";
37
- Prompt["Login"] = "login";
38
- })(Prompt = exports.Prompt || (exports.Prompt = {}));
@@ -1,36 +0,0 @@
1
- import { KeysToCamelCase } from '@silverhand/essentials';
2
- import { Requester } from '../utils';
3
- export declare type FetchTokenByAuthorizationCodeParameters = {
4
- clientId: string;
5
- tokenEndpoint: string;
6
- redirectUri: string;
7
- codeVerifier: string;
8
- code: string;
9
- resource?: string;
10
- };
11
- export declare type FetchTokenByRefreshTokenParameters = {
12
- clientId: string;
13
- tokenEndpoint: string;
14
- refreshToken: string;
15
- resource?: string;
16
- scopes?: string[];
17
- };
18
- declare type SnakeCaseCodeTokenResponse = {
19
- access_token: string;
20
- refresh_token?: string;
21
- id_token: string;
22
- scope: string;
23
- expires_in: number;
24
- };
25
- export declare type CodeTokenResponse = KeysToCamelCase<SnakeCaseCodeTokenResponse>;
26
- declare type SnakeCaseRefreshTokenTokenResponse = {
27
- access_token: string;
28
- refresh_token: string;
29
- id_token?: string;
30
- scope: string;
31
- expires_in: number;
32
- };
33
- export declare type RefreshTokenTokenResponse = KeysToCamelCase<SnakeCaseRefreshTokenTokenResponse>;
34
- export declare const fetchTokenByAuthorizationCode: ({ clientId, tokenEndpoint, redirectUri, codeVerifier, code, resource, }: FetchTokenByAuthorizationCodeParameters, requester: Requester) => Promise<CodeTokenResponse>;
35
- export declare const fetchTokenByRefreshToken: ({ clientId, tokenEndpoint, refreshToken, resource, scopes }: FetchTokenByRefreshTokenParameters, requester: Requester) => Promise<RefreshTokenTokenResponse>;
36
- export {};
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fetchTokenByRefreshToken = exports.fetchTokenByAuthorizationCode = void 0;
7
- const camelcase_keys_1 = __importDefault(require("camelcase-keys"));
8
- const consts_1 = require("../consts");
9
- const fetchTokenByAuthorizationCode = async ({ clientId, tokenEndpoint, redirectUri, codeVerifier, code, resource, }, requester) => {
10
- const parameters = new URLSearchParams();
11
- parameters.append(consts_1.QueryKey.ClientId, clientId);
12
- parameters.append(consts_1.QueryKey.Code, code);
13
- parameters.append(consts_1.QueryKey.CodeVerifier, codeVerifier);
14
- parameters.append(consts_1.QueryKey.RedirectUri, redirectUri);
15
- parameters.append(consts_1.QueryKey.GrantType, consts_1.TokenGrantType.AuthorizationCode);
16
- if (resource) {
17
- parameters.append(consts_1.QueryKey.Resource, resource);
18
- }
19
- const snakeCaseCodeTokenResponse = await requester(tokenEndpoint, {
20
- method: 'POST',
21
- headers: consts_1.ContentType.formUrlEncoded,
22
- body: parameters,
23
- });
24
- return (0, camelcase_keys_1.default)(snakeCaseCodeTokenResponse);
25
- };
26
- exports.fetchTokenByAuthorizationCode = fetchTokenByAuthorizationCode;
27
- const fetchTokenByRefreshToken = async ({ clientId, tokenEndpoint, refreshToken, resource, scopes }, requester) => {
28
- const parameters = new URLSearchParams();
29
- parameters.append(consts_1.QueryKey.ClientId, clientId);
30
- parameters.append(consts_1.QueryKey.RefreshToken, refreshToken);
31
- parameters.append(consts_1.QueryKey.GrantType, consts_1.TokenGrantType.RefreshToken);
32
- if (resource) {
33
- parameters.append(consts_1.QueryKey.Resource, resource);
34
- }
35
- if (scopes?.length) {
36
- parameters.append(consts_1.QueryKey.Scope, scopes.join(' '));
37
- }
38
- const snakeCaseRefreshTokenTokenResponse = await requester(tokenEndpoint, {
39
- method: 'POST',
40
- headers: consts_1.ContentType.formUrlEncoded,
41
- body: parameters,
42
- });
43
- return (0, camelcase_keys_1.default)(snakeCaseRefreshTokenTokenResponse);
44
- };
45
- exports.fetchTokenByRefreshToken = fetchTokenByRefreshToken;
@@ -1,5 +0,0 @@
1
- export * from './fetch-token';
2
- export * from './oidc-config';
3
- export * from './revoke';
4
- export * from './sign-in';
5
- export * from './sign-out';
package/lib/core/index.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./fetch-token"), exports);
14
- __exportStar(require("./oidc-config"), exports);
15
- __exportStar(require("./revoke"), exports);
16
- __exportStar(require("./sign-in"), exports);
17
- __exportStar(require("./sign-out"), exports);