oidc-spa 1.0.0 → 2.0.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
@@ -6,7 +6,7 @@
6
6
  <br>
7
7
  <br>
8
8
  <a href="https://github.com/garronej/oidc-spa/actions">
9
- <img src="https://github.com/garronej/oidc-spa/workflows/ci/badge.svg?branch=main">
9
+ <img src="https://github.com/garronej/oidc-spa/actions/workflows/ci.yaml/badge.svg?branch=main">
10
10
  </a>
11
11
  <a href="https://bundlephobia.com/package/oidc-spa">
12
12
  <img src="https://img.shields.io/bundlephobia/minzip/oidc-spa">
@@ -31,7 +31,8 @@ With a streamlined API, you can easily integrate OIDC without needing to underst
31
31
 
32
32
  ### [oidc-client-ts](https://github.com/authts/oidc-client-ts)
33
33
 
34
- While `oidc-client-ts` serves as a comprehensive toolkit, our library aims to provide a simplified, ready-to-use adapter. We utilize `oidc-client-ts` internally but abstract away most of its intricacies.
34
+ While `oidc-client-ts` serves as a comprehensive toolkit, our library aims to provide a simplified, ready-to-use adapter that will pass
35
+ any security audit. We utilize `oidc-client-ts` internally but abstract away most of its intricacies.
35
36
 
36
37
  ### [react-oidc-context](https://github.com/authts/react-oidc-context)
37
38
 
@@ -66,21 +67,40 @@ import { createOidc, decodeJwt } from "oidc-spa";
66
67
  issuerUri: "https://auth.your-domain.net/auth/realms/myrealm",
67
68
  clientId: "myclient",
68
69
  // Optional, you can modify the url before redirection to the identity server
70
+ // Alternatively you can use: getExtraQueryParams: ()=> ({ ui_locales: "fr" })
69
71
  transformUrlBeforeRedirect: url => `${url}&ui_locales=fr`
70
- /** Optional: Provide only if your app is not hosted at the origin */
71
- //silentSsoUrl: `${window.location.origin}/foo/bar/baz/silent-sso.html`,
72
+ /**
73
+ * This parameter have to be provided provide if your App is not hosted at the origin of the subdomain.
74
+ * For example if your site is hosted by navigating to `https://www.example.com`
75
+ * you don't have to provide this parameter.
76
+ * On the other end if your site is hosted by navigating to `https://www.example.com/my-app`
77
+ * Then you want to set publicUrl to `/my-app`
78
+ *
79
+ * Be mindful that `${window.location.origin}${publicUrl}/silent-sso.html` must return the `silent-sso.html` that
80
+ * you are supposed to have created in your `public/` directory.
81
+ *
82
+ * If your are still using `create-react-app` you can just set
83
+ * publicUrl to `process.env.PUBLIC_URL` and don't have to think about it further.
84
+ */
85
+ //websiteRootUrl: `${window.location.origin}/my-app`
72
86
  });
73
87
 
74
88
  if (oidc.isUserLoggedIn) {
75
- // This return a promise that never resolve. Your user will be redirected to the identity server.
76
- // If you are calling login because the user clicked
77
- // on a 'login' button you should set doesCurrentHrefRequiresAuth to false.
78
- // When you are calling login because your user navigated to a path that require authentication
79
- // you should set doesCurrentHrefRequiresAuth to true
80
- oidc.login({ doesCurrentHrefRequiresAuth: false });
89
+ oidc.login({
90
+ // This return a promise that never resolve. Your user will be redirected to the identity server.
91
+ // doesCurrentHrefRequiresAuth determines the behavior when a user gives up on loggin in and navigate back.
92
+ // We don't want to send him back to a authenticated route.
93
+ // If you are calling login because the user clicked
94
+ // on a 'login' button you should set doesCurrentHrefRequiresAuth to false.
95
+ // When you are calling login because your user navigated to a path that require authentication
96
+ // you should set doesCurrentHrefRequiresAuth to true
97
+ doesCurrentHrefRequiresAuth: false
98
+ //Optionally you can add some extra parameter to be added on the login url.
99
+ //extraQueryParams: { kc_idp_hint: "google" }
100
+ });
81
101
  } else {
82
102
  const {
83
- // The accessToken is what you'll use a a Bearer token to authenticate to your APIs
103
+ // The accessToken is what you'll use as a Bearer token to authenticate to your APIs
84
104
  accessToken,
85
105
  // You can parse the idToken as a JWT to get some information about the user.
86
106
  idToken
@@ -95,7 +115,8 @@ import { createOidc, decodeJwt } from "oidc-spa";
95
115
  console.log(`Hello ${user.preferred_username}`);
96
116
 
97
117
  // To call when the user click on logout.
98
- oidc.logout();
118
+ // You can also redirect to a custom url with { redirectTo: "specific url", url: `${location.origin}/bye` }
119
+ oidc.logout({ redirectTo: "home" });
99
120
  }
100
121
  })();
101
122
  ```
@@ -129,24 +150,38 @@ function App() {
129
150
  return (
130
151
  <>
131
152
  You're not logged in.
132
- <button onClick={() => oidc.login({ doesCurrentHrefRequiresAuth: false })}>
133
- Login now
153
+ <button
154
+ onClick={() =>
155
+ oidc.login({
156
+ doesCurrentHrefRequiresAuth: false
157
+ //Optionally you can add some extra parameter to be added on the login url.
158
+ //extraQueryParams: { kc_idp_hint: "google" }
159
+ })
160
+ }
161
+ >
162
+ Login
134
163
  </button>
135
164
  </>
136
165
  );
137
166
  }
138
167
 
139
- return <AppLoggedIn />;
168
+ return (
169
+ <AppLoggedIn
170
+ // You can also redirect to a custom url with { redirectTo: "specific url", url: `${location.origin}/bye` }
171
+ logout={() => oidc.logout({ redirectTo: "home" })}
172
+ />
173
+ );
140
174
  }
141
175
 
142
- function AppLoggedIn() {
143
- const { oidc } = useOidc();
176
+ function AppLoggedIn(props: { logout: () => Promise<never> }) {
177
+ const { logout } = props;
178
+
144
179
  const { user } = useUser();
145
180
 
146
181
  return (
147
182
  <>
148
183
  <h1>Hello {user.preferred_username}</h1>
149
- <button onClick={() => oidc.logout()}>Log out</button>
184
+ <button onClick={logout}>Log out</button>
150
185
  </>
151
186
  );
152
187
  }
@@ -169,13 +204,18 @@ function useUser() {
169
204
  sub: string;
170
205
  preferred_username: string;
171
206
  }>(idToken),
172
- idToken
207
+ [idToken]
173
208
  );
174
209
 
175
210
  return { user };
176
211
  }
177
212
  ```
178
213
 
214
+ ## Refreshing token
215
+
216
+ The token refresh is handled automatically for you, however you can manually trigger
217
+ a token refresh with `oidc.getTokens()`.
218
+
179
219
  ## Demo setup
180
220
 
181
221
  <p align="center">
package/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { createOidc } from "./oidc";
2
2
  export type { Oidc } from "./oidc";
3
- import decodeJwt from "jwt-decode";
4
- export { decodeJwt };
3
+ export { decodeJwt } from "./tools/decodeJwt";
package/index.js CHANGED
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.decodeJwt = exports.createOidc = void 0;
7
4
  var oidc_1 = require("./oidc");
8
5
  Object.defineProperty(exports, "createOidc", { enumerable: true, get: function () { return oidc_1.createOidc; } });
9
- var jwt_decode_1 = __importDefault(require("jwt-decode"));
10
- exports.decodeJwt = jwt_decode_1.default;
6
+ var decodeJwt_1 = require("./tools/decodeJwt");
7
+ Object.defineProperty(exports, "decodeJwt", { enumerable: true, get: function () { return decodeJwt_1.decodeJwt; } });
11
8
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAoC;AAA3B,kGAAA,UAAU,OAAA;AAEnB,0DAAmC;AAC1B,oBADF,oBAAS,CACE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AAA3B,kGAAA,UAAU,OAAA;AAEnB,+CAA8C;AAArC,sGAAA,SAAS,OAAA"}
package/oidc.d.ts CHANGED
@@ -10,6 +10,7 @@ export declare namespace Oidc {
10
10
  isUserLoggedIn: false;
11
11
  login: (params: {
12
12
  doesCurrentHrefRequiresAuth: boolean;
13
+ extraQueryParams?: Record<string, string>;
13
14
  }) => Promise<never>;
14
15
  };
15
16
  type LoggedIn = Common & {
@@ -18,6 +19,9 @@ export declare namespace Oidc {
18
19
  getTokens: () => Tokens;
19
20
  logout: (params: {
20
21
  redirectTo: "home" | "current page";
22
+ } | {
23
+ redirectTo: "specific url";
24
+ url: string;
21
25
  }) => Promise<never>;
22
26
  };
23
27
  type Tokens = {
@@ -32,6 +36,19 @@ export declare function createOidc(params: {
32
36
  issuerUri: string;
33
37
  clientId: string;
34
38
  transformUrlBeforeRedirect?: (url: string) => string;
35
- /** Default `${window.location.origin}/silent-sso.html` */
36
- silentSsoUrl?: string;
39
+ getExtraQueryParams?: () => Record<string, string>;
40
+ /**
41
+ * This parameter have to be provided provide if your App is not hosted at the origin of the subdomain.
42
+ * For example if your site is hosted by navigating to `https://www.example.com`
43
+ * you don't have to provide this parameter.
44
+ * On the other end if your site is hosted by navigating to `https://www.example.com/my-app`
45
+ * Then you want to set publicUrl to `/my-app`
46
+ *
47
+ * Be mindful that `${window.location.origin}${publicUrl}/silent-sso.html` must return the `silent-sso.html` that
48
+ * you are supposed to have created in your `public/` directory.
49
+ *
50
+ * If your are still using `create-react-app` you can just set
51
+ * publicUrl to `process.env.PUBLIC_URL` and don't have to think about it further.
52
+ */
53
+ publicUrl?: string;
37
54
  }): Promise<Oidc>;
package/oidc.js CHANGED
@@ -94,12 +94,12 @@ var Deferred_1 = require("./tools/Deferred");
94
94
  var paramsToRetrieveFromSuccessfulLogin = ["code", "state", "session_state"];
95
95
  function createOidc(params) {
96
96
  return __awaiter(this, void 0, void 0, function () {
97
- var issuerUri, clientId, _a, silentSsoUrl, _b, transformUrlBeforeRedirect, configHash, configHashKey, userManager, login, currentTokens, common, oidc;
97
+ var issuerUri, clientId, _a, transformUrlBeforeRedirect, getExtraQueryParams, _b, publicUrl, configHash, configHashKey, userManager, login, currentTokens, common, oidc;
98
98
  var _this = this;
99
99
  return __generator(this, function (_c) {
100
100
  switch (_c.label) {
101
101
  case 0:
102
- issuerUri = params.issuerUri, clientId = params.clientId, _a = params.silentSsoUrl, silentSsoUrl = _a === void 0 ? "".concat(window.location.origin, "/silent-sso.html") : _a, _b = params.transformUrlBeforeRedirect, transformUrlBeforeRedirect = _b === void 0 ? function (url) { return url; } : _b;
102
+ issuerUri = params.issuerUri, clientId = params.clientId, _a = params.transformUrlBeforeRedirect, transformUrlBeforeRedirect = _a === void 0 ? function (url) { return url; } : _a, getExtraQueryParams = params.getExtraQueryParams, _b = params.publicUrl, publicUrl = _b === void 0 ? "" : _b;
103
103
  configHash = (0, fnv1aHashToHex_1.fnv1aHashToHex)("".concat(issuerUri, " ").concat(clientId));
104
104
  configHashKey = "configHash";
105
105
  userManager = new oidc_client_ts_1.UserManager({
@@ -109,10 +109,10 @@ function createOidc(params) {
109
109
  "response_type": "code",
110
110
  "scope": "openid profile",
111
111
  "automaticSilentRenew": false,
112
- "silent_redirect_uri": "".concat(silentSsoUrl, "?").concat(configHashKey, "=").concat(configHash)
112
+ "silent_redirect_uri": "".concat(window.location.origin).concat(publicUrl, "/silent-sso.html?").concat(configHashKey, "=").concat(configHash)
113
113
  });
114
114
  login = function (_a) {
115
- var doesCurrentHrefRequiresAuth = _a.doesCurrentHrefRequiresAuth;
115
+ var doesCurrentHrefRequiresAuth = _a.doesCurrentHrefRequiresAuth, extraQueryParams = _a.extraQueryParams;
116
116
  return __awaiter(_this, void 0, void 0, function () {
117
117
  function URL() {
118
118
  var args = [];
@@ -123,7 +123,17 @@ function createOidc(params) {
123
123
  return new Proxy(urlInstance, {
124
124
  "get": function (target, prop) {
125
125
  if (prop === "href") {
126
- return transformUrlBeforeRedirect(urlInstance.href);
126
+ var url_1 = urlInstance.href;
127
+ Object.entries(__assign(__assign({}, getExtraQueryParams === null || getExtraQueryParams === void 0 ? void 0 : getExtraQueryParams()), extraQueryParams)).forEach(function (_a) {
128
+ var _b = __read(_a, 2), name = _b[0], value = _b[1];
129
+ return (url_1 = (0, urlQueryParams_1.addQueryParamToUrl)({
130
+ url: url_1,
131
+ name: name,
132
+ value: value
133
+ }).newUrl);
134
+ });
135
+ url_1 = transformUrlBeforeRedirect(url_1);
136
+ return url_1;
127
137
  }
128
138
  //@ts-expect-error
129
139
  return target[prop];
@@ -329,28 +339,28 @@ function createOidc(params) {
329
339
  "refreshToken": currentTokens.refreshToken,
330
340
  "refreshTokenExpirationTime": currentTokens.refreshTokenExpirationTime,
331
341
  "accessTokenExpirationTime": currentTokens.accessTokenExpirationTime
332
- }); }, "logout": function (_a) {
333
- var redirectTo = _a.redirectTo;
334
- return __awaiter(_this, void 0, void 0, function () {
335
- return __generator(this, function (_b) {
336
- switch (_b.label) {
337
- case 0: return [4 /*yield*/, userManager.signoutRedirect({
338
- "post_logout_redirect_uri": (function () {
339
- switch (redirectTo) {
340
- case "current page":
341
- return window.location.href;
342
- case "home":
343
- return window.location.origin;
344
- }
345
- })()
346
- })];
347
- case 1:
348
- _b.sent();
349
- return [2 /*return*/, new Promise(function () { })];
350
- }
351
- });
342
+ }); }, "logout": function (params) { return __awaiter(_this, void 0, void 0, function () {
343
+ return __generator(this, function (_a) {
344
+ switch (_a.label) {
345
+ case 0: return [4 /*yield*/, userManager.signoutRedirect({
346
+ "post_logout_redirect_uri": (function () {
347
+ switch (params.redirectTo) {
348
+ case "current page":
349
+ return window.location.href;
350
+ case "home":
351
+ return "".concat(window.location.origin).concat(publicUrl);
352
+ case "specific url":
353
+ return params.url;
354
+ }
355
+ (0, assert_1.assert)(false);
356
+ })()
357
+ })];
358
+ case 1:
359
+ _a.sent();
360
+ return [2 /*return*/, new Promise(function () { })];
361
+ }
352
362
  });
353
- }, "renewTokens": function () { return __awaiter(_this, void 0, void 0, function () {
363
+ }); }, "renewTokens": function () { return __awaiter(_this, void 0, void 0, function () {
354
364
  var user;
355
365
  return __generator(this, function (_a) {
356
366
  switch (_a.label) {
package/oidc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oidc-spa",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Openidconnect client for Single Page Applications",
5
5
  "repository": {
6
6
  "type": "git",
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { createOidc } from "./oidc";
2
2
  export type { Oidc } from "./oidc";
3
- import decodeJwt from "jwt-decode";
4
- export { decodeJwt };
3
+ export { decodeJwt } from "./tools/decodeJwt";
package/src/oidc.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { UserManager, type User } from "oidc-client-ts";
2
2
  import { id } from "tsafe/id";
3
3
  import { readExpirationTimeInJwt } from "./tools/readExpirationTimeInJwt";
4
- import { assert } from "tsafe/assert";
4
+ import { assert, type Equals } from "tsafe/assert";
5
5
  import { addQueryParamToUrl, retrieveQueryParamFromUrl } from "./tools/urlQueryParams";
6
6
  import { fnv1aHashToHex } from "./tools/fnv1aHashToHex";
7
7
  import { Deferred } from "./tools/Deferred";
@@ -18,14 +18,19 @@ export declare namespace Oidc {
18
18
 
19
19
  export type NotLoggedIn = Common & {
20
20
  isUserLoggedIn: false;
21
- login: (params: { doesCurrentHrefRequiresAuth: boolean }) => Promise<never>;
21
+ login: (params: {
22
+ doesCurrentHrefRequiresAuth: boolean;
23
+ extraQueryParams?: Record<string, string>;
24
+ }) => Promise<never>;
22
25
  };
23
26
 
24
27
  export type LoggedIn = Common & {
25
28
  isUserLoggedIn: true;
26
29
  renewTokens(): Promise<void>;
27
30
  getTokens: () => Tokens;
28
- logout: (params: { redirectTo: "home" | "current page" }) => Promise<never>;
31
+ logout: (
32
+ params: { redirectTo: "home" | "current page" } | { redirectTo: "specific url"; url: string }
33
+ ) => Promise<never>;
29
34
  };
30
35
 
31
36
  export type Tokens = {
@@ -43,14 +48,28 @@ export async function createOidc(params: {
43
48
  issuerUri: string;
44
49
  clientId: string;
45
50
  transformUrlBeforeRedirect?: (url: string) => string;
46
- /** Default `${window.location.origin}/silent-sso.html` */
47
- silentSsoUrl?: string;
51
+ getExtraQueryParams?: () => Record<string, string>;
52
+ /**
53
+ * This parameter have to be provided provide if your App is not hosted at the origin of the subdomain.
54
+ * For example if your site is hosted by navigating to `https://www.example.com`
55
+ * you don't have to provide this parameter.
56
+ * On the other end if your site is hosted by navigating to `https://www.example.com/my-app`
57
+ * Then you want to set publicUrl to `/my-app`
58
+ *
59
+ * Be mindful that `${window.location.origin}${publicUrl}/silent-sso.html` must return the `silent-sso.html` that
60
+ * you are supposed to have created in your `public/` directory.
61
+ *
62
+ * If your are still using `create-react-app` you can just set
63
+ * publicUrl to `process.env.PUBLIC_URL` and don't have to think about it further.
64
+ */
65
+ publicUrl?: string;
48
66
  }): Promise<Oidc> {
49
67
  const {
50
68
  issuerUri,
51
69
  clientId,
52
- silentSsoUrl = `${window.location.origin}/silent-sso.html`,
53
- transformUrlBeforeRedirect = url => url
70
+ transformUrlBeforeRedirect = url => url,
71
+ getExtraQueryParams,
72
+ publicUrl = ""
54
73
  } = params;
55
74
 
56
75
  const configHash = fnv1aHashToHex(`${issuerUri} ${clientId}`);
@@ -63,13 +82,17 @@ export async function createOidc(params: {
63
82
  "response_type": "code",
64
83
  "scope": "openid profile",
65
84
  "automaticSilentRenew": false,
66
- "silent_redirect_uri": `${silentSsoUrl}?${configHashKey}=${configHash}`
85
+ "silent_redirect_uri": `${window.location.origin}${publicUrl}/silent-sso.html?${configHashKey}=${configHash}`
67
86
  });
68
87
 
69
- const login: Oidc.NotLoggedIn["login"] = async ({ doesCurrentHrefRequiresAuth }) => {
88
+ const login: Oidc.NotLoggedIn["login"] = async ({
89
+ doesCurrentHrefRequiresAuth,
90
+ extraQueryParams
91
+ }) => {
70
92
  //NOTE: We know there is a extraQueryParameter option but it doesn't allow
71
- // to control the encoding so we have to hack the global URL Class that is
72
- // used internally by oidc-client-ts
93
+ // to control the encoding so we have to highjack global URL Class that is
94
+ // used internally by oidc-client-ts. It's save to do so since this is the
95
+ // last thing that will be done before the redirect.
73
96
 
74
97
  const URL_real = window.URL;
75
98
 
@@ -79,7 +102,23 @@ export async function createOidc(params: {
79
102
  return new Proxy(urlInstance, {
80
103
  "get": (target, prop) => {
81
104
  if (prop === "href") {
82
- return transformUrlBeforeRedirect(urlInstance.href);
105
+ let url = urlInstance.href;
106
+
107
+ Object.entries({
108
+ ...getExtraQueryParams?.(),
109
+ ...extraQueryParams
110
+ }).forEach(
111
+ ([name, value]) =>
112
+ (url = addQueryParamToUrl({
113
+ url,
114
+ name,
115
+ value
116
+ }).newUrl)
117
+ );
118
+
119
+ url = transformUrlBeforeRedirect(url);
120
+
121
+ return url;
83
122
  }
84
123
 
85
124
  //@ts-expect-error
@@ -298,15 +337,18 @@ export async function createOidc(params: {
298
337
  "refreshTokenExpirationTime": currentTokens.refreshTokenExpirationTime,
299
338
  "accessTokenExpirationTime": currentTokens.accessTokenExpirationTime
300
339
  }),
301
- "logout": async ({ redirectTo }) => {
340
+ "logout": async params => {
302
341
  await userManager.signoutRedirect({
303
342
  "post_logout_redirect_uri": (() => {
304
- switch (redirectTo) {
343
+ switch (params.redirectTo) {
305
344
  case "current page":
306
345
  return window.location.href;
307
346
  case "home":
308
- return window.location.origin;
347
+ return `${window.location.origin}${publicUrl}`;
348
+ case "specific url":
349
+ return params.url;
309
350
  }
351
+ assert<Equals<typeof params, never>>(false);
310
352
  })()
311
353
  });
312
354
  return new Promise<never>(() => {});
@@ -0,0 +1,2 @@
1
+ import decodeJwt from "jwt-decode";
2
+ export { decodeJwt };
@@ -0,0 +1,2 @@
1
+ import decodeJwt from "jwt-decode";
2
+ export { decodeJwt };
@@ -1,2 +1,9 @@
1
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.decodeJwt = void 0;
7
+ var jwt_decode_1 = __importDefault(require("jwt-decode"));
8
+ exports.decodeJwt = jwt_decode_1.default;
2
9
  //# sourceMappingURL=decodeJwt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decodeJwt.js","sourceRoot":"","sources":["../src/tools/decodeJwt.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"decodeJwt.js","sourceRoot":"","sources":["../src/tools/decodeJwt.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAmC;AAC1B,oBADF,oBAAS,CACE"}