oidc-spa 7.2.0-rc.1 → 7.2.0-rc.3

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 (285) hide show
  1. package/README.md +2 -2
  2. package/backend.js.map +1 -1
  3. package/core/AuthResponse.js.map +1 -1
  4. package/core/Oidc.js.map +1 -1
  5. package/core/OidcInitializationError.d.ts +0 -13
  6. package/core/OidcInitializationError.js +0 -243
  7. package/core/OidcInitializationError.js.map +1 -1
  8. package/core/OidcMetadata.js.map +1 -1
  9. package/core/StateData.js.map +1 -1
  10. package/core/configId.js.map +1 -1
  11. package/core/createOidc.js +38 -5
  12. package/core/createOidc.js.map +1 -1
  13. package/core/diagnostic.d.ts +14 -0
  14. package/core/diagnostic.js +214 -0
  15. package/core/diagnostic.js.map +1 -0
  16. package/core/evtIsUserActive.js.map +1 -1
  17. package/core/handleOidcCallback.js.map +1 -1
  18. package/core/iframeMessageProtection.js.map +1 -1
  19. package/core/index.js.map +1 -1
  20. package/core/initialLocationHref.js.map +1 -1
  21. package/core/isNewBrowserSession.js.map +1 -1
  22. package/core/loginOrGoToAuthServer.js.map +1 -1
  23. package/core/loginPropagationToOtherTabs.js.map +1 -1
  24. package/core/loginSilent.js.map +1 -1
  25. package/core/logoutPropagationToOtherTabs.js.map +1 -1
  26. package/core/oidcClientTsUserToTokens.js.map +1 -1
  27. package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
  28. package/core/persistedAuthState.js.map +1 -1
  29. package/entrypoint.js.map +1 -1
  30. package/esm/core/AuthResponse.d.ts +5 -0
  31. package/{src/core/AuthResponse.ts → esm/core/AuthResponse.js} +2 -10
  32. package/esm/core/AuthResponse.js.map +1 -0
  33. package/esm/core/Oidc.d.ts +126 -0
  34. package/esm/core/Oidc.js +2 -0
  35. package/esm/core/Oidc.js.map +1 -0
  36. package/esm/core/OidcInitializationError.d.ts +7 -0
  37. package/esm/core/OidcInitializationError.js +17 -0
  38. package/esm/core/OidcInitializationError.js.map +1 -0
  39. package/{src/core/OidcMetadata.ts → esm/core/OidcMetadata.d.ts} +0 -5
  40. package/esm/core/OidcMetadata.js +3 -0
  41. package/esm/core/OidcMetadata.js.map +1 -0
  42. package/esm/core/StateData.d.ts +42 -0
  43. package/esm/core/StateData.js +55 -0
  44. package/esm/core/StateData.js.map +1 -0
  45. package/esm/core/configId.d.ts +4 -0
  46. package/esm/core/configId.js +4 -0
  47. package/esm/core/configId.js.map +1 -0
  48. package/esm/core/createOidc.d.ts +132 -0
  49. package/{src/core/createOidc.ts → esm/core/createOidc.js} +269 -806
  50. package/esm/core/createOidc.js.map +1 -0
  51. package/esm/core/diagnostic.d.ts +14 -0
  52. package/{src/core/OidcInitializationError.ts → esm/core/diagnostic.js} +32 -109
  53. package/esm/core/diagnostic.js.map +1 -0
  54. package/esm/core/evtIsUserActive.d.ts +5 -0
  55. package/{src/core/evtIsUserActive.ts → esm/core/evtIsUserActive.js} +14 -46
  56. package/esm/core/evtIsUserActive.js.map +1 -0
  57. package/esm/core/handleOidcCallback.d.ts +13 -0
  58. package/{src/core/handleOidcCallback.ts → esm/core/handleOidcCallback.js} +25 -121
  59. package/esm/core/handleOidcCallback.js.map +1 -0
  60. package/esm/core/iframeMessageProtection.d.ts +20 -0
  61. package/{src/core/iframeMessageProtection.ts → esm/core/iframeMessageProtection.js} +10 -45
  62. package/esm/core/iframeMessageProtection.js.map +1 -0
  63. package/esm/core/index.js +4 -0
  64. package/esm/core/index.js.map +1 -0
  65. package/esm/core/initialLocationHref.d.ts +1 -0
  66. package/{src/core/initialLocationHref.ts → esm/core/initialLocationHref.js} +1 -1
  67. package/esm/core/initialLocationHref.js.map +1 -0
  68. package/esm/core/isNewBrowserSession.d.ts +9 -0
  69. package/{src/core/isNewBrowserSession.ts → esm/core/isNewBrowserSession.js} +3 -15
  70. package/esm/core/isNewBrowserSession.js.map +1 -0
  71. package/esm/core/loginOrGoToAuthServer.d.ts +40 -0
  72. package/{src/core/loginOrGoToAuthServer.ts → esm/core/loginOrGoToAuthServer.js} +60 -168
  73. package/esm/core/loginOrGoToAuthServer.js.map +1 -0
  74. package/esm/core/loginPropagationToOtherTabs.d.ts +8 -0
  75. package/{src/core/loginPropagationToOtherTabs.ts → esm/core/loginPropagationToOtherTabs.js} +7 -25
  76. package/esm/core/loginPropagationToOtherTabs.js.map +1 -0
  77. package/esm/core/loginSilent.d.ts +28 -0
  78. package/esm/core/loginSilent.js +125 -0
  79. package/esm/core/loginSilent.js.map +1 -0
  80. package/esm/core/logoutPropagationToOtherTabs.d.ts +10 -0
  81. package/{src/core/logoutPropagationToOtherTabs.ts → esm/core/logoutPropagationToOtherTabs.js} +8 -28
  82. package/esm/core/logoutPropagationToOtherTabs.js.map +1 -0
  83. package/esm/core/oidcClientTsUserToTokens.d.ts +11 -0
  84. package/esm/core/oidcClientTsUserToTokens.js +155 -0
  85. package/esm/core/oidcClientTsUserToTokens.js.map +1 -0
  86. package/esm/core/ongoingLoginOrRefreshProcesses.d.ts +6 -0
  87. package/{src/core/ongoingLoginOrRefreshProcesses.ts → esm/core/ongoingLoginOrRefreshProcesses.js} +6 -24
  88. package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -0
  89. package/esm/core/persistedAuthState.d.ts +28 -0
  90. package/esm/core/persistedAuthState.js +64 -0
  91. package/esm/core/persistedAuthState.js.map +1 -0
  92. package/esm/entrypoint.d.ts +7 -0
  93. package/{src/entrypoint.ts → esm/entrypoint.js} +3 -26
  94. package/esm/entrypoint.js.map +1 -0
  95. package/esm/index.js +2 -0
  96. package/esm/index.js.map +1 -0
  97. package/esm/keycloak/index.d.ts +3 -0
  98. package/esm/keycloak/index.js +3 -0
  99. package/esm/keycloak/index.js.map +1 -0
  100. package/esm/keycloak/isKeycloak.d.ts +3 -0
  101. package/{src/keycloak/isKeycloak.ts → esm/keycloak/isKeycloak.js} +2 -8
  102. package/esm/keycloak/isKeycloak.js.map +1 -0
  103. package/esm/keycloak/keycloak-js/Keycloak.d.ts +284 -0
  104. package/{src/keycloak/keycloak-js/Keycloak.ts → esm/keycloak/keycloak-js/Keycloak.js} +116 -439
  105. package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -0
  106. package/esm/keycloak/keycloak-js/index.js +2 -0
  107. package/esm/keycloak/keycloak-js/index.js.map +1 -0
  108. package/{src/keycloak/keycloak-js/types.ts → esm/keycloak/keycloak-js/types.d.ts} +3 -84
  109. package/esm/keycloak/keycloak-js/types.js +2 -0
  110. package/esm/keycloak/keycloak-js/types.js.map +1 -0
  111. package/esm/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
  112. package/{src/keycloak/keycloakIssuerUriParsed.ts → esm/keycloak/keycloakIssuerUriParsed.js} +2 -15
  113. package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -0
  114. package/esm/keycloak/keycloakUtils.d.ts +37 -0
  115. package/esm/keycloak/keycloakUtils.js +44 -0
  116. package/esm/keycloak/keycloakUtils.js.map +1 -0
  117. package/esm/keycloak-js.js +2 -0
  118. package/esm/keycloak-js.js.map +1 -0
  119. package/esm/mock/index.js +2 -0
  120. package/esm/mock/index.js.map +1 -0
  121. package/esm/mock/oidc.d.ts +19 -0
  122. package/{src/mock/oidc.ts → esm/mock/oidc.js} +28 -88
  123. package/esm/mock/oidc.js.map +1 -0
  124. package/esm/mock/react.d.ts +58 -0
  125. package/esm/mock/react.js +7 -0
  126. package/esm/mock/react.js.map +1 -0
  127. package/esm/react/index.js +2 -0
  128. package/esm/react/index.js.map +1 -0
  129. package/esm/react/react.d.ts +102 -0
  130. package/esm/react/react.js +221 -0
  131. package/esm/react/react.js.map +1 -0
  132. package/esm/tools/Deferred.d.ts +13 -0
  133. package/esm/tools/Deferred.js +19 -0
  134. package/esm/tools/Deferred.js.map +1 -0
  135. package/esm/tools/EphemeralSessionStorage.d.ts +12 -0
  136. package/{src/tools/EphemeralSessionStorage.ts → esm/tools/EphemeralSessionStorage.js} +30 -112
  137. package/esm/tools/EphemeralSessionStorage.js.map +1 -0
  138. package/esm/tools/Evt.d.ts +11 -0
  139. package/{src/tools/Evt.ts → esm/tools/Evt.js} +7 -25
  140. package/esm/tools/Evt.js.map +1 -0
  141. package/esm/tools/StatefulEvt.d.ts +12 -0
  142. package/esm/tools/StatefulEvt.js +21 -0
  143. package/esm/tools/StatefulEvt.js.map +1 -0
  144. package/esm/tools/ValueOrAsyncGetter.js +2 -0
  145. package/esm/tools/ValueOrAsyncGetter.js.map +1 -0
  146. package/esm/tools/asymmetricEncryption.d.ts +18 -0
  147. package/esm/tools/asymmetricEncryption.js +85 -0
  148. package/esm/tools/asymmetricEncryption.js.map +1 -0
  149. package/esm/tools/base64.d.ts +2 -0
  150. package/{src/tools/base64.ts → esm/tools/base64.js} +3 -3
  151. package/esm/tools/base64.js.map +1 -0
  152. package/esm/tools/createObjectThatThrowsIfAccessed.d.ts +8 -0
  153. package/{src/tools/createObjectThatThrowsIfAccessed.ts → esm/tools/createObjectThatThrowsIfAccessed.js} +7 -18
  154. package/esm/tools/createObjectThatThrowsIfAccessed.js.map +1 -0
  155. package/esm/tools/decodeJwt.d.ts +25 -0
  156. package/esm/tools/decodeJwt.js +60 -0
  157. package/esm/tools/decodeJwt.js.map +1 -0
  158. package/esm/tools/generateUrlSafeRandom.d.ts +3 -0
  159. package/{src/tools/generateUrlSafeRandom.ts → esm/tools/generateUrlSafeRandom.js} +5 -8
  160. package/esm/tools/generateUrlSafeRandom.js.map +1 -0
  161. package/esm/tools/getDownlinkAndRtt.d.ts +4 -0
  162. package/{src/tools/getDownlinkAndRtt.ts → esm/tools/getDownlinkAndRtt.js} +6 -10
  163. package/esm/tools/getDownlinkAndRtt.js.map +1 -0
  164. package/esm/tools/getIsOnline.d.ts +7 -0
  165. package/{src/tools/getIsOnline.ts → esm/tools/getIsOnline.js} +3 -9
  166. package/esm/tools/getIsOnline.js.map +1 -0
  167. package/esm/tools/getIsValidRemoteJson.d.ts +1 -0
  168. package/esm/tools/getIsValidRemoteJson.js +15 -0
  169. package/esm/tools/getIsValidRemoteJson.js.map +1 -0
  170. package/esm/tools/getPrUserInteraction.d.ts +4 -0
  171. package/{src/tools/getPrUserInteraction.ts → esm/tools/getPrUserInteraction.js} +2 -6
  172. package/esm/tools/getPrUserInteraction.js.map +1 -0
  173. package/esm/tools/getUserEnvironmentInfo.d.ts +1 -0
  174. package/esm/tools/getUserEnvironmentInfo.js +50 -0
  175. package/esm/tools/getUserEnvironmentInfo.js.map +1 -0
  176. package/esm/tools/haveSharedParentDomain.d.ts +4 -0
  177. package/{src/tools/haveSharedParentDomain.ts → esm/tools/haveSharedParentDomain.js} +3 -5
  178. package/esm/tools/haveSharedParentDomain.js.map +1 -0
  179. package/esm/tools/isDev.d.ts +1 -0
  180. package/{src/tools/isDev.ts → esm/tools/isDev.js} +5 -12
  181. package/esm/tools/isDev.js.map +1 -0
  182. package/esm/tools/parseKeycloakIssuerUri.d.ts +30 -0
  183. package/{src/tools/parseKeycloakIssuerUri.ts → esm/tools/parseKeycloakIssuerUri.js} +2 -18
  184. package/esm/tools/parseKeycloakIssuerUri.js.map +1 -0
  185. package/esm/tools/readExpirationTimeInJwt.d.ts +1 -0
  186. package/{src/tools/readExpirationTimeInJwt.ts → esm/tools/readExpirationTimeInJwt.js} +6 -7
  187. package/esm/tools/readExpirationTimeInJwt.js.map +1 -0
  188. package/esm/tools/startCountdown.d.ts +11 -0
  189. package/{src/tools/startCountdown.ts → esm/tools/startCountdown.js} +6 -17
  190. package/esm/tools/startCountdown.js.map +1 -0
  191. package/esm/tools/subscribeToUserInteraction.d.ts +6 -0
  192. package/{src/tools/subscribeToUserInteraction.ts → esm/tools/subscribeToUserInteraction.js} +4 -13
  193. package/esm/tools/subscribeToUserInteraction.js.map +1 -0
  194. package/esm/tools/toFullyQualifiedUrl.d.ts +10 -0
  195. package/{src/tools/toFullyQualifiedUrl.ts → esm/tools/toFullyQualifiedUrl.js} +7 -25
  196. package/esm/tools/toFullyQualifiedUrl.js.map +1 -0
  197. package/esm/tools/toHumanReadableDuration.d.ts +1 -0
  198. package/{src/tools/toHumanReadableDuration.ts → esm/tools/toHumanReadableDuration.js} +8 -5
  199. package/esm/tools/toHumanReadableDuration.js.map +1 -0
  200. package/esm/tools/urlSearchParams.d.ts +19 -0
  201. package/{src/tools/urlSearchParams.ts → esm/tools/urlSearchParams.js} +24 -70
  202. package/esm/tools/urlSearchParams.js.map +1 -0
  203. package/esm/tools/workerTimers.d.ts +5 -0
  204. package/{src/tools/workerTimers.ts → esm/tools/workerTimers.js} +7 -27
  205. package/esm/tools/workerTimers.js.map +1 -0
  206. package/esm/vendor/frontend/oidc-client-ts.js +3636 -0
  207. package/{src/vendor/frontend/tsafe.ts → esm/vendor/frontend/tsafe.d.ts} +0 -1
  208. package/esm/vendor/frontend/tsafe.js +1 -0
  209. package/esm/vendor/frontend/worker-timers.js +1 -0
  210. package/index.js.map +1 -1
  211. package/keycloak/index.js.map +1 -1
  212. package/keycloak/isKeycloak.js.map +1 -1
  213. package/keycloak/keycloak-js/Keycloak.js.map +1 -1
  214. package/keycloak/keycloak-js/index.js.map +1 -1
  215. package/keycloak/keycloak-js/types.js.map +1 -1
  216. package/keycloak/keycloakIssuerUriParsed.js.map +1 -1
  217. package/keycloak/keycloakUtils.js.map +1 -1
  218. package/keycloak-js.js.map +1 -1
  219. package/mock/index.js.map +1 -1
  220. package/mock/oidc.js.map +1 -1
  221. package/mock/react.js.map +1 -1
  222. package/package.json +75 -328
  223. package/react/index.js.map +1 -1
  224. package/react/react.js.map +1 -1
  225. package/tools/Deferred.d.ts +0 -1
  226. package/tools/Deferred.js +0 -4
  227. package/tools/Deferred.js.map +1 -1
  228. package/tools/EphemeralSessionStorage.js.map +1 -1
  229. package/tools/Evt.js.map +1 -1
  230. package/tools/StatefulEvt.js.map +1 -1
  231. package/tools/ValueOrAsyncGetter.js.map +1 -1
  232. package/tools/asymmetricEncryption.js.map +1 -1
  233. package/tools/base64.js.map +1 -1
  234. package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
  235. package/tools/decodeJwt.js.map +1 -1
  236. package/tools/generateUrlSafeRandom.js.map +1 -1
  237. package/tools/getDownlinkAndRtt.js.map +1 -1
  238. package/tools/getIsOnline.js.map +1 -1
  239. package/tools/getIsValidRemoteJson.js.map +1 -1
  240. package/tools/getPrUserInteraction.js.map +1 -1
  241. package/tools/getUserEnvironmentInfo.js.map +1 -1
  242. package/tools/haveSharedParentDomain.js.map +1 -1
  243. package/tools/isDev.js.map +1 -1
  244. package/tools/parseKeycloakIssuerUri.js.map +1 -1
  245. package/tools/readExpirationTimeInJwt.js.map +1 -1
  246. package/tools/startCountdown.js.map +1 -1
  247. package/tools/subscribeToUserInteraction.js.map +1 -1
  248. package/tools/toFullyQualifiedUrl.js.map +1 -1
  249. package/tools/toHumanReadableDuration.js.map +1 -1
  250. package/tools/urlSearchParams.js.map +1 -1
  251. package/tools/workerTimers.js.map +1 -1
  252. package/vendor/frontend/tsafe.d.ts +0 -1
  253. package/vendor/frontend/tsafe.js +1 -1
  254. package/src/backend.ts +0 -391
  255. package/src/core/Oidc.ts +0 -140
  256. package/src/core/StateData.ts +0 -118
  257. package/src/core/configId.ts +0 -3
  258. package/src/core/loginSilent.ts +0 -209
  259. package/src/core/oidcClientTsUserToTokens.ts +0 -229
  260. package/src/core/persistedAuthState.ts +0 -122
  261. package/src/keycloak/index.ts +0 -8
  262. package/src/keycloak/keycloakUtils.ts +0 -90
  263. package/src/mock/react.tsx +0 -11
  264. package/src/react/react.tsx +0 -476
  265. package/src/tools/Deferred.ts +0 -39
  266. package/src/tools/StatefulEvt.ts +0 -38
  267. package/src/tools/asymmetricEncryption.ts +0 -184
  268. package/src/tools/decodeJwt.ts +0 -95
  269. package/src/tools/getIsValidRemoteJson.ts +0 -18
  270. package/src/tools/getUserEnvironmentInfo.ts +0 -42
  271. package/src/vendor/backend/evt.ts +0 -2
  272. package/src/vendor/backend/jsonwebtoken.ts +0 -1
  273. package/src/vendor/backend/node-fetch.ts +0 -2
  274. package/src/vendor/backend/node-jose.ts +0 -1
  275. package/src/vendor/backend/tsafe.ts +0 -5
  276. package/src/vendor/backend/zod.ts +0 -1
  277. /package/{src/core/index.ts → esm/core/index.d.ts} +0 -0
  278. /package/{src/index.ts → esm/index.d.ts} +0 -0
  279. /package/{src/keycloak/keycloak-js/index.ts → esm/keycloak/keycloak-js/index.d.ts} +0 -0
  280. /package/{src/keycloak-js.ts → esm/keycloak-js.d.ts} +0 -0
  281. /package/{src/mock/index.ts → esm/mock/index.d.ts} +0 -0
  282. /package/{src/react/index.ts → esm/react/index.d.ts} +0 -0
  283. /package/{src/tools/ValueOrAsyncGetter.ts → esm/tools/ValueOrAsyncGetter.d.ts} +0 -0
  284. /package/{src/vendor/frontend/oidc-client-ts.ts → esm/vendor/frontend/oidc-client-ts.d.ts} +0 -0
  285. /package/{src/vendor/frontend/worker-timers.ts → esm/vendor/frontend/worker-timers.d.ts} +0 -0
@@ -1,122 +0,0 @@
1
- import { typeGuard, id } from "../vendor/frontend/tsafe";
2
-
3
- function getKey(params: { configId: string }) {
4
- const { configId } = params;
5
-
6
- return `oidc-spa:auth-state:${configId}`;
7
- }
8
-
9
- type PersistedAuthState = PersistedAuthState.LoggedIn | PersistedAuthState.ExplicitlyLoggedOut;
10
- namespace PersistedAuthState {
11
- type Common = {
12
- __brand: "PersistedAuthState-v1";
13
- };
14
-
15
- export type LoggedIn = Common & {
16
- stateDescription: "logged in";
17
- untilTime: number | undefined;
18
- };
19
-
20
- export type ExplicitlyLoggedOut = Common & {
21
- stateDescription: "explicitly logged out";
22
- };
23
- }
24
-
25
- export function persistAuthState(params: {
26
- configId: string;
27
- state:
28
- | {
29
- stateDescription: "logged in";
30
- idleSessionLifetimeInSeconds: number | undefined;
31
- refreshTokenExpirationTime: number | undefined;
32
- }
33
- | {
34
- stateDescription: "explicitly logged out";
35
- }
36
- | undefined;
37
- }) {
38
- const { configId, state } = params;
39
-
40
- const key = getKey({ configId });
41
-
42
- if (state === undefined) {
43
- localStorage.removeItem(key);
44
- return;
45
- }
46
-
47
- localStorage.setItem(
48
- key,
49
- JSON.stringify(
50
- id<PersistedAuthState>(
51
- (() => {
52
- switch (state.stateDescription) {
53
- case "logged in":
54
- return id<PersistedAuthState.LoggedIn>({
55
- __brand: "PersistedAuthState-v1",
56
- stateDescription: "logged in",
57
- untilTime: (() => {
58
- const { idleSessionLifetimeInSeconds, refreshTokenExpirationTime } =
59
- state;
60
-
61
- if (idleSessionLifetimeInSeconds !== undefined) {
62
- return Date.now() + idleSessionLifetimeInSeconds * 1000;
63
- }
64
-
65
- return refreshTokenExpirationTime;
66
- })()
67
- });
68
- case "explicitly logged out":
69
- return id<PersistedAuthState.ExplicitlyLoggedOut>({
70
- __brand: "PersistedAuthState-v1",
71
- stateDescription: "explicitly logged out"
72
- });
73
- }
74
- })()
75
- )
76
- )
77
- );
78
- }
79
-
80
- export function getPersistedAuthState(params: {
81
- configId: string;
82
- }): PersistedAuthState["stateDescription"] | undefined {
83
- const { configId } = params;
84
-
85
- const key = getKey({ configId });
86
-
87
- const value = localStorage.getItem(key);
88
-
89
- if (value === null) {
90
- return undefined;
91
- }
92
-
93
- let state: unknown;
94
-
95
- try {
96
- state = JSON.parse(value);
97
- } catch {
98
- localStorage.removeItem(key);
99
- return undefined;
100
- }
101
-
102
- if (
103
- !typeGuard<PersistedAuthState>(
104
- state,
105
- state instanceof Object &&
106
- "__brand" in state &&
107
- state.__brand === id<PersistedAuthState["__brand"]>("PersistedAuthState-v1")
108
- )
109
- ) {
110
- localStorage.removeItem(key);
111
- return undefined;
112
- }
113
-
114
- if (state.stateDescription === "logged in") {
115
- if (state.untilTime !== undefined && state.untilTime <= Date.now()) {
116
- localStorage.removeItem(key);
117
- return undefined;
118
- }
119
- }
120
-
121
- return state.stateDescription;
122
- }
@@ -1,8 +0,0 @@
1
- export { isKeycloak } from "./isKeycloak";
2
- export type { KeycloakIssuerUriParsed } from "./keycloakIssuerUriParsed";
3
- export {
4
- type KeycloakUtils,
5
- KeycloakProfile,
6
- KeycloakUserInfo,
7
- createKeycloakUtils
8
- } from "./keycloakUtils";
@@ -1,90 +0,0 @@
1
- import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
2
-
3
- import { type KeycloakIssuerUriParsed, parseKeycloakIssuerUri } from "./keycloakIssuerUriParsed";
4
-
5
- export type KeycloakUtils = {
6
- issuerUriParsed: KeycloakIssuerUriParsed;
7
- adminConsoleUrl: string;
8
- adminConsoleUrl_master: string;
9
- getAccountUrl: (params: {
10
- clientId: string;
11
- backToAppFromAccountUrl: string;
12
- locale?: string;
13
- }) => string;
14
- fetchUserProfile: (params: { accessToken: string }) => Promise<KeycloakProfile>;
15
- fetchUserInfo: (params: { accessToken: string }) => Promise<KeycloakUserInfo>;
16
- transformUrlBeforeRedirectForRegister: (authorizationUrl: string) => string;
17
- };
18
-
19
- export type KeycloakProfile = {
20
- id?: string;
21
- username?: string;
22
- email?: string;
23
- firstName?: string;
24
- lastName?: string;
25
- enabled?: boolean;
26
- emailVerified?: boolean;
27
- totp?: boolean;
28
- createdTimestamp?: number;
29
- attributes?: Record<string, unknown>;
30
- };
31
-
32
- export type KeycloakUserInfo = {
33
- sub: string;
34
- [key: string]: any;
35
- };
36
-
37
- export function createKeycloakUtils(params: { issuerUri: string }): KeycloakUtils {
38
- const { issuerUri } = params;
39
-
40
- const issuerUriParsed = parseKeycloakIssuerUri({ issuerUri });
41
-
42
- const keycloakServerUrl = `${issuerUriParsed.origin}${issuerUriParsed.kcHttpRelativePath ?? ""}`;
43
-
44
- const getAdminConsoleUrl = (realm: string) =>
45
- `${keycloakServerUrl}/admin/${encodeURIComponent(realm)}/console`;
46
-
47
- const realmUrl = `${keycloakServerUrl}/realms/${encodeURIComponent(issuerUriParsed.realm)}`;
48
-
49
- return {
50
- issuerUriParsed,
51
- adminConsoleUrl: getAdminConsoleUrl(issuerUriParsed.realm),
52
- adminConsoleUrl_master: getAdminConsoleUrl("master"),
53
- getAccountUrl: ({ clientId, backToAppFromAccountUrl, locale }) => {
54
- const accountUrlObj = new URL(
55
- `${keycloakServerUrl}/realms/${issuerUriParsed.realm}/account`
56
- );
57
- accountUrlObj.searchParams.set("referrer", clientId);
58
- accountUrlObj.searchParams.set(
59
- "referrer_uri",
60
- toFullyQualifiedUrl({
61
- urlish: backToAppFromAccountUrl,
62
- doAssertNoQueryParams: false
63
- })
64
- );
65
- if (locale !== undefined) {
66
- accountUrlObj.searchParams.set("kc_locale", locale);
67
- }
68
- return accountUrlObj.href;
69
- },
70
- fetchUserProfile: ({ accessToken }) =>
71
- fetch(`${realmUrl}/account`, {
72
- headers: {
73
- Accept: "application/json",
74
- Authorization: `Bearer ${accessToken}`
75
- }
76
- }).then(r => r.json()),
77
- fetchUserInfo: ({ accessToken }) =>
78
- fetch(`${realmUrl}/protocol/openid-connect/userinfo`, {
79
- headers: {
80
- Accept: "application/json",
81
- Authorization: `Bearer ${accessToken}`
82
- }
83
- }).then(r => r.json()),
84
- transformUrlBeforeRedirectForRegister: authorizationUrl => {
85
- const urlObj = new URL(authorizationUrl);
86
- urlObj.pathname = urlObj.pathname.replace(/\/auth$/, "/registrations");
87
- return urlObj.href;
88
- }
89
- };
90
- }
@@ -1,11 +0,0 @@
1
- import { createOidcReactApi_dependencyInjection } from "../react/react";
2
- import { createMockOidc, type ParamsOfCreateMockOidc } from "./oidc";
3
- import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
4
-
5
- /** @see: https://docs.oidc-spa.dev/v/v7/mock */
6
- export function createMockReactOidc<
7
- DecodedIdToken extends Record<string, unknown> = Record<string, unknown>,
8
- AutoLogin extends boolean = false
9
- >(params: ValueOrAsyncGetter<ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin>>) {
10
- return createOidcReactApi_dependencyInjection(params, createMockOidc);
11
- }