oidc-spa 7.1.10 → 7.2.0-rc.2

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 (367) hide show
  1. package/backend.js +235 -352
  2. package/backend.js.map +1 -1
  3. package/core/AuthResponse.js +12 -49
  4. package/core/AuthResponse.js.map +1 -1
  5. package/core/Oidc.d.ts +1 -2
  6. package/core/Oidc.js.map +1 -1
  7. package/core/OidcInitializationError.d.ts +0 -13
  8. package/core/OidcInitializationError.js +8 -318
  9. package/core/OidcInitializationError.js.map +1 -1
  10. package/core/OidcMetadata.js +1 -1
  11. package/core/OidcMetadata.js.map +1 -1
  12. package/core/StateData.d.ts +5 -5
  13. package/core/StateData.js +25 -25
  14. package/core/StateData.js.map +1 -1
  15. package/core/configId.js +1 -1
  16. package/core/configId.js.map +1 -1
  17. package/core/createOidc.d.ts +8 -0
  18. package/core/createOidc.js +1030 -1292
  19. package/core/createOidc.js.map +1 -1
  20. package/core/diagnostic.d.ts +14 -0
  21. package/core/diagnostic.js +214 -0
  22. package/core/diagnostic.js.map +1 -0
  23. package/core/evtIsUserActive.js +26 -27
  24. package/core/evtIsUserActive.js.map +1 -1
  25. package/core/handleOidcCallback.js +99 -154
  26. package/core/handleOidcCallback.js.map +1 -1
  27. package/core/iframeMessageProtection.d.ts +1 -1
  28. package/core/iframeMessageProtection.js +40 -106
  29. package/core/iframeMessageProtection.js.map +1 -1
  30. package/core/index.d.ts +1 -1
  31. package/core/index.js +3 -3
  32. package/core/index.js.map +1 -1
  33. package/core/initialLocationHref.js +1 -1
  34. package/core/initialLocationHref.js.map +1 -1
  35. package/core/isNewBrowserSession.js +8 -8
  36. package/core/isNewBrowserSession.js.map +1 -1
  37. package/core/loginOrGoToAuthServer.d.ts +1 -1
  38. package/core/loginOrGoToAuthServer.js +188 -310
  39. package/core/loginOrGoToAuthServer.js.map +1 -1
  40. package/core/loginPropagationToOtherTabs.js +15 -16
  41. package/core/loginPropagationToOtherTabs.js.map +1 -1
  42. package/core/loginSilent.d.ts +2 -3
  43. package/core/loginSilent.js +118 -214
  44. package/core/loginSilent.js.map +1 -1
  45. package/core/logoutPropagationToOtherTabs.js +15 -16
  46. package/core/logoutPropagationToOtherTabs.js.map +1 -1
  47. package/core/oidcClientTsUserToTokens.d.ts +1 -1
  48. package/core/oidcClientTsUserToTokens.js +75 -72
  49. package/core/oidcClientTsUserToTokens.js.map +1 -1
  50. package/core/ongoingLoginOrRefreshProcesses.js +23 -89
  51. package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
  52. package/core/persistedAuthState.js +13 -13
  53. package/core/persistedAuthState.js.map +1 -1
  54. package/entrypoint.js +9 -9
  55. package/entrypoint.js.map +1 -1
  56. package/esm/core/AuthResponse.d.ts +5 -0
  57. package/{src/core/AuthResponse.ts → esm/core/AuthResponse.js} +3 -9
  58. package/esm/core/AuthResponse.js.map +1 -0
  59. package/esm/core/Oidc.d.ts +126 -0
  60. package/esm/core/Oidc.js +2 -0
  61. package/esm/core/Oidc.js.map +1 -0
  62. package/esm/core/OidcInitializationError.d.ts +7 -0
  63. package/esm/core/OidcInitializationError.js +17 -0
  64. package/esm/core/OidcInitializationError.js.map +1 -0
  65. package/{src/core/OidcMetadata.ts → esm/core/OidcMetadata.d.ts} +0 -5
  66. package/esm/core/OidcMetadata.js +3 -0
  67. package/esm/core/OidcMetadata.js.map +1 -0
  68. package/esm/core/StateData.d.ts +42 -0
  69. package/esm/core/StateData.js +55 -0
  70. package/esm/core/StateData.js.map +1 -0
  71. package/esm/core/configId.d.ts +4 -0
  72. package/esm/core/configId.js +4 -0
  73. package/esm/core/configId.js.map +1 -0
  74. package/esm/core/createOidc.d.ts +132 -0
  75. package/{src/core/createOidc.ts → esm/core/createOidc.js} +282 -826
  76. package/esm/core/createOidc.js.map +1 -0
  77. package/esm/core/diagnostic.d.ts +14 -0
  78. package/{src/core/OidcInitializationError.ts → esm/core/diagnostic.js} +40 -117
  79. package/esm/core/diagnostic.js.map +1 -0
  80. package/esm/core/evtIsUserActive.d.ts +5 -0
  81. package/{src/core/evtIsUserActive.ts → esm/core/evtIsUserActive.js} +14 -46
  82. package/esm/core/evtIsUserActive.js.map +1 -0
  83. package/esm/core/handleOidcCallback.d.ts +13 -0
  84. package/{src/core/handleOidcCallback.ts → esm/core/handleOidcCallback.js} +56 -131
  85. package/esm/core/handleOidcCallback.js.map +1 -0
  86. package/esm/core/iframeMessageProtection.d.ts +20 -0
  87. package/{src/core/iframeMessageProtection.ts → esm/core/iframeMessageProtection.js} +14 -49
  88. package/esm/core/iframeMessageProtection.js.map +1 -0
  89. package/{src/core/index.ts → esm/core/index.d.ts} +1 -1
  90. package/esm/core/index.js +4 -0
  91. package/esm/core/index.js.map +1 -0
  92. package/esm/core/initialLocationHref.d.ts +1 -0
  93. package/{src/core/initialLocationHref.ts → esm/core/initialLocationHref.js} +1 -1
  94. package/esm/core/initialLocationHref.js.map +1 -0
  95. package/esm/core/isNewBrowserSession.d.ts +9 -0
  96. package/{src/core/isNewBrowserSession.ts → esm/core/isNewBrowserSession.js} +3 -15
  97. package/esm/core/isNewBrowserSession.js.map +1 -0
  98. package/esm/core/loginOrGoToAuthServer.d.ts +40 -0
  99. package/{src/core/loginOrGoToAuthServer.ts → esm/core/loginOrGoToAuthServer.js} +60 -168
  100. package/esm/core/loginOrGoToAuthServer.js.map +1 -0
  101. package/esm/core/loginPropagationToOtherTabs.d.ts +8 -0
  102. package/{src/core/loginPropagationToOtherTabs.ts → esm/core/loginPropagationToOtherTabs.js} +7 -25
  103. package/esm/core/loginPropagationToOtherTabs.js.map +1 -0
  104. package/esm/core/loginSilent.d.ts +28 -0
  105. package/esm/core/loginSilent.js +125 -0
  106. package/esm/core/loginSilent.js.map +1 -0
  107. package/esm/core/logoutPropagationToOtherTabs.d.ts +10 -0
  108. package/{src/core/logoutPropagationToOtherTabs.ts → esm/core/logoutPropagationToOtherTabs.js} +8 -28
  109. package/esm/core/logoutPropagationToOtherTabs.js.map +1 -0
  110. package/esm/core/oidcClientTsUserToTokens.d.ts +11 -0
  111. package/esm/core/oidcClientTsUserToTokens.js +155 -0
  112. package/esm/core/oidcClientTsUserToTokens.js.map +1 -0
  113. package/esm/core/ongoingLoginOrRefreshProcesses.d.ts +6 -0
  114. package/{src/core/ongoingLoginOrRefreshProcesses.ts → esm/core/ongoingLoginOrRefreshProcesses.js} +6 -24
  115. package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -0
  116. package/esm/core/persistedAuthState.d.ts +28 -0
  117. package/esm/core/persistedAuthState.js +64 -0
  118. package/esm/core/persistedAuthState.js.map +1 -0
  119. package/esm/entrypoint.d.ts +7 -0
  120. package/{src/entrypoint.ts → esm/entrypoint.js} +3 -26
  121. package/esm/entrypoint.js.map +1 -0
  122. package/esm/index.d.ts +1 -0
  123. package/esm/index.js +2 -0
  124. package/esm/index.js.map +1 -0
  125. package/esm/keycloak/index.d.ts +3 -0
  126. package/esm/keycloak/index.js +3 -0
  127. package/esm/keycloak/index.js.map +1 -0
  128. package/esm/keycloak/isKeycloak.d.ts +3 -0
  129. package/esm/keycloak/isKeycloak.js +17 -0
  130. package/esm/keycloak/isKeycloak.js.map +1 -0
  131. package/esm/keycloak/keycloak-js/Keycloak.d.ts +284 -0
  132. package/esm/keycloak/keycloak-js/Keycloak.js +774 -0
  133. package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -0
  134. package/esm/keycloak/keycloak-js/index.d.ts +2 -0
  135. package/esm/keycloak/keycloak-js/index.js +2 -0
  136. package/esm/keycloak/keycloak-js/index.js.map +1 -0
  137. package/esm/keycloak/keycloak-js/types.d.ts +361 -0
  138. package/esm/keycloak/keycloak-js/types.js +2 -0
  139. package/esm/keycloak/keycloak-js/types.js.map +1 -0
  140. package/esm/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
  141. package/esm/keycloak/keycloakIssuerUriParsed.js +16 -0
  142. package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -0
  143. package/esm/keycloak/keycloakUtils.d.ts +37 -0
  144. package/esm/keycloak/keycloakUtils.js +44 -0
  145. package/esm/keycloak/keycloakUtils.js.map +1 -0
  146. package/esm/keycloak-js.d.ts +1 -0
  147. package/esm/keycloak-js.js +2 -0
  148. package/esm/keycloak-js.js.map +1 -0
  149. package/esm/mock/index.js +2 -0
  150. package/esm/mock/index.js.map +1 -0
  151. package/esm/mock/oidc.d.ts +19 -0
  152. package/{src/mock/oidc.ts → esm/mock/oidc.js} +28 -88
  153. package/esm/mock/oidc.js.map +1 -0
  154. package/esm/mock/react.d.ts +58 -0
  155. package/esm/mock/react.js +7 -0
  156. package/esm/mock/react.js.map +1 -0
  157. package/esm/react/index.js +2 -0
  158. package/esm/react/index.js.map +1 -0
  159. package/esm/react/react.d.ts +102 -0
  160. package/esm/react/react.js +221 -0
  161. package/esm/react/react.js.map +1 -0
  162. package/esm/tools/Deferred.d.ts +14 -0
  163. package/esm/tools/Deferred.js +23 -0
  164. package/esm/tools/Deferred.js.map +1 -0
  165. package/esm/tools/EphemeralSessionStorage.d.ts +12 -0
  166. package/{src/tools/EphemeralSessionStorage.ts → esm/tools/EphemeralSessionStorage.js} +30 -112
  167. package/esm/tools/EphemeralSessionStorage.js.map +1 -0
  168. package/esm/tools/Evt.d.ts +11 -0
  169. package/{src/tools/Evt.ts → esm/tools/Evt.js} +7 -25
  170. package/esm/tools/Evt.js.map +1 -0
  171. package/esm/tools/StatefulEvt.d.ts +12 -0
  172. package/esm/tools/StatefulEvt.js +21 -0
  173. package/esm/tools/StatefulEvt.js.map +1 -0
  174. package/esm/tools/ValueOrAsyncGetter.js +2 -0
  175. package/esm/tools/ValueOrAsyncGetter.js.map +1 -0
  176. package/esm/tools/asymmetricEncryption.d.ts +18 -0
  177. package/esm/tools/asymmetricEncryption.js +85 -0
  178. package/esm/tools/asymmetricEncryption.js.map +1 -0
  179. package/esm/tools/base64.d.ts +2 -0
  180. package/{src/tools/base64.ts → esm/tools/base64.js} +3 -3
  181. package/esm/tools/base64.js.map +1 -0
  182. package/esm/tools/createObjectThatThrowsIfAccessed.d.ts +8 -0
  183. package/{src/tools/createObjectThatThrowsIfAccessed.ts → esm/tools/createObjectThatThrowsIfAccessed.js} +7 -18
  184. package/esm/tools/createObjectThatThrowsIfAccessed.js.map +1 -0
  185. package/esm/tools/decodeJwt.d.ts +25 -0
  186. package/esm/tools/decodeJwt.js +60 -0
  187. package/esm/tools/decodeJwt.js.map +1 -0
  188. package/esm/tools/generateUrlSafeRandom.d.ts +3 -0
  189. package/{src/tools/generateUrlSafeRandom.ts → esm/tools/generateUrlSafeRandom.js} +5 -8
  190. package/esm/tools/generateUrlSafeRandom.js.map +1 -0
  191. package/esm/tools/getDownlinkAndRtt.d.ts +4 -0
  192. package/{src/tools/getDownlinkAndRtt.ts → esm/tools/getDownlinkAndRtt.js} +6 -10
  193. package/esm/tools/getDownlinkAndRtt.js.map +1 -0
  194. package/esm/tools/getIsOnline.d.ts +7 -0
  195. package/{src/tools/getIsOnline.ts → esm/tools/getIsOnline.js} +3 -9
  196. package/esm/tools/getIsOnline.js.map +1 -0
  197. package/esm/tools/getIsValidRemoteJson.d.ts +1 -0
  198. package/esm/tools/getIsValidRemoteJson.js +15 -0
  199. package/esm/tools/getIsValidRemoteJson.js.map +1 -0
  200. package/esm/tools/getPrUserInteraction.d.ts +4 -0
  201. package/{src/tools/getPrUserInteraction.ts → esm/tools/getPrUserInteraction.js} +2 -6
  202. package/esm/tools/getPrUserInteraction.js.map +1 -0
  203. package/esm/tools/getUserEnvironmentInfo.d.ts +1 -0
  204. package/esm/tools/getUserEnvironmentInfo.js +50 -0
  205. package/esm/tools/getUserEnvironmentInfo.js.map +1 -0
  206. package/esm/tools/haveSharedParentDomain.d.ts +4 -0
  207. package/{src/tools/haveSharedParentDomain.ts → esm/tools/haveSharedParentDomain.js} +3 -5
  208. package/esm/tools/haveSharedParentDomain.js.map +1 -0
  209. package/esm/tools/isDev.d.ts +1 -0
  210. package/{src/tools/isDev.ts → esm/tools/isDev.js} +5 -12
  211. package/esm/tools/isDev.js.map +1 -0
  212. package/esm/tools/parseKeycloakIssuerUri.d.ts +30 -0
  213. package/esm/tools/parseKeycloakIssuerUri.js +33 -0
  214. package/esm/tools/parseKeycloakIssuerUri.js.map +1 -0
  215. package/esm/tools/readExpirationTimeInJwt.d.ts +1 -0
  216. package/{src/tools/readExpirationTimeInJwt.ts → esm/tools/readExpirationTimeInJwt.js} +6 -7
  217. package/esm/tools/readExpirationTimeInJwt.js.map +1 -0
  218. package/esm/tools/startCountdown.d.ts +11 -0
  219. package/{src/tools/startCountdown.ts → esm/tools/startCountdown.js} +6 -17
  220. package/esm/tools/startCountdown.js.map +1 -0
  221. package/esm/tools/subscribeToUserInteraction.d.ts +6 -0
  222. package/{src/tools/subscribeToUserInteraction.ts → esm/tools/subscribeToUserInteraction.js} +4 -13
  223. package/esm/tools/subscribeToUserInteraction.js.map +1 -0
  224. package/esm/tools/toFullyQualifiedUrl.d.ts +10 -0
  225. package/{src/tools/toFullyQualifiedUrl.ts → esm/tools/toFullyQualifiedUrl.js} +7 -25
  226. package/esm/tools/toFullyQualifiedUrl.js.map +1 -0
  227. package/esm/tools/toHumanReadableDuration.d.ts +1 -0
  228. package/{src/tools/toHumanReadableDuration.ts → esm/tools/toHumanReadableDuration.js} +8 -5
  229. package/esm/tools/toHumanReadableDuration.js.map +1 -0
  230. package/esm/tools/urlSearchParams.d.ts +19 -0
  231. package/{src/tools/urlSearchParams.ts → esm/tools/urlSearchParams.js} +24 -70
  232. package/esm/tools/urlSearchParams.js.map +1 -0
  233. package/esm/tools/workerTimers.d.ts +5 -0
  234. package/{src/tools/workerTimers.ts → esm/tools/workerTimers.js} +7 -27
  235. package/esm/tools/workerTimers.js.map +1 -0
  236. package/esm/vendor/frontend/oidc-client-ts.d.ts +1 -0
  237. package/esm/vendor/frontend/oidc-client-ts.js +3636 -0
  238. package/{src/vendor/frontend/tsafe.ts → esm/vendor/frontend/tsafe.d.ts} +1 -0
  239. package/esm/vendor/frontend/tsafe.js +1 -0
  240. package/esm/vendor/frontend/worker-timers.js +1 -0
  241. package/index.d.ts +1 -1
  242. package/index.js +1 -2
  243. package/index.js.map +1 -1
  244. package/keycloak/index.d.ts +3 -0
  245. package/keycloak/index.js +8 -0
  246. package/keycloak/index.js.map +1 -0
  247. package/keycloak/isKeycloak.d.ts +3 -0
  248. package/keycloak/isKeycloak.js +20 -0
  249. package/keycloak/isKeycloak.js.map +1 -0
  250. package/keycloak/keycloak-js/Keycloak.d.ts +284 -0
  251. package/keycloak/keycloak-js/Keycloak.js +778 -0
  252. package/keycloak/keycloak-js/Keycloak.js.map +1 -0
  253. package/keycloak/keycloak-js/index.d.ts +2 -0
  254. package/keycloak/keycloak-js/index.js +6 -0
  255. package/keycloak/keycloak-js/index.js.map +1 -0
  256. package/keycloak/keycloak-js/types.d.ts +361 -0
  257. package/keycloak/keycloak-js/types.js +3 -0
  258. package/keycloak/keycloak-js/types.js.map +1 -0
  259. package/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
  260. package/keycloak/keycloakIssuerUriParsed.js +19 -0
  261. package/keycloak/keycloakIssuerUriParsed.js.map +1 -0
  262. package/keycloak/keycloakUtils.d.ts +37 -0
  263. package/keycloak/keycloakUtils.js +47 -0
  264. package/keycloak/keycloakUtils.js.map +1 -0
  265. package/keycloak-js.d.ts +1 -0
  266. package/keycloak-js.js +18 -0
  267. package/keycloak-js.js.map +1 -0
  268. package/mock/index.js.map +1 -1
  269. package/mock/oidc.js +147 -194
  270. package/mock/oidc.js.map +1 -1
  271. package/mock/react.js +2 -2
  272. package/mock/react.js.map +1 -1
  273. package/package.json +74 -299
  274. package/react/index.js.map +1 -1
  275. package/react/react.js +133 -244
  276. package/react/react.js.map +1 -1
  277. package/tools/Deferred.js +13 -35
  278. package/tools/Deferred.js.map +1 -1
  279. package/tools/EphemeralSessionStorage.js +46 -48
  280. package/tools/EphemeralSessionStorage.js.map +1 -1
  281. package/tools/Evt.js +14 -14
  282. package/tools/Evt.js.map +1 -1
  283. package/tools/StatefulEvt.js +5 -5
  284. package/tools/StatefulEvt.js.map +1 -1
  285. package/tools/ValueOrAsyncGetter.js.map +1 -1
  286. package/tools/asymmetricEncryption.js +81 -172
  287. package/tools/asymmetricEncryption.js.map +1 -1
  288. package/tools/base64.js +2 -2
  289. package/tools/base64.js.map +1 -1
  290. package/tools/createObjectThatThrowsIfAccessed.js +13 -61
  291. package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
  292. package/tools/decodeJwt.d.ts +25 -2
  293. package/tools/decodeJwt.js +61 -3
  294. package/tools/decodeJwt.js.map +1 -1
  295. package/tools/generateUrlSafeRandom.js +5 -30
  296. package/tools/generateUrlSafeRandom.js.map +1 -1
  297. package/tools/getDownlinkAndRtt.js +8 -30
  298. package/tools/getDownlinkAndRtt.js.map +1 -1
  299. package/tools/getIsOnline.js +3 -3
  300. package/tools/getIsOnline.js.map +1 -1
  301. package/tools/getIsValidRemoteJson.js +12 -59
  302. package/tools/getIsValidRemoteJson.js.map +1 -1
  303. package/tools/getPrUserInteraction.js +4 -4
  304. package/tools/getPrUserInteraction.js.map +1 -1
  305. package/tools/getUserEnvironmentInfo.js +17 -12
  306. package/tools/getUserEnvironmentInfo.js.map +1 -1
  307. package/tools/haveSharedParentDomain.js +5 -5
  308. package/tools/haveSharedParentDomain.js.map +1 -1
  309. package/tools/isDev.js +2 -2
  310. package/tools/isDev.js.map +1 -1
  311. package/tools/parseKeycloakIssuerUri.d.ts +2 -0
  312. package/tools/parseKeycloakIssuerUri.js +11 -42
  313. package/tools/parseKeycloakIssuerUri.js.map +1 -1
  314. package/tools/readExpirationTimeInJwt.js +4 -4
  315. package/tools/readExpirationTimeInJwt.js.map +1 -1
  316. package/tools/startCountdown.js +17 -65
  317. package/tools/startCountdown.js.map +1 -1
  318. package/tools/subscribeToUserInteraction.js +17 -66
  319. package/tools/subscribeToUserInteraction.js.map +1 -1
  320. package/tools/toFullyQualifiedUrl.js +7 -7
  321. package/tools/toFullyQualifiedUrl.js.map +1 -1
  322. package/tools/toHumanReadableDuration.js +13 -13
  323. package/tools/toHumanReadableDuration.js.map +1 -1
  324. package/tools/urlSearchParams.js +28 -50
  325. package/tools/urlSearchParams.js.map +1 -1
  326. package/tools/workerTimers.js +10 -10
  327. package/tools/workerTimers.js.map +1 -1
  328. package/vendor/frontend/oidc-client-ts.d.ts +1 -0
  329. package/vendor/frontend/oidc-client-ts.js +3686 -0
  330. package/vendor/frontend/tsafe.d.ts +1 -0
  331. package/vendor/frontend/tsafe.js +1 -1
  332. package/LICENSE +0 -21
  333. package/README.md +0 -185
  334. package/core/trustedFetch.d.ts +0 -2
  335. package/core/trustedFetch.js +0 -12
  336. package/core/trustedFetch.js.map +0 -1
  337. package/src/backend.ts +0 -391
  338. package/src/core/Oidc.ts +0 -141
  339. package/src/core/StateData.ts +0 -118
  340. package/src/core/configId.ts +0 -3
  341. package/src/core/loginSilent.ts +0 -206
  342. package/src/core/oidcClientTsUserToTokens.ts +0 -229
  343. package/src/core/persistedAuthState.ts +0 -122
  344. package/src/core/trustedFetch.ts +0 -9
  345. package/src/index.ts +0 -7
  346. package/src/mock/react.tsx +0 -11
  347. package/src/react/react.tsx +0 -460
  348. package/src/tools/Deferred.ts +0 -39
  349. package/src/tools/StatefulEvt.ts +0 -38
  350. package/src/tools/asymmetricEncryption.ts +0 -184
  351. package/src/tools/decodeJwt.ts +0 -2
  352. package/src/tools/getIsValidRemoteJson.ts +0 -18
  353. package/src/tools/getUserEnvironmentInfo.ts +0 -42
  354. package/src/tools/parseKeycloakIssuerUri.ts +0 -68
  355. package/src/vendor/backend/evt.ts +0 -2
  356. package/src/vendor/backend/jsonwebtoken.ts +0 -1
  357. package/src/vendor/backend/node-fetch.ts +0 -2
  358. package/src/vendor/backend/node-jose.ts +0 -1
  359. package/src/vendor/backend/tsafe.ts +0 -5
  360. package/src/vendor/backend/zod.ts +0 -1
  361. package/src/vendor/frontend/oidc-client-ts-and-jwt-decode.ts +0 -4
  362. package/vendor/frontend/oidc-client-ts-and-jwt-decode.d.ts +0 -3
  363. package/vendor/frontend/oidc-client-ts-and-jwt-decode.js +0 -3
  364. /package/{src/mock/index.ts → esm/mock/index.d.ts} +0 -0
  365. /package/{src/react/index.ts → esm/react/index.d.ts} +0 -0
  366. /package/{src/tools/ValueOrAsyncGetter.ts → esm/tools/ValueOrAsyncGetter.d.ts} +0 -0
  367. /package/{src/vendor/frontend/worker-timers.ts → esm/vendor/frontend/worker-timers.d.ts} +0 -0
@@ -1,53 +1,33 @@
1
1
  import { assert, is } from "../vendor/frontend/tsafe";
2
2
  import { Deferred } from "../tools/Deferred";
3
-
4
3
  const globalContext = {
5
4
  appInstanceId: Math.random().toString(36).slice(2)
6
5
  };
7
-
8
- type Message = {
9
- appInstanceId: string;
10
- configId: string;
11
- };
12
-
13
- function getChannelName(params: { sessionIdOrConfigId: string }) {
6
+ function getChannelName(params) {
14
7
  const { sessionIdOrConfigId } = params;
15
8
  return `oidc-spa:logout-propagation:${sessionIdOrConfigId}`;
16
9
  }
17
-
18
- export function notifyOtherTabsOfLogout(params: { configId: string; sessionId: string | undefined }) {
10
+ export function notifyOtherTabsOfLogout(params) {
19
11
  const { configId, sessionId } = params;
20
-
21
- const message: Message = {
12
+ const message = {
22
13
  configId,
23
14
  appInstanceId: globalContext.appInstanceId
24
15
  };
25
-
26
- new BroadcastChannel(getChannelName({ sessionIdOrConfigId: sessionId ?? configId })).postMessage(
27
- message
28
- );
16
+ new BroadcastChannel(getChannelName({ sessionIdOrConfigId: sessionId ?? configId })).postMessage(message);
29
17
  }
30
-
31
- export function getPrOtherTabLogout(params: { sessionId: string | undefined; configId: string }) {
18
+ export function getPrOtherTabLogout(params) {
32
19
  const { sessionId, configId } = params;
33
-
34
- const dOtherTabLogout = new Deferred<void>();
35
-
20
+ const dOtherTabLogout = new Deferred();
36
21
  const channel = new BroadcastChannel(getChannelName({ sessionIdOrConfigId: sessionId ?? configId }));
37
-
38
22
  channel.onmessage = ({ data: message }) => {
39
- assert(is<Message>(message));
40
-
23
+ assert(is(message));
41
24
  if (message.appInstanceId === globalContext.appInstanceId) {
42
25
  return;
43
26
  }
44
-
45
27
  channel.close();
46
-
47
28
  dOtherTabLogout.resolve();
48
29
  };
49
-
50
30
  const prOtherTabLogout = dOtherTabLogout.pr;
51
-
52
31
  return { prOtherTabLogout };
53
32
  }
33
+ //# sourceMappingURL=logoutPropagationToOtherTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logoutPropagationToOtherTabs.js","sourceRoot":"","sources":["../../../src/core/logoutPropagationToOtherTabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,aAAa,GAAG;IAClB,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACrD,CAAC;AAOF,SAAS,cAAc,CAAC,MAAuC;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IACvC,OAAO,+BAA+B,mBAAmB,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA2D;IAC/F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEvC,MAAM,OAAO,GAAY;QACrB,QAAQ;QACR,aAAa,EAAE,aAAa,CAAC,aAAa;KAC7C,CAAC;IAEF,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAC5F,OAAO,CACV,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA2D;IAC3F,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEvC,MAAM,eAAe,GAAG,IAAI,QAAQ,EAAQ,CAAC;IAE7C,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErG,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACtC,MAAM,CAAC,EAAE,CAAU,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,eAAe,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC;IAE5C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { User as OidcClientTsUser } from "../vendor/frontend/oidc-client-ts";
2
+ import type { Oidc } from "./Oidc";
3
+ export declare function oidcClientTsUserToTokens<DecodedIdToken extends Record<string, unknown>>(params: {
4
+ oidcClientTsUser: OidcClientTsUser;
5
+ decodedIdTokenSchema?: {
6
+ parse: (decodedIdToken_original: Oidc.Tokens.DecodedIdToken_base) => DecodedIdToken;
7
+ };
8
+ __unsafe_useIdTokenAsAccessToken: boolean;
9
+ decodedIdToken_previous: DecodedIdToken | undefined;
10
+ log: typeof console.log | undefined;
11
+ }): Oidc.Tokens<DecodedIdToken>;
@@ -0,0 +1,155 @@
1
+ import { assert, id } from "../vendor/frontend/tsafe";
2
+ import { readExpirationTimeInJwt } from "../tools/readExpirationTimeInJwt";
3
+ import { decodeJwt } from "../tools/decodeJwt";
4
+ export function oidcClientTsUserToTokens(params) {
5
+ const { oidcClientTsUser, decodedIdTokenSchema, __unsafe_useIdTokenAsAccessToken, decodedIdToken_previous, log } = params;
6
+ const isFirstInit = decodedIdToken_previous === undefined;
7
+ const accessToken = oidcClientTsUser.access_token;
8
+ const refreshToken = oidcClientTsUser.refresh_token;
9
+ const idToken = oidcClientTsUser.id_token;
10
+ assert(idToken !== undefined, "No id token provided by the oidc server");
11
+ const decodedIdToken_original = decodeJwt(idToken);
12
+ if (isFirstInit) {
13
+ log?.([
14
+ `Decoded ID token`,
15
+ decodedIdTokenSchema === undefined ? "" : " before `decodedIdTokenSchema.parse()`\n",
16
+ JSON.stringify(decodedIdToken_original, null, 2)
17
+ ].join(""));
18
+ }
19
+ const decodedIdToken = (() => {
20
+ let decodedIdToken;
21
+ if (decodedIdTokenSchema !== undefined) {
22
+ decodedIdToken = decodedIdTokenSchema.parse(decodedIdToken_original);
23
+ if (isFirstInit) {
24
+ log?.([
25
+ "Decoded ID token after `decodedIdTokenSchema.parse()`\n",
26
+ JSON.stringify(decodedIdToken, null, 2)
27
+ ].join(""));
28
+ }
29
+ }
30
+ else {
31
+ // @ts-expect-error
32
+ decodedIdToken = decodedIdToken_original;
33
+ }
34
+ if (decodedIdToken_previous !== undefined &&
35
+ JSON.stringify(decodedIdToken) === JSON.stringify(decodedIdToken_previous)) {
36
+ // NOTE: For stable ref, prevent re-render for component that would memoize
37
+ return decodedIdToken_previous;
38
+ }
39
+ return decodedIdToken;
40
+ })();
41
+ const issuedAtTime = (() => {
42
+ // NOTE: The id_token is always a JWT as per the protocol.
43
+ // We don't use Date.now() due to network latency.
44
+ const id_token_iat = (() => {
45
+ let iat;
46
+ try {
47
+ const iat_claimValue = decodedIdToken_original.iat;
48
+ assert(iat_claimValue === undefined || typeof iat_claimValue === "number");
49
+ iat = iat_claimValue;
50
+ }
51
+ catch {
52
+ iat = undefined;
53
+ }
54
+ if (iat === undefined) {
55
+ return undefined;
56
+ }
57
+ return iat;
58
+ })();
59
+ if (id_token_iat === undefined) {
60
+ return Date.now();
61
+ }
62
+ return id_token_iat * 1000;
63
+ })();
64
+ const tokens_common = {
65
+ ...(__unsafe_useIdTokenAsAccessToken
66
+ ? {
67
+ accessToken: idToken,
68
+ accessTokenExpirationTime: (() => {
69
+ const expirationTime = readExpirationTimeInJwt(idToken);
70
+ assert(expirationTime !== undefined, "Failed to get id token expiration time while trying to substitute the access token by the id token");
71
+ return expirationTime;
72
+ })()
73
+ }
74
+ : {
75
+ accessToken,
76
+ accessTokenExpirationTime: (() => {
77
+ read_from_jwt: {
78
+ const expirationTime = readExpirationTimeInJwt(accessToken);
79
+ if (expirationTime === undefined) {
80
+ break read_from_jwt;
81
+ }
82
+ return expirationTime;
83
+ }
84
+ read_from_token_response_expires_at: {
85
+ const { expires_at } = oidcClientTsUser.__oidc_spa_tokenResponse;
86
+ if (expires_at === undefined) {
87
+ break read_from_token_response_expires_at;
88
+ }
89
+ assert(typeof expires_at === "number", "2033392");
90
+ return expires_at * 1000;
91
+ }
92
+ read_from_token_response_expires_in: {
93
+ const { expires_in } = oidcClientTsUser.__oidc_spa_tokenResponse;
94
+ if (expires_in === undefined) {
95
+ break read_from_token_response_expires_in;
96
+ }
97
+ assert(typeof expires_in === "number", "203333425");
98
+ return issuedAtTime + expires_in * 1000;
99
+ }
100
+ assert(false, "Failed to get access token expiration time");
101
+ })()
102
+ }),
103
+ idToken,
104
+ decodedIdToken,
105
+ decodedIdToken_original,
106
+ issuedAtTime
107
+ };
108
+ const tokens = refreshToken === undefined
109
+ ? id({
110
+ ...tokens_common,
111
+ hasRefreshToken: false
112
+ })
113
+ : id({
114
+ ...tokens_common,
115
+ hasRefreshToken: true,
116
+ refreshToken,
117
+ refreshTokenExpirationTime: (() => {
118
+ read_from_token_response_expires_at: {
119
+ const { refresh_expires_at } = oidcClientTsUser.__oidc_spa_tokenResponse;
120
+ if (refresh_expires_at === undefined) {
121
+ break read_from_token_response_expires_at;
122
+ }
123
+ assert(typeof refresh_expires_at === "number", "2033392");
124
+ return refresh_expires_at * 1000;
125
+ }
126
+ read_from_token_response_expires_in: {
127
+ const { refresh_expires_in } = oidcClientTsUser.__oidc_spa_tokenResponse;
128
+ if (refresh_expires_in === undefined) {
129
+ break read_from_token_response_expires_in;
130
+ }
131
+ assert(typeof refresh_expires_in === "number", "2033425330");
132
+ return issuedAtTime + refresh_expires_in * 1000;
133
+ }
134
+ read_from_jwt: {
135
+ const expirationTime = readExpirationTimeInJwt(refreshToken);
136
+ if (expirationTime === undefined) {
137
+ break read_from_jwt;
138
+ }
139
+ return expirationTime;
140
+ }
141
+ return undefined;
142
+ })()
143
+ });
144
+ if (isFirstInit &&
145
+ tokens.hasRefreshToken &&
146
+ tokens.refreshTokenExpirationTime !== undefined &&
147
+ tokens.refreshTokenExpirationTime < tokens.accessTokenExpirationTime) {
148
+ console.warn([
149
+ "The OIDC refresh token expirationTime is shorter than the one of the access token.",
150
+ "This is very unusual and probably a misconfiguration."
151
+ ].join(" "));
152
+ }
153
+ return tokens;
154
+ }
155
+ //# sourceMappingURL=oidcClientTsUserToTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidcClientTsUserToTokens.js","sourceRoot":"","sources":["../../../src/core/oidcClientTsUserToTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function startLoginOrRefreshProcess(): Promise<{
2
+ completeLoginOrRefreshProcess: () => void;
3
+ }>;
4
+ export declare function waitForAllOtherOngoingLoginOrRefreshProcessesToComplete(params: {
5
+ prUnlock: Promise<void>;
6
+ }): Promise<void>;
@@ -1,47 +1,29 @@
1
1
  import { Deferred } from "../tools/Deferred";
2
2
  import { assert, id } from "../vendor/frontend/tsafe";
3
-
4
3
  const globalContext = {
5
- prDone_arr: id<Promise<void>[]>([]),
6
- prUnlock: id<Promise<void>>(Promise.resolve())
4
+ prDone_arr: id([]),
5
+ prUnlock: id(Promise.resolve())
7
6
  };
8
-
9
- export async function startLoginOrRefreshProcess(): Promise<{
10
- completeLoginOrRefreshProcess: () => void;
11
- }> {
7
+ export async function startLoginOrRefreshProcess() {
12
8
  await globalContext.prUnlock;
13
-
14
- const dDone = new Deferred<void>();
15
-
9
+ const dDone = new Deferred();
16
10
  const { prDone_arr } = globalContext;
17
-
18
11
  prDone_arr.push(dDone.pr);
19
-
20
12
  function completeLoginOrRefreshProcess() {
21
13
  const index = prDone_arr.indexOf(dDone.pr);
22
-
23
14
  assert(index !== -1, "104044");
24
-
25
15
  prDone_arr.splice(index, 1);
26
-
27
16
  dDone.resolve();
28
17
  }
29
-
30
18
  return { completeLoginOrRefreshProcess };
31
19
  }
32
-
33
- export async function waitForAllOtherOngoingLoginOrRefreshProcessesToComplete(params: {
34
- prUnlock: Promise<void>;
35
- }): Promise<void> {
20
+ export async function waitForAllOtherOngoingLoginOrRefreshProcessesToComplete(params) {
36
21
  const { prUnlock } = params;
37
-
38
22
  const prUnlock_current = globalContext.prUnlock;
39
-
40
23
  globalContext.prUnlock = (async () => {
41
24
  await prUnlock_current;
42
-
43
25
  await prUnlock;
44
26
  })();
45
-
46
27
  await Promise.all(globalContext.prDone_arr);
47
28
  }
29
+ //# sourceMappingURL=ongoingLoginOrRefreshProcesses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ongoingLoginOrRefreshProcesses.js","sourceRoot":"","sources":["../../../src/core/ongoingLoginOrRefreshProcesses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,aAAa,GAAG;IAClB,UAAU,EAAE,EAAE,CAAkB,EAAE,CAAC;IACnC,QAAQ,EAAE,EAAE,CAAgB,OAAO,CAAC,OAAO,EAAE,CAAC;CACjD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAG5C,MAAM,aAAa,CAAC,QAAQ,CAAC;IAE7B,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAQ,CAAC;IAEnC,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAErC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE1B,SAAS,6BAA6B;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE3C,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAE/B,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE5B,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,6BAA6B,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uDAAuD,CAAC,MAE7E;IACG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC;IAEhD,aAAa,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QACjC,MAAM,gBAAgB,CAAC;QAEvB,MAAM,QAAQ,CAAC;IACnB,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,28 @@
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
+ }
15
+ export declare function persistAuthState(params: {
16
+ configId: string;
17
+ state: {
18
+ stateDescription: "logged in";
19
+ idleSessionLifetimeInSeconds: number | undefined;
20
+ refreshTokenExpirationTime: number | undefined;
21
+ } | {
22
+ stateDescription: "explicitly logged out";
23
+ } | undefined;
24
+ }): void;
25
+ export declare function getPersistedAuthState(params: {
26
+ configId: string;
27
+ }): PersistedAuthState["stateDescription"] | undefined;
28
+ export {};
@@ -0,0 +1,64 @@
1
+ import { typeGuard, id } from "../vendor/frontend/tsafe";
2
+ function getKey(params) {
3
+ const { configId } = params;
4
+ return `oidc-spa:auth-state:${configId}`;
5
+ }
6
+ export function persistAuthState(params) {
7
+ const { configId, state } = params;
8
+ const key = getKey({ configId });
9
+ if (state === undefined) {
10
+ localStorage.removeItem(key);
11
+ return;
12
+ }
13
+ localStorage.setItem(key, JSON.stringify(id((() => {
14
+ switch (state.stateDescription) {
15
+ case "logged in":
16
+ return id({
17
+ __brand: "PersistedAuthState-v1",
18
+ stateDescription: "logged in",
19
+ untilTime: (() => {
20
+ const { idleSessionLifetimeInSeconds, refreshTokenExpirationTime } = state;
21
+ if (idleSessionLifetimeInSeconds !== undefined) {
22
+ return Date.now() + idleSessionLifetimeInSeconds * 1000;
23
+ }
24
+ return refreshTokenExpirationTime;
25
+ })()
26
+ });
27
+ case "explicitly logged out":
28
+ return id({
29
+ __brand: "PersistedAuthState-v1",
30
+ stateDescription: "explicitly logged out"
31
+ });
32
+ }
33
+ })())));
34
+ }
35
+ export function getPersistedAuthState(params) {
36
+ const { configId } = params;
37
+ const key = getKey({ configId });
38
+ const value = localStorage.getItem(key);
39
+ if (value === null) {
40
+ return undefined;
41
+ }
42
+ let state;
43
+ try {
44
+ state = JSON.parse(value);
45
+ }
46
+ catch {
47
+ localStorage.removeItem(key);
48
+ return undefined;
49
+ }
50
+ if (!typeGuard(state, state instanceof Object &&
51
+ "__brand" in state &&
52
+ state.__brand === id("PersistedAuthState-v1"))) {
53
+ localStorage.removeItem(key);
54
+ return undefined;
55
+ }
56
+ if (state.stateDescription === "logged in") {
57
+ if (state.untilTime !== undefined && state.untilTime <= Date.now()) {
58
+ localStorage.removeItem(key);
59
+ return undefined;
60
+ }
61
+ }
62
+ return state.stateDescription;
63
+ }
64
+ //# sourceMappingURL=persistedAuthState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistedAuthState.js","sourceRoot":"","sources":["../../../src/core/persistedAuthState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEzD,SAAS,MAAM,CAAC,MAA4B;IACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,OAAO,uBAAuB,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAkBD,MAAM,UAAU,gBAAgB,CAAC,MAYhC;IACG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,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,EAAE,CACE,CAAC,GAAG,EAAE;QACF,QAAQ,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC7B,KAAK,WAAW;gBACZ,OAAO,EAAE,CAA8B;oBACnC,OAAO,EAAE,uBAAuB;oBAChC,gBAAgB,EAAE,WAAW;oBAC7B,SAAS,EAAE,CAAC,GAAG,EAAE;wBACb,MAAM,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,GAC9D,KAAK,CAAC;wBAEV,IAAI,4BAA4B,KAAK,SAAS,EAAE,CAAC;4BAC7C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,4BAA4B,GAAG,IAAI,CAAC;wBAC5D,CAAC;wBAED,OAAO,0BAA0B,CAAC;oBACtC,CAAC,CAAC,EAAE;iBACP,CAAC,CAAC;YACP,KAAK,uBAAuB;gBACxB,OAAO,EAAE,CAAyC;oBAC9C,OAAO,EAAE,uBAAuB;oBAChC,gBAAgB,EAAE,uBAAuB;iBAC5C,CAAC,CAAC;QACX,CAAC;IACL,CAAC,CAAC,EAAE,CACP,CACJ,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAErC;IACG,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjC,MAAM,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,MAAM,CAAC;QACL,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IACI,CAAC,SAAS,CACN,KAAK,EACL,KAAK,YAAY,MAAM;QACnB,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,OAAO,KAAK,EAAE,CAAgC,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"}
@@ -0,0 +1,7 @@
1
+ export declare function oidcEarlyInit(params: {
2
+ freezeFetch: boolean;
3
+ freezeXMLHttpRequest: boolean;
4
+ freezeWebSocket?: boolean;
5
+ }): {
6
+ shouldLoadApp: boolean;
7
+ };
@@ -1,31 +1,15 @@
1
- import {
2
- handleOidcCallback,
3
- moveRedirectAuthResponseFromSessionStorageToMemory
4
- } from "./core/handleOidcCallback";
1
+ import { handleOidcCallback, moveRedirectAuthResponseFromSessionStorageToMemory } from "./core/handleOidcCallback";
5
2
  import { preventSessionStorageSetItemOfPublicKeyByThirdParty } from "./core/iframeMessageProtection";
6
-
7
- export function oidcEarlyInit(params: {
8
- freezeFetch: boolean;
9
- freezeXMLHttpRequest: boolean;
10
- // NOTE: Made optional just to avoid breaking change.
11
- // Will be made mandatory next major.
12
- freezeWebSocket?: boolean;
13
- }) {
3
+ export function oidcEarlyInit(params) {
14
4
  const { freezeFetch, freezeXMLHttpRequest, freezeWebSocket = false } = params ?? {};
15
-
16
5
  const { isHandled } = handleOidcCallback();
17
-
18
6
  const shouldLoadApp = !isHandled;
19
-
20
7
  if (shouldLoadApp) {
21
8
  moveRedirectAuthResponseFromSessionStorageToMemory();
22
-
23
9
  if (freezeXMLHttpRequest) {
24
10
  const XMLHttpRequest_trusted = globalThis.XMLHttpRequest;
25
-
26
11
  Object.freeze(XMLHttpRequest_trusted.prototype);
27
12
  Object.freeze(XMLHttpRequest_trusted);
28
-
29
13
  Object.defineProperty(globalThis, "XMLHttpRequest", {
30
14
  configurable: false,
31
15
  writable: false,
@@ -33,13 +17,10 @@ export function oidcEarlyInit(params: {
33
17
  value: XMLHttpRequest_trusted
34
18
  });
35
19
  }
36
-
37
20
  if (freezeFetch) {
38
21
  const fetch_trusted = globalThis.fetch;
39
-
40
22
  Object.freeze(fetch_trusted.prototype);
41
23
  Object.freeze(fetch_trusted);
42
-
43
24
  Object.defineProperty(globalThis, "fetch", {
44
25
  configurable: false,
45
26
  writable: false,
@@ -47,13 +28,10 @@ export function oidcEarlyInit(params: {
47
28
  value: fetch_trusted
48
29
  });
49
30
  }
50
-
51
31
  if (freezeWebSocket) {
52
32
  const WebSocket_trusted = globalThis.WebSocket;
53
-
54
33
  Object.freeze(WebSocket_trusted.prototype);
55
34
  Object.freeze(WebSocket_trusted);
56
-
57
35
  Object.defineProperty(globalThis, "WebSocket", {
58
36
  configurable: false,
59
37
  writable: false,
@@ -61,9 +39,8 @@ export function oidcEarlyInit(params: {
61
39
  value: WebSocket_trusted
62
40
  });
63
41
  }
64
-
65
42
  preventSessionStorageSetItemOfPublicKeyByThirdParty();
66
43
  }
67
-
68
44
  return { shouldLoadApp };
69
45
  }
46
+ //# sourceMappingURL=entrypoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../../src/entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,kDAAkD,EACrD,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mDAAmD,EAAE,MAAM,gCAAgC,CAAC;AAErG,MAAM,UAAU,aAAa,CAAC,MAM7B;IACG,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAEpF,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAE3C,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC;IAEjC,IAAI,aAAa,EAAE,CAAC;QAChB,kDAAkD,EAAE,CAAC;QAErD,IAAI,oBAAoB,EAAE,CAAC;YACvB,MAAM,sBAAsB,GAAG,UAAU,CAAC,cAAc,CAAC;YAEzD,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAEtC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE;gBAChD,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,sBAAsB;aAChC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;YAEvC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE;gBACvC,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,aAAa;aACvB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC;YAE/C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE;gBAC3C,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,iBAAiB;aAC3B,CAAC,CAAC;QACP,CAAC;QAED,mDAAmD,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAC7B,CAAC"}
package/esm/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { type Oidc, OidcInitializationError, type ParamsOfCreateOidc, createOidc } from "./core";
package/esm/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { OidcInitializationError, createOidc } from "./core";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,uBAAuB,EAA2B,UAAU,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { isKeycloak } from "./isKeycloak";
2
+ export type { KeycloakIssuerUriParsed } from "./keycloakIssuerUriParsed";
3
+ export { type KeycloakUtils, KeycloakProfile, KeycloakUserInfo, createKeycloakUtils } from "./keycloakUtils";
@@ -0,0 +1,3 @@
1
+ export { isKeycloak } from "./isKeycloak";
2
+ export { createKeycloakUtils } from "./keycloakUtils";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/keycloak/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAIH,mBAAmB,EACtB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function isKeycloak(params: {
2
+ issuerUri: string;
3
+ }): boolean;
@@ -0,0 +1,17 @@
1
+ export function isKeycloak(params) {
2
+ const { issuerUri } = params;
3
+ const url = new URL(issuerUri.replace(/\/$/, ""));
4
+ const split = url.pathname.split("/realms/");
5
+ if (split.length !== 2) {
6
+ return false;
7
+ }
8
+ const [, realm] = split;
9
+ if (realm === "") {
10
+ return false;
11
+ }
12
+ if (realm.includes("/")) {
13
+ return false;
14
+ }
15
+ return true;
16
+ }
17
+ //# sourceMappingURL=isKeycloak.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isKeycloak.js","sourceRoot":"","sources":["../../../src/keycloak/isKeycloak.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,MAA6B;IACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAExB,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}