oidc-spa 6.5.2 → 6.6.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.
Files changed (81) hide show
  1. package/mock/oidc.js +6 -5
  2. package/mock/oidc.js.map +1 -1
  3. package/oidc/AuthResponse.d.ts +6 -0
  4. package/oidc/AuthResponse.js +59 -0
  5. package/oidc/AuthResponse.js.map +1 -0
  6. package/oidc/Oidc.d.ts +19 -8
  7. package/oidc/createOidc.d.ts +4 -4
  8. package/oidc/createOidc.js +359 -295
  9. package/oidc/createOidc.js.map +1 -1
  10. package/oidc/evtIsUserActive.d.ts +15 -0
  11. package/oidc/{isUserActive.js → evtIsUserActive.js} +29 -12
  12. package/oidc/evtIsUserActive.js.map +1 -0
  13. package/oidc/handleOidcCallback.d.ts +8 -1
  14. package/oidc/handleOidcCallback.js +68 -13
  15. package/oidc/handleOidcCallback.js.map +1 -1
  16. package/oidc/loginOrGoToAuthServer.d.ts +5 -4
  17. package/oidc/loginOrGoToAuthServer.js +190 -227
  18. package/oidc/loginOrGoToAuthServer.js.map +1 -1
  19. package/oidc/loginPropagationToOtherTabs.d.ts +17 -0
  20. package/oidc/loginPropagationToOtherTabs.js +41 -0
  21. package/oidc/loginPropagationToOtherTabs.js.map +1 -0
  22. package/oidc/loginSilent.d.ts +1 -5
  23. package/oidc/loginSilent.js +3 -51
  24. package/oidc/loginSilent.js.map +1 -1
  25. package/oidc/logoutPropagationToOtherTabs.js +1 -1
  26. package/oidc/logoutPropagationToOtherTabs.js.map +1 -1
  27. package/oidc/oidcClientTsUserToTokens.d.ts +1 -1
  28. package/oidc/oidcClientTsUserToTokens.js +45 -23
  29. package/oidc/oidcClientTsUserToTokens.js.map +1 -1
  30. package/oidc/ongoingLoginOrRefreshProcesses.d.ts +16 -0
  31. package/oidc/ongoingLoginOrRefreshProcesses.js +102 -0
  32. package/oidc/ongoingLoginOrRefreshProcesses.js.map +1 -0
  33. package/oidc/persistedAuthState.d.ts +16 -3
  34. package/oidc/persistedAuthState.js +35 -4
  35. package/oidc/persistedAuthState.js.map +1 -1
  36. package/package.json +36 -21
  37. package/react/react.js +8 -14
  38. package/react/react.js.map +1 -1
  39. package/src/mock/oidc.ts +14 -3
  40. package/src/oidc/AuthResponse.ts +26 -0
  41. package/src/oidc/Oidc.ts +19 -4
  42. package/src/oidc/createOidc.ts +233 -206
  43. package/src/oidc/{isUserActive.ts → evtIsUserActive.ts} +36 -10
  44. package/src/oidc/handleOidcCallback.ts +73 -12
  45. package/src/oidc/loginOrGoToAuthServer.ts +94 -87
  46. package/src/oidc/loginPropagationToOtherTabs.ts +63 -0
  47. package/src/oidc/loginSilent.ts +2 -20
  48. package/src/oidc/logoutPropagationToOtherTabs.ts +2 -2
  49. package/src/oidc/oidcClientTsUserToTokens.ts +74 -35
  50. package/src/oidc/ongoingLoginOrRefreshProcesses.ts +60 -0
  51. package/src/oidc/persistedAuthState.ts +66 -8
  52. package/src/react/react.tsx +8 -16
  53. package/src/tools/{ephemeralSessionStorage.ts → EphemeralSessionStorage.ts} +59 -27
  54. package/src/tools/Evt.ts +56 -0
  55. package/src/tools/StatefulEvt.ts +38 -0
  56. package/src/tools/subscribeToUserInteraction.ts +0 -1
  57. package/src/tools/workerTimers.ts +10 -12
  58. package/tools/EphemeralSessionStorage.d.ts +12 -0
  59. package/tools/{ephemeralSessionStorage.js → EphemeralSessionStorage.js} +29 -16
  60. package/tools/EphemeralSessionStorage.js.map +1 -0
  61. package/tools/Evt.d.ts +11 -0
  62. package/tools/{AwaitableEventEmitter.js → Evt.js} +24 -8
  63. package/tools/Evt.js.map +1 -0
  64. package/tools/StatefulEvt.d.ts +12 -0
  65. package/tools/StatefulEvt.js +24 -0
  66. package/tools/StatefulEvt.js.map +1 -0
  67. package/tools/subscribeToUserInteraction.js +2 -3
  68. package/tools/subscribeToUserInteraction.js.map +1 -1
  69. package/tools/workerTimers.js +11 -13
  70. package/tools/workerTimers.js.map +1 -1
  71. package/oidc/isUserActive.d.ts +0 -13
  72. package/oidc/isUserActive.js.map +0 -1
  73. package/src/tools/AwaitableEventEmitter.ts +0 -33
  74. package/src/tools/StatefulObservable.ts +0 -52
  75. package/tools/AwaitableEventEmitter.d.ts +0 -5
  76. package/tools/AwaitableEventEmitter.js.map +0 -1
  77. package/tools/StatefulObservable.d.ts +0 -12
  78. package/tools/StatefulObservable.js +0 -33
  79. package/tools/StatefulObservable.js.map +0 -1
  80. package/tools/ephemeralSessionStorage.d.ts +0 -3
  81. package/tools/ephemeralSessionStorage.js.map +0 -1
@@ -35,62 +35,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
- var __values = (this && this.__values) || function(o) {
39
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
- if (m) return m.call(o);
41
- if (o && typeof o.length === "number") return {
42
- next: function () {
43
- if (o && i >= o.length) o = void 0;
44
- return { value: o && o[i++], done: !o };
45
- }
46
- };
47
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
- };
49
- var __read = (this && this.__read) || function (o, n) {
50
- var m = typeof Symbol === "function" && o[Symbol.iterator];
51
- if (!m) return o;
52
- var i = m.call(o), r, ar = [], e;
53
- try {
54
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55
- }
56
- catch (error) { e = { error: error }; }
57
- finally {
58
- try {
59
- if (r && !r.done && (m = i["return"])) m.call(i);
60
- }
61
- finally { if (e) throw e.error; }
62
- }
63
- return ar;
64
- };
65
38
  Object.defineProperty(exports, "__esModule", { value: true });
66
- exports.authResponseToUrl = authResponseToUrl;
67
39
  exports.loginSilent = loginSilent;
68
40
  var Deferred_1 = require("../tools/Deferred");
69
41
  var tsafe_1 = require("../vendor/frontend/tsafe");
70
42
  var StateData_1 = require("./StateData");
71
43
  var getDownlinkAndRtt_1 = require("../tools/getDownlinkAndRtt");
72
44
  var isDev_1 = require("../tools/isDev");
73
- function getIsAuthResponse(data) {
74
- return data instanceof Object && "state" in data && typeof data.state === "string";
75
- }
76
- function authResponseToUrl(authResponse) {
77
- var e_1, _a;
78
- var authResponseUrl = new URL("https://dummy.com");
79
- try {
80
- for (var _b = __values(Object.entries(authResponse)), _c = _b.next(); !_c.done; _c = _b.next()) {
81
- var _d = __read(_c.value, 2), name_1 = _d[0], value = _d[1];
82
- authResponseUrl.searchParams.set(name_1, value);
83
- }
84
- }
85
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
86
- finally {
87
- try {
88
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
89
- }
90
- finally { if (e_1) throw e_1.error; }
91
- }
92
- return authResponseUrl.href;
93
- }
45
+ var AuthResponse_1 = require("./AuthResponse");
94
46
  function loginSilent(params) {
95
47
  return __awaiter(this, void 0, void 0, function () {
96
48
  var oidcClientTsUserManager, stateQueryParamValue_instance, configId, getExtraTokenParams, dResult, timeoutDelayMs, timeout, listener;
@@ -123,7 +75,7 @@ function loginSilent(params) {
123
75
  });
124
76
  }); }, timeoutDelayMs);
125
77
  listener = function (event) {
126
- if (!getIsAuthResponse(event.data)) {
78
+ if (!(0, AuthResponse_1.getIsAuthResponse)(event.data)) {
127
79
  return;
128
80
  }
129
81
  var authResponse = event.data;
@@ -151,7 +103,7 @@ function loginSilent(params) {
151
103
  extraTokenParams: getExtraTokenParams === null || getExtraTokenParams === void 0 ? void 0 : getExtraTokenParams()
152
104
  })
153
105
  .then(function (oidcClientTsUser) {
154
- (0, tsafe_1.assert)(oidcClientTsUser !== null);
106
+ (0, tsafe_1.assert)(oidcClientTsUser !== null, "oidcClientTsUser is not supposed to be null here");
155
107
  clearTimeout(timeout);
156
108
  dResult.resolve({
157
109
  outcome: "token refreshed using refresh token",
@@ -1 +1 @@
1
- {"version":3,"file":"loginSilent.js","sourceRoot":"","sources":["../src/oidc/loginSilent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loginSilent.js","sourceRoot":"","sources":["../src/oidc/loginSilent.ts"],"names":[],"mappings":"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"}
@@ -30,10 +30,10 @@ function getPrOtherTabLogout(params) {
30
30
  channel.onmessage = function (_a) {
31
31
  var message = _a.data;
32
32
  (0, tsafe_1.assert)((0, tsafe_1.is)(message));
33
- channel.close();
34
33
  if (message.appInstanceId === globalContext.appInstanceId) {
35
34
  return;
36
35
  }
36
+ channel.close();
37
37
  var redirectUrl = (function () {
38
38
  if (configId === message.configId) {
39
39
  return message.redirectUrl_initiator;
@@ -1 +1 @@
1
- {"version":3,"file":"logoutPropagationToOtherTabs.js","sourceRoot":"","sources":["../src/oidc/logoutPropagationToOtherTabs.ts"],"names":[],"mappings":";;;AA8BA,0DAgBC;AAED,kDAkCC;AAlFD,kDAAsD;AACtD,8CAA6C;AAE7C,IAAM,kBAAkB,GAAG,uDAAuD,CAAC;AAUnF,MAAA,MAAM,CAAC,kBAAkB,qCAAzB,MAAM,CAAC,kBAAkB,IAAM;IAC3B,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACrD,EAAC;AAEF,IAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAQjD,SAAS,cAAc,CAAC,MAAuC;IACnD,IAAA,mBAAmB,GAAK,MAAM,oBAAX,CAAY;IACvC,OAAO,sCAA+B,mBAAmB,CAAE,CAAC;AAChE,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAIvC;IACW,IAAA,WAAW,GAA0B,MAAM,YAAhC,EAAE,QAAQ,GAAgB,MAAM,SAAtB,EAAE,SAAS,GAAK,MAAM,UAAX,CAAY;IAEpD,IAAM,OAAO,GAAY;QACrB,qBAAqB,EAAE,WAAW;QAClC,QAAQ,UAAA;QACR,aAAa,EAAE,aAAa,CAAC,aAAa;KAC7C,CAAC;IAEF,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAC5F,OAAO,CACV,CAAC;AACN,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAInC;IACW,IAAA,SAAS,GAAwB,MAAM,UAA9B,EAAE,QAAQ,GAAc,MAAM,SAApB,EAAE,OAAO,GAAK,MAAM,QAAX,CAAY;IAEhD,IAAM,eAAe,GAAG,IAAI,mBAAQ,EAA2B,CAAC;IAEhE,IAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErG,OAAO,CAAC,SAAS,GAAG,UAAC,EAAiB;YAAT,OAAO,UAAA;QAChC,IAAA,cAAM,EAAC,IAAA,UAAE,EAAU,OAAO,CAAC,CAAC,CAAC;QAE7B,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO;QACX,CAAC;QAED,IAAM,WAAW,GAAG,CAAC;YACjB,IAAI,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,qBAAqB,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,EAAE,CAAC;QAEL,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC;IAE5C,OAAO,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"logoutPropagationToOtherTabs.js","sourceRoot":"","sources":["../src/oidc/logoutPropagationToOtherTabs.ts"],"names":[],"mappings":";;;AA8BA,0DAgBC;AAED,kDAkCC;AAlFD,kDAAsD;AACtD,8CAA6C;AAE7C,IAAM,kBAAkB,GAAG,uDAAuD,CAAC;AAUnF,MAAA,MAAM,CAAC,kBAAkB,qCAAzB,MAAM,CAAC,kBAAkB,IAAM;IAC3B,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACrD,EAAC;AAEF,IAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAQjD,SAAS,cAAc,CAAC,MAAuC;IACnD,IAAA,mBAAmB,GAAK,MAAM,oBAAX,CAAY;IACvC,OAAO,sCAA+B,mBAAmB,CAAE,CAAC;AAChE,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAIvC;IACW,IAAA,WAAW,GAA0B,MAAM,YAAhC,EAAE,QAAQ,GAAgB,MAAM,SAAtB,EAAE,SAAS,GAAK,MAAM,UAAX,CAAY;IAEpD,IAAM,OAAO,GAAY;QACrB,qBAAqB,EAAE,WAAW;QAClC,QAAQ,UAAA;QACR,aAAa,EAAE,aAAa,CAAC,aAAa;KAC7C,CAAC;IAEF,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAC5F,OAAO,CACV,CAAC;AACN,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAInC;IACW,IAAA,SAAS,GAAwB,MAAM,UAA9B,EAAE,QAAQ,GAAc,MAAM,SAApB,EAAE,OAAO,GAAK,MAAM,QAAX,CAAY;IAEhD,IAAM,eAAe,GAAG,IAAI,mBAAQ,EAA2B,CAAC;IAEhE,IAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErG,OAAO,CAAC,SAAS,GAAG,UAAC,EAAiB;YAAT,OAAO,UAAA;QAChC,IAAA,cAAM,EAAC,IAAA,UAAE,EAAU,OAAO,CAAC,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO;QACX,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAM,WAAW,GAAG,CAAC;YACjB,IAAI,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,qBAAqB,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,EAAE,CAAC;QAEL,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC;IAE5C,OAAO,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AAChC,CAAC"}
@@ -7,6 +7,6 @@ export declare function oidcClientTsUserToTokens<DecodedIdToken extends Record<s
7
7
  };
8
8
  __unsafe_useIdTokenAsAccessToken: boolean;
9
9
  decodedIdToken_previous: DecodedIdToken | undefined;
10
- log: ((message: string) => void) | undefined;
10
+ log: typeof console.log | undefined;
11
11
  }): Oidc.Tokens<DecodedIdToken>;
12
12
  export declare function getMsBeforeExpiration(tokens: Oidc.Tokens): number;
@@ -18,12 +18,13 @@ var readExpirationTimeInJwt_1 = require("../tools/readExpirationTimeInJwt");
18
18
  var decodeJwt_1 = require("../tools/decodeJwt");
19
19
  function oidcClientTsUserToTokens(params) {
20
20
  var oidcClientTsUser = params.oidcClientTsUser, decodedIdTokenSchema = params.decodedIdTokenSchema, __unsafe_useIdTokenAsAccessToken = params.__unsafe_useIdTokenAsAccessToken, decodedIdToken_previous = params.decodedIdToken_previous, log = params.log;
21
+ var isFirstInit = decodedIdToken_previous === undefined;
21
22
  var accessToken = oidcClientTsUser.access_token;
22
23
  var accessTokenExpirationTime = (function () {
23
- read_from_metadata: {
24
+ read_from_token_response: {
24
25
  var expires_at = oidcClientTsUser.expires_at;
25
26
  if (expires_at === undefined) {
26
- break read_from_metadata;
27
+ break read_from_token_response;
27
28
  }
28
29
  return expires_at * 1000;
29
30
  }
@@ -39,7 +40,7 @@ function oidcClientTsUserToTokens(params) {
39
40
  var refreshToken = oidcClientTsUser.refresh_token;
40
41
  var refreshTokenExpirationTime = (function () {
41
42
  if (refreshToken === undefined) {
42
- return Number.POSITIVE_INFINITY;
43
+ return undefined;
43
44
  }
44
45
  read_from_jwt: {
45
46
  var expirationTime = (0, readExpirationTimeInJwt_1.readExpirationTimeInJwt)(refreshToken);
@@ -48,17 +49,35 @@ function oidcClientTsUserToTokens(params) {
48
49
  }
49
50
  return expirationTime;
50
51
  }
51
- log === null || log === void 0 ? void 0 : log([
52
- "Couldn't read the expiration time of the refresh token from the jwt",
53
- "It's ok. Some OIDC server like Microsoft Entra ID does not use JWT for the refresh token.",
54
- "Be aware that it prevent you from implementing the auto logout mechanism: https://docs.oidc-spa.dev/v/v6/auto-logout",
55
- "If you need auto logout you'll have to provide use the __unsafe_ssoSessionIdleSeconds param."
56
- ].join("\n"));
57
- return Number.POSITIVE_INFINITY;
52
+ return undefined;
58
53
  })();
59
54
  var idToken = oidcClientTsUser.id_token;
60
55
  (0, tsafe_1.assert)(idToken !== undefined, "No id token provided by the oidc server");
61
- var tokens = __assign(__assign({}, (__unsafe_useIdTokenAsAccessToken
56
+ var decodedIdToken = (function () {
57
+ var decodedIdToken = (0, decodeJwt_1.decodeJwt)(idToken);
58
+ if (isFirstInit) {
59
+ log === null || log === void 0 ? void 0 : log([
60
+ "Decoded ID token",
61
+ decodedIdTokenSchema === undefined ? "" : " before `decodedIdTokenSchema.parse()`\n",
62
+ JSON.stringify(decodedIdToken, null, 2)
63
+ ].join(""));
64
+ }
65
+ if (decodedIdTokenSchema !== undefined) {
66
+ decodedIdToken = decodedIdTokenSchema.parse(decodedIdToken);
67
+ if (isFirstInit) {
68
+ log === null || log === void 0 ? void 0 : log([
69
+ "Decoded ID token after `decodedIdTokenSchema.parse()`\n",
70
+ JSON.stringify(decodedIdToken, null, 2)
71
+ ].join(""));
72
+ }
73
+ }
74
+ if (decodedIdToken_previous !== undefined &&
75
+ JSON.stringify(decodedIdToken) === JSON.stringify(decodedIdToken_previous)) {
76
+ return decodedIdToken_previous;
77
+ }
78
+ return decodedIdToken;
79
+ })();
80
+ var tokens_common = __assign(__assign({}, (__unsafe_useIdTokenAsAccessToken
62
81
  ? {
63
82
  accessToken: idToken,
64
83
  accessTokenExpirationTime: (function () {
@@ -67,24 +86,27 @@ function oidcClientTsUserToTokens(params) {
67
86
  return expirationTime;
68
87
  })()
69
88
  }
70
- : { accessToken: accessToken, accessTokenExpirationTime: accessTokenExpirationTime })), { refreshToken: refreshToken !== null && refreshToken !== void 0 ? refreshToken : "", refreshTokenExpirationTime: refreshTokenExpirationTime, idToken: idToken, decodedIdToken: (function () {
71
- var decodedIdToken = (0, decodeJwt_1.decodeJwt)(idToken);
72
- if (decodedIdTokenSchema !== undefined) {
73
- decodedIdToken = decodedIdTokenSchema.parse(decodedIdToken);
74
- }
75
- if (decodedIdToken_previous !== undefined &&
76
- JSON.stringify(decodedIdToken) === JSON.stringify(decodedIdToken_previous)) {
77
- return decodedIdToken_previous;
78
- }
79
- return decodedIdToken;
80
- })() });
89
+ : { accessToken: accessToken, accessTokenExpirationTime: accessTokenExpirationTime })), { idToken: idToken, decodedIdToken: decodedIdToken });
90
+ var tokens = refreshToken === undefined
91
+ ? (0, tsafe_1.id)(__assign(__assign({}, tokens_common), { hasRefreshToken: false }))
92
+ : (0, tsafe_1.id)(__assign(__assign({}, tokens_common), { hasRefreshToken: true, refreshToken: refreshToken, refreshTokenExpirationTime: refreshTokenExpirationTime }));
93
+ if (isFirstInit &&
94
+ tokens.hasRefreshToken &&
95
+ tokens.refreshTokenExpirationTime !== undefined &&
96
+ tokens.refreshTokenExpirationTime < tokens.accessTokenExpirationTime) {
97
+ console.warn([
98
+ "The OIDC refresh token shorter than the one of the access token.",
99
+ "This is very unusual and probably a misconfiguration."
100
+ ].join(" "));
101
+ }
81
102
  return tokens;
82
103
  }
83
104
  function getMsBeforeExpiration(tokens) {
105
+ var _a;
84
106
  // NOTE: In general the access token is supposed to have a shorter
85
107
  // lifespan than the refresh token but we don't want to make any
86
108
  // assumption here.
87
- var tokenExpirationTime = Math.min(tokens.accessTokenExpirationTime, tokens.refreshTokenExpirationTime);
109
+ var tokenExpirationTime = Math.min(tokens.accessTokenExpirationTime, (_a = tokens.refreshTokenExpirationTime) !== null && _a !== void 0 ? _a : Number.POSITIVE_INFINITY);
88
110
  var msBeforeExpiration = Math.min(tokenExpirationTime - Date.now(),
89
111
  // NOTE: We want to make sure we do not overflow the setTimeout
90
112
  // that must be a 32 bit unsigned integer.
@@ -1 +1 @@
1
- {"version":3,"file":"oidcClientTsUserToTokens.js","sourceRoot":"","sources":["../src/oidc/oidcClientTsUserToTokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oidcClientTsUserToTokens.js","sourceRoot":"","sources":["../src/oidc/oidcClientTsUserToTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ declare const GLOBAL_CONTEXT_KEY = "__oidc-spa.ongoingLoginOrRefreshProcesses.globalContext";
2
+ declare global {
3
+ interface Window {
4
+ [GLOBAL_CONTEXT_KEY]: {
5
+ prDone_arr: Promise<void>[];
6
+ prUnlock: Promise<void>;
7
+ };
8
+ }
9
+ }
10
+ export declare function startLoginOrRefreshProcess(): Promise<{
11
+ completeLoginOrRefreshProcess: () => void;
12
+ }>;
13
+ export declare function waitForAllOtherOngoingLoginOrRefreshProcessesToComplete(params: {
14
+ prUnlock: Promise<void>;
15
+ }): Promise<void>;
16
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var _a;
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.startLoginOrRefreshProcess = startLoginOrRefreshProcess;
41
+ exports.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete = waitForAllOtherOngoingLoginOrRefreshProcessesToComplete;
42
+ var Deferred_1 = require("../tools/Deferred");
43
+ var tsafe_1 = require("../vendor/frontend/tsafe");
44
+ var GLOBAL_CONTEXT_KEY = "__oidc-spa.ongoingLoginOrRefreshProcesses.globalContext";
45
+ (_a = window[GLOBAL_CONTEXT_KEY]) !== null && _a !== void 0 ? _a : (window[GLOBAL_CONTEXT_KEY] = {
46
+ prDone_arr: [],
47
+ prUnlock: Promise.resolve()
48
+ });
49
+ var globalContext = window[GLOBAL_CONTEXT_KEY];
50
+ function startLoginOrRefreshProcess() {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ function completeLoginOrRefreshProcess() {
53
+ var index = prDone_arr.indexOf(dDone.pr);
54
+ (0, tsafe_1.assert)(index !== -1);
55
+ prDone_arr.splice(index, 1);
56
+ dDone.resolve();
57
+ }
58
+ var dDone, prDone_arr;
59
+ return __generator(this, function (_a) {
60
+ switch (_a.label) {
61
+ case 0: return [4 /*yield*/, globalContext.prUnlock];
62
+ case 1:
63
+ _a.sent();
64
+ dDone = new Deferred_1.Deferred();
65
+ prDone_arr = globalContext.prDone_arr;
66
+ prDone_arr.push(dDone.pr);
67
+ return [2 /*return*/, { completeLoginOrRefreshProcess: completeLoginOrRefreshProcess }];
68
+ }
69
+ });
70
+ });
71
+ }
72
+ function waitForAllOtherOngoingLoginOrRefreshProcessesToComplete(params) {
73
+ return __awaiter(this, void 0, void 0, function () {
74
+ var prUnlock, prUnlock_current;
75
+ var _this = this;
76
+ return __generator(this, function (_a) {
77
+ switch (_a.label) {
78
+ case 0:
79
+ prUnlock = params.prUnlock;
80
+ prUnlock_current = globalContext.prUnlock;
81
+ globalContext.prUnlock = (function () { return __awaiter(_this, void 0, void 0, function () {
82
+ return __generator(this, function (_a) {
83
+ switch (_a.label) {
84
+ case 0: return [4 /*yield*/, prUnlock_current];
85
+ case 1:
86
+ _a.sent();
87
+ return [4 /*yield*/, prUnlock];
88
+ case 2:
89
+ _a.sent();
90
+ return [2 /*return*/];
91
+ }
92
+ });
93
+ }); })();
94
+ return [4 /*yield*/, Promise.all(globalContext.prDone_arr)];
95
+ case 1:
96
+ _a.sent();
97
+ return [2 /*return*/];
98
+ }
99
+ });
100
+ });
101
+ }
102
+ //# sourceMappingURL=ongoingLoginOrRefreshProcesses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ongoingLoginOrRefreshProcesses.js","sourceRoot":"","sources":["../src/oidc/ongoingLoginOrRefreshProcesses.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,gEAsBC;AAED,0HAcC;AA3DD,8CAA6C;AAC7C,kDAAkD;AAElD,IAAM,kBAAkB,GAAG,yDAAyD,CAAC;AAWrF,MAAA,MAAM,CAAC,kBAAkB,qCAAzB,MAAM,CAAC,kBAAkB,IAAM;IAC3B,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE;CAC9B,EAAC;AAEF,IAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEjD,SAAsB,0BAA0B;;QAW5C,SAAS,6BAA6B;YAClC,IAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAE3C,IAAA,cAAM,EAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAErB,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAE5B,KAAK,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;;;;wBAhBD,qBAAM,aAAa,CAAC,QAAQ,EAAA;;oBAA5B,SAA4B,CAAC;oBAEvB,KAAK,GAAG,IAAI,mBAAQ,EAAQ,CAAC;oBAE3B,UAAU,GAAK,aAAa,WAAlB,CAAmB;oBAErC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAY1B,sBAAO,EAAE,6BAA6B,+BAAA,EAAE,EAAC;;;;CAC5C;AAED,SAAsB,uDAAuD,CAAC,MAE7E;;;;;;;oBACW,QAAQ,GAAK,MAAM,SAAX,CAAY;oBAEtB,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC;oBAEhD,aAAa,CAAC,QAAQ,GAAG,CAAC;;;wCACtB,qBAAM,gBAAgB,EAAA;;oCAAtB,SAAsB,CAAC;oCAEvB,qBAAM,QAAQ,EAAA;;oCAAd,SAAc,CAAC;;;;yBAClB,CAAC,EAAE,CAAC;oBAEL,qBAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,EAAA;;oBAA3C,SAA2C,CAAC;;;;;CAC/C"}
@@ -1,9 +1,22 @@
1
- type PersistedAuthState = "logged in" | "explicitly logged out";
1
+ type PersistedAuthState = PersistedAuthState.LoggedIn | PersistedAuthState.ExplicitlyLoggedOut;
2
+ declare namespace PersistedAuthState {
3
+ type Common = {
4
+ __brand: "PersistedAuthState-v1";
5
+ };
6
+ export type LoggedIn = Common & {
7
+ stateDescription: "logged in";
8
+ untilTime: number | undefined;
9
+ };
10
+ export type ExplicitlyLoggedOut = Common & {
11
+ stateDescription: "explicitly logged out";
12
+ };
13
+ export {};
14
+ }
2
15
  export declare function persistAuthState(params: {
3
16
  configId: string;
4
- state: PersistedAuthState | undefined;
17
+ state: Omit<PersistedAuthState.ExplicitlyLoggedOut, "__brand"> | Omit<PersistedAuthState.LoggedIn, "__brand"> | undefined;
5
18
  }): void;
6
19
  export declare function getPersistedAuthState(params: {
7
20
  configId: string;
8
- }): PersistedAuthState | undefined;
21
+ }): PersistedAuthState["stateDescription"] | undefined;
9
22
  export {};
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
14
  exports.persistAuthState = persistAuthState;
4
15
  exports.getPersistedAuthState = getPersistedAuthState;
@@ -14,15 +25,35 @@ function persistAuthState(params) {
14
25
  localStorage.removeItem(key);
15
26
  return;
16
27
  }
17
- localStorage.setItem(key, state);
28
+ localStorage.setItem(key, JSON.stringify((0, tsafe_1.id)(__assign({ __brand: "PersistedAuthState-v1" }, state))));
18
29
  }
19
30
  function getPersistedAuthState(params) {
20
31
  var configId = params.configId;
21
- var value = localStorage.getItem(getKey({ configId: configId }));
32
+ var key = getKey({ configId: configId });
33
+ var value = localStorage.getItem(key);
22
34
  if (value === null) {
23
35
  return undefined;
24
36
  }
25
- (0, tsafe_1.assert)(value === "logged in" || value === "explicitly logged out");
26
- return value;
37
+ var state;
38
+ try {
39
+ state = JSON.parse(value);
40
+ }
41
+ catch (_a) {
42
+ localStorage.removeItem(key);
43
+ return undefined;
44
+ }
45
+ if (!(0, tsafe_1.typeGuard)(state, state instanceof Object &&
46
+ "__brand" in state &&
47
+ state.__brand === (0, tsafe_1.id)("PersistedAuthState-v1"))) {
48
+ localStorage.removeItem(key);
49
+ return undefined;
50
+ }
51
+ if (state.stateDescription === "logged in") {
52
+ if (state.untilTime !== undefined && state.untilTime <= Date.now()) {
53
+ localStorage.removeItem(key);
54
+ return undefined;
55
+ }
56
+ }
57
+ return state.stateDescription;
27
58
  }
28
59
  //# sourceMappingURL=persistedAuthState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistedAuthState.js","sourceRoot":"","sources":["../src/oidc/persistedAuthState.ts"],"names":[],"mappings":";;AAUA,4CAWC;AAED,sDAYC;AAnCD,kDAAkD;AAElD,SAAS,MAAM,CAAC,MAA4B;IAChC,IAAA,QAAQ,GAAK,MAAM,SAAX,CAAY;IAE5B,OAAO,8BAAuB,QAAQ,CAAE,CAAC;AAC7C,CAAC;AAID,SAAgB,gBAAgB,CAAC,MAAmE;IACxF,IAAA,QAAQ,GAAY,MAAM,SAAlB,EAAE,KAAK,GAAK,MAAM,MAAX,CAAY;IAEnC,IAAM,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAEjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO;IACX,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAA4B;IACtD,IAAA,QAAQ,GAAK,MAAM,SAAX,CAAY;IAE5B,IAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAA,cAAM,EAAC,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,uBAAuB,CAAC,CAAC;IAEnE,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"persistedAuthState.js","sourceRoot":"","sources":["../src/oidc/persistedAuthState.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAwBA,4CAyBC;AAED,sDA0CC;AA7FD,kDAAyD;AAEzD,SAAS,MAAM,CAAC,MAA4B;IAChC,IAAA,QAAQ,GAAK,MAAM,SAAX,CAAY;IAE5B,OAAO,8BAAuB,QAAQ,CAAE,CAAC;AAC7C,CAAC;AAkBD,SAAgB,gBAAgB,CAAC,MAMhC;IACW,IAAA,QAAQ,GAAY,MAAM,SAAlB,EAAE,KAAK,GAAK,MAAM,MAAX,CAAY;IAEnC,IAAM,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAEjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO;IACX,CAAC;IAED,YAAY,CAAC,OAAO,CAChB,GAAG,EACH,IAAI,CAAC,SAAS,CACV,IAAA,UAAE,aACE,OAAO,EAAE,uBAAuB,IAC7B,KAAK,EACV,CACL,CACJ,CAAC;AACN,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAErC;IACW,IAAA,QAAQ,GAAK,MAAM,SAAX,CAAY;IAE5B,IAAM,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAEjC,IAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,KAAc,CAAC;IAEnB,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,WAAM,CAAC;QACL,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IACI,CAAC,IAAA,iBAAS,EACN,KAAK,EACL,KAAK,YAAY,MAAM;QACnB,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,OAAO,KAAK,IAAA,UAAE,EAAgC,uBAAuB,CAAC,CACnF,EACH,CAAC;QACC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,KAAK,WAAW,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACjE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAClC,CAAC"}