keycloakify 10.0.0-rc.2 → 10.0.0-rc.21

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 (567) hide show
  1. package/PUBLIC_URL.js +1 -1
  2. package/PUBLIC_URL.js.map +1 -1
  3. package/account/Fallback.js +3 -0
  4. package/account/Fallback.js.map +1 -1
  5. package/account/Template.js +7 -7
  6. package/account/Template.js.map +1 -1
  7. package/account/i18n/baseMessages/index.js.map +1 -1
  8. package/account/i18n/i18n.d.ts +3 -4
  9. package/account/i18n/i18n.js +38 -31
  10. package/account/i18n/i18n.js.map +1 -1
  11. package/account/index.d.ts +1 -1
  12. package/account/kcContext/KcContext.d.ts +62 -59
  13. package/account/kcContext/KcContext.js.map +1 -1
  14. package/account/kcContext/createGetKcContext.d.ts +3 -3
  15. package/account/kcContext/createGetKcContext.js +20 -15
  16. package/account/kcContext/createGetKcContext.js.map +1 -1
  17. package/account/kcContext/getKcContext.js.map +1 -1
  18. package/account/kcContext/getKcContextFromWindow.d.ts +3 -1
  19. package/account/kcContext/getKcContextFromWindow.js +1 -1
  20. package/account/kcContext/getKcContextFromWindow.js.map +1 -1
  21. package/account/kcContext/kcContextMocks.js +155 -143
  22. package/account/kcContext/kcContextMocks.js.map +1 -1
  23. package/account/lib/useGetClassName.js +14 -14
  24. package/account/lib/useGetClassName.js.map +1 -1
  25. package/account/pages/Account.js +2 -2
  26. package/account/pages/Account.js.map +1 -1
  27. package/account/pages/Applications.js +3 -3
  28. package/account/pages/Applications.js.map +1 -1
  29. package/account/pages/FederatedIdentity.d.ts +7 -0
  30. package/account/pages/FederatedIdentity.js +8 -0
  31. package/account/pages/FederatedIdentity.js.map +1 -0
  32. package/account/pages/Log.js +2 -2
  33. package/account/pages/Log.js.map +1 -1
  34. package/account/pages/Password.js +9 -11
  35. package/account/pages/Password.js.map +1 -1
  36. package/account/pages/Sessions.js +1 -5
  37. package/account/pages/Sessions.js.map +1 -1
  38. package/account/pages/Totp.js +5 -5
  39. package/account/pages/Totp.js.map +1 -1
  40. package/bin/246.index.js +466 -0
  41. package/bin/420.index.js +508 -0
  42. package/bin/509.index.js +438 -0
  43. package/bin/772.index.js +1524 -0
  44. package/bin/main.js +155619 -0
  45. package/bin/{keycloakify/generateFtl/pageId.d.ts → shared/constants.d.ts} +16 -1
  46. package/bin/shared/constants.js +63 -0
  47. package/bin/shared/constants.js.map +1 -0
  48. package/lib/BASE_URL.js.map +1 -1
  49. package/lib/isStorybook.js +2 -1
  50. package/lib/isStorybook.js.map +1 -1
  51. package/lib/useGetClassName.js.map +1 -1
  52. package/login/Fallback.js.map +1 -1
  53. package/login/Template.js +17 -17
  54. package/login/Template.js.map +1 -1
  55. package/login/UserProfileFormFields.js +59 -59
  56. package/login/UserProfileFormFields.js.map +1 -1
  57. package/login/i18n/baseMessages/ca.d.ts +1 -1
  58. package/login/i18n/baseMessages/ca.js +1 -1
  59. package/login/i18n/baseMessages/el.d.ts +0 -1
  60. package/login/i18n/baseMessages/el.js +0 -1
  61. package/login/i18n/baseMessages/el.js.map +1 -1
  62. package/login/i18n/baseMessages/en.d.ts +1 -1
  63. package/login/i18n/baseMessages/en.js +1 -1
  64. package/login/i18n/baseMessages/es.d.ts +1 -1
  65. package/login/i18n/baseMessages/es.js +1 -1
  66. package/login/i18n/baseMessages/fa.d.ts +0 -1
  67. package/login/i18n/baseMessages/fa.js +0 -1
  68. package/login/i18n/baseMessages/fa.js.map +1 -1
  69. package/login/i18n/baseMessages/hu.d.ts +1 -1
  70. package/login/i18n/baseMessages/hu.js +1 -1
  71. package/login/i18n/baseMessages/index.d.ts +1 -2
  72. package/login/i18n/baseMessages/index.js.map +1 -1
  73. package/login/i18n/baseMessages/zh-CN.d.ts +1 -1
  74. package/login/i18n/baseMessages/zh-CN.js +1 -1
  75. package/login/i18n/i18n.d.ts +5 -5
  76. package/login/i18n/i18n.js +59 -41
  77. package/login/i18n/i18n.js.map +1 -1
  78. package/login/index.d.ts +1 -1
  79. package/login/kcContext/KcContext.d.ts +1 -0
  80. package/login/kcContext/KcContext.js +1 -0
  81. package/login/kcContext/KcContext.js.map +1 -1
  82. package/login/kcContext/createGetKcContext.d.ts +3 -3
  83. package/login/kcContext/createGetKcContext.js +30 -22
  84. package/login/kcContext/createGetKcContext.js.map +1 -1
  85. package/login/kcContext/getKcContext.js.map +1 -1
  86. package/login/kcContext/getKcContextFromWindow.d.ts +3 -1
  87. package/login/kcContext/getKcContextFromWindow.js +1 -1
  88. package/login/kcContext/getKcContextFromWindow.js.map +1 -1
  89. package/login/kcContext/kcContextMocks.js +235 -232
  90. package/login/kcContext/kcContextMocks.js.map +1 -1
  91. package/login/lib/useDownloadTerms.js +5 -6
  92. package/login/lib/useDownloadTerms.js.map +1 -1
  93. package/login/lib/useGetClassName.js +112 -112
  94. package/login/lib/useGetClassName.js.map +1 -1
  95. package/login/lib/useUserProfileForm.js +188 -188
  96. package/login/lib/useUserProfileForm.js.map +1 -1
  97. package/login/pages/Code.js +1 -1
  98. package/login/pages/Code.js.map +1 -1
  99. package/login/pages/DeleteAccountConfirm.js +5 -1
  100. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  101. package/login/pages/DeleteCredential.js +1 -1
  102. package/login/pages/DeleteCredential.js.map +1 -1
  103. package/login/pages/Error.js +1 -1
  104. package/login/pages/Error.js.map +1 -1
  105. package/login/pages/FrontchannelLogout.js +1 -1
  106. package/login/pages/FrontchannelLogout.js.map +1 -1
  107. package/login/pages/IdpReviewUserProfile.js +1 -1
  108. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  109. package/login/pages/Info.js +5 -5
  110. package/login/pages/Info.js.map +1 -1
  111. package/login/pages/Login.js +4 -4
  112. package/login/pages/Login.js.map +1 -1
  113. package/login/pages/LoginConfigTotp.js +2 -2
  114. package/login/pages/LoginConfigTotp.js.map +1 -1
  115. package/login/pages/LoginIdpLinkConfirm.js +1 -1
  116. package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
  117. package/login/pages/LoginIdpLinkEmail.js +1 -1
  118. package/login/pages/LoginIdpLinkEmail.js.map +1 -1
  119. package/login/pages/LoginOauth2DeviceVerifyUserCode.js +1 -1
  120. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
  121. package/login/pages/LoginOauthGrant.js +2 -2
  122. package/login/pages/LoginOauthGrant.js.map +1 -1
  123. package/login/pages/LoginOtp.js +1 -1
  124. package/login/pages/LoginOtp.js.map +1 -1
  125. package/login/pages/LoginPageExpired.js +1 -1
  126. package/login/pages/LoginPageExpired.js.map +1 -1
  127. package/login/pages/LoginPassword.js +3 -3
  128. package/login/pages/LoginPassword.js.map +1 -1
  129. package/login/pages/LoginRecoveryAuthnCodeConfig.js +6 -6
  130. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  131. package/login/pages/LoginRecoveryAuthnCodeInput.js +1 -1
  132. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  133. package/login/pages/LoginResetOtp.js +1 -1
  134. package/login/pages/LoginResetOtp.js.map +1 -1
  135. package/login/pages/LoginResetPassword.js +2 -2
  136. package/login/pages/LoginResetPassword.js.map +1 -1
  137. package/login/pages/LoginUpdatePassword.js +3 -3
  138. package/login/pages/LoginUpdatePassword.js.map +1 -1
  139. package/login/pages/LoginUpdateProfile.js +2 -4
  140. package/login/pages/LoginUpdateProfile.js.map +1 -1
  141. package/login/pages/LoginUsername.js +3 -3
  142. package/login/pages/LoginUsername.js.map +1 -1
  143. package/login/pages/LoginVerifyEmail.js +1 -1
  144. package/login/pages/LoginVerifyEmail.js.map +1 -1
  145. package/login/pages/LoginX509Info.js +1 -1
  146. package/login/pages/LoginX509Info.js.map +1 -1
  147. package/login/pages/LogoutConfirm.js +1 -1
  148. package/login/pages/LogoutConfirm.js.map +1 -1
  149. package/login/pages/Register.js +4 -8
  150. package/login/pages/Register.js.map +1 -1
  151. package/login/pages/SamlPostForm.js +1 -1
  152. package/login/pages/SamlPostForm.js.map +1 -1
  153. package/login/pages/SelectAuthenticator.js +2 -2
  154. package/login/pages/SelectAuthenticator.js.map +1 -1
  155. package/login/pages/Terms.js +1 -1
  156. package/login/pages/Terms.js.map +1 -1
  157. package/login/pages/UpdateEmail.js +3 -5
  158. package/login/pages/UpdateEmail.js.map +1 -1
  159. package/login/pages/WebauthnAuthenticate.js +17 -14
  160. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  161. package/login/pages/WebauthnError.js +2 -2
  162. package/login/pages/WebauthnError.js.map +1 -1
  163. package/login/pages/WebauthnRegister.js +10 -10
  164. package/login/pages/WebauthnRegister.js.map +1 -1
  165. package/package.json +103 -512
  166. package/src/PUBLIC_URL.ts +4 -1
  167. package/src/account/Fallback.tsx +3 -0
  168. package/src/account/Template.tsx +7 -10
  169. package/src/account/TemplateProps.ts +4 -1
  170. package/src/account/i18n/i18n.tsx +44 -37
  171. package/src/account/index.ts +1 -1
  172. package/src/account/kcContext/KcContext.ts +76 -63
  173. package/src/account/kcContext/createGetKcContext.ts +48 -22
  174. package/src/account/kcContext/getKcContext.ts +3 -1
  175. package/src/account/kcContext/getKcContextFromWindow.ts +7 -3
  176. package/src/account/kcContext/kcContextMocks.ts +172 -162
  177. package/src/account/lib/useGetClassName.ts +15 -14
  178. package/src/account/pages/Account.tsx +2 -2
  179. package/src/account/pages/Applications.tsx +2 -2
  180. package/src/account/pages/FederatedIdentity.tsx +58 -0
  181. package/src/account/pages/Log.tsx +1 -1
  182. package/src/account/pages/Password.tsx +8 -8
  183. package/src/account/pages/Sessions.tsx +0 -3
  184. package/src/account/pages/Totp.tsx +23 -26
  185. package/src/bin/copy-keycloak-resources-to-public.ts +10 -106
  186. package/src/bin/download-keycloak-default-theme.ts +63 -0
  187. package/src/bin/eject-page.ts +176 -0
  188. package/src/bin/initialize-email-theme.ts +38 -29
  189. package/src/bin/keycloakify/buildJars/buildJar.ts +192 -72
  190. package/src/bin/keycloakify/buildJars/buildJars.ts +41 -23
  191. package/src/bin/keycloakify/buildJars/extensionVersions.ts +2 -1
  192. package/src/bin/keycloakify/buildJars/generatePom.ts +12 -4
  193. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +73 -21
  194. package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +182 -252
  195. package/src/bin/keycloakify/generateFtl/generateFtl.ts +59 -15
  196. package/src/bin/keycloakify/generateFtl/index.ts +0 -1
  197. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.ts +34 -22
  198. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.ts +72 -20
  199. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +34 -0
  200. package/src/bin/keycloakify/{generateTheme/generateSrcMainResources.ts → generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts} +113 -74
  201. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +80 -0
  202. package/src/bin/keycloakify/generateSrcMainResources/index.ts +1 -0
  203. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts +21 -8
  204. package/src/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.ts +83 -0
  205. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +31 -18
  206. package/src/bin/keycloakify/index.ts +0 -7
  207. package/src/bin/keycloakify/keycloakify.ts +77 -69
  208. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +26 -7
  209. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +8 -4
  210. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +7 -4
  211. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +25 -7
  212. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +50 -12
  213. package/src/bin/main.ts +212 -0
  214. package/src/bin/shared/KeycloakVersionRange.ts +9 -0
  215. package/src/bin/shared/buildOptions.ts +307 -0
  216. package/src/bin/{keycloakify/generateFtl/pageId.ts → shared/constants.ts} +31 -1
  217. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +104 -0
  218. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +207 -0
  219. package/src/bin/shared/downloadKeycloakStaticResources.ts +53 -0
  220. package/src/bin/shared/getJarFileBasename.ts +11 -0
  221. package/src/bin/{getThemeSrcDirPath.ts → shared/getThemeSrcDirPath.ts} +6 -3
  222. package/src/bin/shared/metaInfKeycloakThemes.ts +61 -0
  223. package/src/bin/shared/promptKeycloakVersion.ts +125 -0
  224. package/src/bin/start-keycloak/appBuild.ts +129 -0
  225. package/src/bin/start-keycloak/index.ts +1 -0
  226. package/src/bin/start-keycloak/keycloakifyBuild.ts +41 -0
  227. package/src/bin/start-keycloak/myrealm-realm-23.json +2142 -0
  228. package/src/bin/start-keycloak/myrealm-realm-24.json +2318 -0
  229. package/src/bin/start-keycloak/start-keycloak.ts +467 -0
  230. package/src/bin/tools/SemVer.ts +32 -13
  231. package/src/bin/tools/String.prototype.replaceAll.ts +9 -2
  232. package/src/bin/tools/crawl.ts +4 -1
  233. package/src/bin/tools/crc32.ts +42 -24
  234. package/src/bin/tools/downloadAndExtractArchive/downloadAndExtractArchive.ts +262 -0
  235. package/src/bin/tools/downloadAndExtractArchive/fetchProxyOptions.ts +96 -0
  236. package/src/bin/tools/downloadAndExtractArchive/index.ts +1 -0
  237. package/src/bin/tools/extractArchive.ts +140 -0
  238. package/src/bin/tools/fetchProxyOptions.ts +31 -8
  239. package/src/bin/tools/fs.rmSync.ts +4 -4
  240. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +17 -2
  241. package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +73 -0
  242. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +8 -2
  243. package/src/bin/tools/octokit-addons/listTags.ts +15 -4
  244. package/src/bin/tools/partitionPromiseSettledResults.ts +12 -3
  245. package/src/bin/tools/{readThisNpmProjectVersion.ts → readThisNpmPackageVersion.ts} +6 -2
  246. package/src/bin/tools/transformCodebase.ts +29 -10
  247. package/src/bin/tools/trimIndent.ts +4 -1
  248. package/src/lib/isStorybook.ts +3 -1
  249. package/src/lib/useGetClassName.ts +12 -3
  250. package/src/login/Template.tsx +20 -36
  251. package/src/login/TemplateProps.ts +4 -1
  252. package/src/login/UserProfileFormFields.tsx +46 -47
  253. package/src/login/i18n/baseMessages/ca.ts +1 -1
  254. package/src/login/i18n/baseMessages/el.ts +0 -1
  255. package/src/login/i18n/baseMessages/en.ts +1 -1
  256. package/src/login/i18n/baseMessages/es.ts +1 -1
  257. package/src/login/i18n/baseMessages/fa.ts +0 -1
  258. package/src/login/i18n/baseMessages/hu.ts +1 -1
  259. package/src/login/i18n/baseMessages/zh-CN.ts +1 -1
  260. package/src/login/i18n/i18n.tsx +77 -54
  261. package/src/login/index.ts +1 -1
  262. package/src/login/kcContext/KcContext.ts +23 -4
  263. package/src/login/kcContext/createGetKcContext.ts +84 -37
  264. package/src/login/kcContext/getKcContext.ts +3 -1
  265. package/src/login/kcContext/getKcContextFromWindow.ts +7 -3
  266. package/src/login/kcContext/kcContextMocks.ts +340 -326
  267. package/src/login/lib/useDownloadTerms.ts +13 -9
  268. package/src/login/lib/useGetClassName.ts +119 -112
  269. package/src/login/lib/useUserProfileForm.tsx +227 -213
  270. package/src/login/pages/Code.tsx +1 -1
  271. package/src/login/pages/DeleteAccountConfirm.tsx +9 -3
  272. package/src/login/pages/FrontchannelLogout.tsx +1 -1
  273. package/src/login/pages/IdpReviewUserProfile.tsx +1 -1
  274. package/src/login/pages/Login.tsx +3 -3
  275. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +3 -3
  276. package/src/login/pages/LoginResetPassword.tsx +2 -2
  277. package/src/login/pages/LoginUpdateProfile.tsx +1 -1
  278. package/src/login/pages/LoginUsername.tsx +3 -3
  279. package/src/login/pages/Register.tsx +1 -1
  280. package/src/login/pages/UpdateEmail.tsx +1 -1
  281. package/src/login/pages/WebauthnAuthenticate.tsx +11 -8
  282. package/src/login/pages/WebauthnRegister.tsx +8 -8
  283. package/src/tools/AndByDiscriminatingKey.ts +12 -6
  284. package/src/tools/Array.prototype.every.ts +4 -1
  285. package/src/tools/LazyOrNot.ts +3 -1
  286. package/src/tools/StatefulObservable/README.md +16 -0
  287. package/src/tools/StatefulObservable/StatefulObservable.ts +58 -0
  288. package/src/tools/StatefulObservable/hooks/index.ts +2 -0
  289. package/src/tools/StatefulObservable/hooks/useObservable.ts +25 -0
  290. package/src/tools/StatefulObservable/hooks/useRerenderOnChange.ts +19 -0
  291. package/src/tools/StatefulObservable/index.ts +2 -0
  292. package/src/tools/clsx.ts +7 -1
  293. package/src/tools/deepAssign.ts +15 -8
  294. package/src/tools/deepClone.ts +3 -1
  295. package/src/tools/formatNumber.ts +4 -1
  296. package/src/tools/useConstCallback.ts +3 -1
  297. package/src/tools/useInsertLinkTags.ts +20 -7
  298. package/src/tools/useInsertScriptTags.ts +7 -2
  299. package/src/tools/useSetClassName.ts +4 -1
  300. package/src/vite-plugin/tsconfig.json +2 -1
  301. package/src/vite-plugin/vite-plugin.ts +64 -52
  302. package/tools/Array.prototype.every.js +2 -1
  303. package/tools/Array.prototype.every.js.map +1 -1
  304. package/tools/HTMLElement.prototype.prepend.js.map +1 -1
  305. package/tools/StatefulObservable/StatefulObservable.d.ts +8 -0
  306. package/tools/StatefulObservable/StatefulObservable.js +36 -0
  307. package/tools/StatefulObservable/StatefulObservable.js.map +1 -0
  308. package/tools/StatefulObservable/hooks/index.d.ts +2 -0
  309. package/tools/StatefulObservable/hooks/index.js +3 -0
  310. package/tools/StatefulObservable/hooks/index.js.map +1 -0
  311. package/tools/StatefulObservable/hooks/useObservable.d.ts +8 -0
  312. package/tools/StatefulObservable/hooks/useObservable.js +17 -0
  313. package/tools/StatefulObservable/hooks/useObservable.js.map +1 -0
  314. package/tools/StatefulObservable/hooks/useRerenderOnChange.d.ts +5 -0
  315. package/tools/StatefulObservable/hooks/useRerenderOnChange.js +14 -0
  316. package/tools/StatefulObservable/hooks/useRerenderOnChange.js.map +1 -0
  317. package/tools/StatefulObservable/index.d.ts +2 -0
  318. package/tools/StatefulObservable/index.js +3 -0
  319. package/tools/StatefulObservable/index.js.map +1 -0
  320. package/tools/clsx.js.map +1 -1
  321. package/tools/deepAssign.js +9 -7
  322. package/tools/deepAssign.js.map +1 -1
  323. package/tools/deepClone.js.map +1 -1
  324. package/tools/formatNumber.js.map +1 -1
  325. package/tools/memoize.js.map +1 -1
  326. package/tools/useConstCallback.js.map +1 -1
  327. package/tools/useInsertLinkTags.js +5 -4
  328. package/tools/useInsertLinkTags.js.map +1 -1
  329. package/tools/useInsertScriptTags.js +5 -2
  330. package/tools/useInsertScriptTags.js.map +1 -1
  331. package/tools/useSetClassName.js.map +1 -1
  332. package/vite-plugin/index.js +50241 -3
  333. package/bin/constants.d.ts +0 -10
  334. package/bin/constants.js +0 -13
  335. package/bin/constants.js.map +0 -1
  336. package/bin/copy-keycloak-resources-to-public.d.ts +0 -14
  337. package/bin/copy-keycloak-resources-to-public.js +0 -216
  338. package/bin/copy-keycloak-resources-to-public.js.map +0 -1
  339. package/bin/download-builtin-keycloak-theme.d.ts +0 -10
  340. package/bin/download-builtin-keycloak-theme.js +0 -352
  341. package/bin/download-builtin-keycloak-theme.js.map +0 -1
  342. package/bin/downloadAndUnzip.d.ts +0 -16
  343. package/bin/downloadAndUnzip.js +0 -255
  344. package/bin/downloadAndUnzip.js.map +0 -1
  345. package/bin/eject-keycloak-page.d.ts +0 -2
  346. package/bin/eject-keycloak-page.js +0 -132
  347. package/bin/eject-keycloak-page.js.map +0 -1
  348. package/bin/getThemeSrcDirPath.d.ts +0 -6
  349. package/bin/getThemeSrcDirPath.js +0 -123
  350. package/bin/getThemeSrcDirPath.js.map +0 -1
  351. package/bin/initialize-email-theme.d.ts +0 -2
  352. package/bin/initialize-email-theme.js +0 -121
  353. package/bin/initialize-email-theme.js.map +0 -1
  354. package/bin/keycloakify/buildJars/buildJar.d.ts +0 -14
  355. package/bin/keycloakify/buildJars/buildJar.js +0 -224
  356. package/bin/keycloakify/buildJars/buildJar.js.map +0 -1
  357. package/bin/keycloakify/buildJars/buildJars.d.ts +0 -10
  358. package/bin/keycloakify/buildJars/buildJars.js +0 -95
  359. package/bin/keycloakify/buildJars/buildJars.js.map +0 -1
  360. package/bin/keycloakify/buildJars/extensionVersions.d.ts +0 -12
  361. package/bin/keycloakify/buildJars/extensionVersions.js +0 -7
  362. package/bin/keycloakify/buildJars/extensionVersions.js.map +0 -1
  363. package/bin/keycloakify/buildJars/generatePom.d.ts +0 -13
  364. package/bin/keycloakify/buildJars/generatePom.js +0 -95
  365. package/bin/keycloakify/buildJars/generatePom.js.map +0 -1
  366. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +0 -6
  367. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +0 -35
  368. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +0 -1
  369. package/bin/keycloakify/buildJars/index.d.ts +0 -1
  370. package/bin/keycloakify/buildJars/index.js +0 -18
  371. package/bin/keycloakify/buildJars/index.js.map +0 -1
  372. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -35
  373. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +0 -14
  374. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +0 -1
  375. package/bin/keycloakify/buildOptions/buildOptions.d.ts +0 -25
  376. package/bin/keycloakify/buildOptions/buildOptions.js +0 -178
  377. package/bin/keycloakify/buildOptions/buildOptions.js.map +0 -1
  378. package/bin/keycloakify/buildOptions/getCacheDirPath.d.ts +0 -5
  379. package/bin/keycloakify/buildOptions/getCacheDirPath.js +0 -22
  380. package/bin/keycloakify/buildOptions/getCacheDirPath.js.map +0 -1
  381. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.d.ts +0 -5
  382. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js +0 -86
  383. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js.map +0 -1
  384. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.d.ts +0 -5
  385. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js +0 -26
  386. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js.map +0 -1
  387. package/bin/keycloakify/buildOptions/index.d.ts +0 -1
  388. package/bin/keycloakify/buildOptions/index.js +0 -18
  389. package/bin/keycloakify/buildOptions/index.js.map +0 -1
  390. package/bin/keycloakify/buildOptions/parsedPackageJson.d.ts +0 -10
  391. package/bin/keycloakify/buildOptions/parsedPackageJson.js +0 -49
  392. package/bin/keycloakify/buildOptions/parsedPackageJson.js.map +0 -1
  393. package/bin/keycloakify/buildOptions/resolvedViteConfig.d.ts +0 -13
  394. package/bin/keycloakify/buildOptions/resolvedViteConfig.js +0 -77
  395. package/bin/keycloakify/buildOptions/resolvedViteConfig.js.map +0 -1
  396. package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +0 -604
  397. package/bin/keycloakify/generateFtl/generateFtl.d.ts +0 -23
  398. package/bin/keycloakify/generateFtl/generateFtl.js +0 -169
  399. package/bin/keycloakify/generateFtl/generateFtl.js.map +0 -1
  400. package/bin/keycloakify/generateFtl/index.d.ts +0 -2
  401. package/bin/keycloakify/generateFtl/index.js +0 -19
  402. package/bin/keycloakify/generateFtl/index.js.map +0 -1
  403. package/bin/keycloakify/generateFtl/pageId.js +0 -41
  404. package/bin/keycloakify/generateFtl/pageId.js.map +0 -1
  405. package/bin/keycloakify/generateStartKeycloakTestingContainer.d.ts +0 -11
  406. package/bin/keycloakify/generateStartKeycloakTestingContainer.js +0 -89
  407. package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +0 -1
  408. package/bin/keycloakify/generateTheme/bringInAccountV1.d.ts +0 -9
  409. package/bin/keycloakify/generateTheme/bringInAccountV1.js +0 -153
  410. package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +0 -1
  411. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.d.ts +0 -11
  412. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js +0 -102
  413. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js.map +0 -1
  414. package/bin/keycloakify/generateTheme/generateMessageProperties.d.ts +0 -8
  415. package/bin/keycloakify/generateTheme/generateMessageProperties.js +0 -271
  416. package/bin/keycloakify/generateTheme/generateMessageProperties.js.map +0 -1
  417. package/bin/keycloakify/generateTheme/generateSrcMainResources.d.ts +0 -21
  418. package/bin/keycloakify/generateTheme/generateSrcMainResources.js +0 -340
  419. package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +0 -1
  420. package/bin/keycloakify/generateTheme/generateTheme.d.ts +0 -13
  421. package/bin/keycloakify/generateTheme/generateTheme.js +0 -115
  422. package/bin/keycloakify/generateTheme/generateTheme.js.map +0 -1
  423. package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +0 -5
  424. package/bin/keycloakify/generateTheme/generateThemeVariants.js +0 -67
  425. package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +0 -1
  426. package/bin/keycloakify/generateTheme/index.d.ts +0 -1
  427. package/bin/keycloakify/generateTheme/index.js +0 -18
  428. package/bin/keycloakify/generateTheme/index.js.map +0 -1
  429. package/bin/keycloakify/generateTheme/readExtraPageNames.d.ts +0 -5
  430. package/bin/keycloakify/generateTheme/readExtraPageNames.js +0 -105
  431. package/bin/keycloakify/generateTheme/readExtraPageNames.js.map +0 -1
  432. package/bin/keycloakify/generateTheme/readFieldNameUsage.d.ts +0 -7
  433. package/bin/keycloakify/generateTheme/readFieldNameUsage.js +0 -141
  434. package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +0 -1
  435. package/bin/keycloakify/index.d.ts +0 -2
  436. package/bin/keycloakify/index.js +0 -23
  437. package/bin/keycloakify/index.js.map +0 -1
  438. package/bin/keycloakify/keycloakify.d.ts +0 -1
  439. package/bin/keycloakify/keycloakify.js +0 -166
  440. package/bin/keycloakify/keycloakify.js.map +0 -1
  441. package/bin/keycloakify/replacers/replaceImportsInCssCode.d.ts +0 -15
  442. package/bin/keycloakify/replacers/replaceImportsInCssCode.js +0 -88
  443. package/bin/keycloakify/replacers/replaceImportsInCssCode.js.map +0 -1
  444. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.d.ts +0 -9
  445. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js +0 -38
  446. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js.map +0 -1
  447. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.d.ts +0 -1
  448. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.js +0 -18
  449. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.js.map +0 -1
  450. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.d.ts +0 -12
  451. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js +0 -70
  452. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js.map +0 -1
  453. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.d.ts +0 -13
  454. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js +0 -95
  455. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js.map +0 -1
  456. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.d.ts +0 -12
  457. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js +0 -103
  458. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js.map +0 -1
  459. package/bin/promptKeycloakVersion.d.ts +0 -3
  460. package/bin/promptKeycloakVersion.js +0 -121
  461. package/bin/promptKeycloakVersion.js.map +0 -1
  462. package/bin/tools/OptionalIfCanBeUndefined.d.ts +0 -14
  463. package/bin/tools/OptionalIfCanBeUndefined.js +0 -3
  464. package/bin/tools/OptionalIfCanBeUndefined.js.map +0 -1
  465. package/bin/tools/SemVer.d.ts +0 -26
  466. package/bin/tools/SemVer.js +0 -119
  467. package/bin/tools/SemVer.js.map +0 -1
  468. package/bin/tools/String.prototype.replaceAll.d.ts +0 -1
  469. package/bin/tools/String.prototype.replaceAll.js +0 -29
  470. package/bin/tools/String.prototype.replaceAll.js.map +0 -1
  471. package/bin/tools/crawl.d.ts +0 -5
  472. package/bin/tools/crawl.js +0 -74
  473. package/bin/tools/crawl.js.map +0 -1
  474. package/bin/tools/crc32.d.ts +0 -9
  475. package/bin/tools/crc32.js +0 -64
  476. package/bin/tools/crc32.js.map +0 -1
  477. package/bin/tools/deflate.d.ts +0 -24
  478. package/bin/tools/deflate.js +0 -155
  479. package/bin/tools/deflate.js.map +0 -1
  480. package/bin/tools/fetchProxyOptions.d.ts +0 -5
  481. package/bin/tools/fetchProxyOptions.js +0 -172
  482. package/bin/tools/fetchProxyOptions.js.map +0 -1
  483. package/bin/tools/fs.existsAsync.d.ts +0 -1
  484. package/bin/tools/fs.existsAsync.js +0 -86
  485. package/bin/tools/fs.existsAsync.js.map +0 -1
  486. package/bin/tools/fs.rm.d.ts +0 -8
  487. package/bin/tools/fs.rm.js +0 -151
  488. package/bin/tools/fs.rm.js.map +0 -1
  489. package/bin/tools/fs.rmSync.d.ts +0 -8
  490. package/bin/tools/fs.rmSync.js +0 -58
  491. package/bin/tools/fs.rmSync.js.map +0 -1
  492. package/bin/tools/getAbsoluteAndInOsFormatPath.d.ts +0 -4
  493. package/bin/tools/getAbsoluteAndInOsFormatPath.js +0 -16
  494. package/bin/tools/getAbsoluteAndInOsFormatPath.js.map +0 -1
  495. package/bin/tools/getThisCodebaseRootDirPath.d.ts +0 -1
  496. package/bin/tools/getThisCodebaseRootDirPath.js +0 -43
  497. package/bin/tools/getThisCodebaseRootDirPath.js.map +0 -1
  498. package/bin/tools/grant-exec-perms.d.ts +0 -1
  499. package/bin/tools/grant-exec-perms.js +0 -100
  500. package/bin/tools/grant-exec-perms.js.map +0 -1
  501. package/bin/tools/isInside.d.ts +0 -4
  502. package/bin/tools/isInside.js +0 -10
  503. package/bin/tools/isInside.js.map +0 -1
  504. package/bin/tools/kebabCaseToSnakeCase.d.ts +0 -1
  505. package/bin/tools/kebabCaseToSnakeCase.js +0 -35
  506. package/bin/tools/kebabCaseToSnakeCase.js.map +0 -1
  507. package/bin/tools/logger.d.ts +0 -12
  508. package/bin/tools/logger.js +0 -23
  509. package/bin/tools/logger.js.map +0 -1
  510. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.d.ts +0 -14
  511. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +0 -119
  512. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +0 -1
  513. package/bin/tools/octokit-addons/listTags.d.ts +0 -13
  514. package/bin/tools/octokit-addons/listTags.js +0 -154
  515. package/bin/tools/octokit-addons/listTags.js.map +0 -1
  516. package/bin/tools/partitionPromiseSettledResults.d.ts +0 -2
  517. package/bin/tools/partitionPromiseSettledResults.js +0 -41
  518. package/bin/tools/partitionPromiseSettledResults.js.map +0 -1
  519. package/bin/tools/readThisNpmProjectVersion.d.ts +0 -1
  520. package/bin/tools/readThisNpmProjectVersion.js +0 -37
  521. package/bin/tools/readThisNpmProjectVersion.js.map +0 -1
  522. package/bin/tools/tee.d.ts +0 -3
  523. package/bin/tools/tee.js +0 -37
  524. package/bin/tools/tee.js.map +0 -1
  525. package/bin/tools/transformCodebase.d.ts +0 -20
  526. package/bin/tools/transformCodebase.js +0 -97
  527. package/bin/tools/transformCodebase.js.map +0 -1
  528. package/bin/tools/trimIndent.d.ts +0 -5
  529. package/bin/tools/trimIndent.js +0 -82
  530. package/bin/tools/trimIndent.js.map +0 -1
  531. package/bin/tools/unzip.d.ts +0 -2
  532. package/bin/tools/unzip.js +0 -274
  533. package/bin/tools/unzip.js.map +0 -1
  534. package/index.d.ts +0 -1
  535. package/index.js +0 -2
  536. package/index.js.map +0 -1
  537. package/lib/keycloakJsAdapter.d.ts +0 -51
  538. package/lib/keycloakJsAdapter.js +0 -74
  539. package/lib/keycloakJsAdapter.js.map +0 -1
  540. package/src/bin/constants.ts +0 -13
  541. package/src/bin/download-builtin-keycloak-theme.ts +0 -290
  542. package/src/bin/downloadAndUnzip.ts +0 -203
  543. package/src/bin/eject-keycloak-page.ts +0 -64
  544. package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +0 -21
  545. package/src/bin/keycloakify/buildOptions/buildOptions.ts +0 -189
  546. package/src/bin/keycloakify/buildOptions/getCacheDirPath.ts +0 -25
  547. package/src/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.ts +0 -49
  548. package/src/bin/keycloakify/buildOptions/getReactAppRootDirPath.ts +0 -23
  549. package/src/bin/keycloakify/buildOptions/index.ts +0 -1
  550. package/src/bin/keycloakify/buildOptions/parsedPackageJson.ts +0 -32
  551. package/src/bin/keycloakify/buildOptions/resolvedViteConfig.ts +0 -74
  552. package/src/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.ts +0 -49
  553. package/src/bin/keycloakify/generateTheme/generateTheme.ts +0 -44
  554. package/src/bin/keycloakify/generateTheme/generateThemeVariants.ts +0 -50
  555. package/src/bin/keycloakify/generateTheme/index.ts +0 -1
  556. package/src/bin/keycloakify/generateTheme/readFieldNameUsage.ts +0 -55
  557. package/src/bin/promptKeycloakVersion.ts +0 -49
  558. package/src/bin/tools/grant-exec-perms.ts +0 -19
  559. package/src/bin/tools/logger.ts +0 -27
  560. package/src/bin/tools/unzip.ts +0 -141
  561. package/src/index.ts +0 -1
  562. package/src/lib/keycloakJsAdapter.ts +0 -118
  563. package/vite-plugin/index.js.map +0 -1
  564. package/vite-plugin/tsconfig.tsbuildinfo +0 -1
  565. package/vite-plugin/vite-plugin.d.ts +0 -6
  566. package/vite-plugin/vite-plugin.js +0 -158
  567. package/vite-plugin/vite-plugin.js.map +0 -1
package/src/PUBLIC_URL.ts CHANGED
@@ -1,4 +1,7 @@
1
- import { nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "keycloakify/bin/constants";
1
+ import {
2
+ nameOfTheGlobal,
3
+ basenameOfTheKeycloakifyResourcesDir
4
+ } from "keycloakify/bin/shared/constants";
2
5
  import { assert } from "tsafe/assert";
3
6
 
4
7
  /**
@@ -3,6 +3,7 @@ import type { PageProps } from "keycloakify/account/pages/PageProps";
3
3
  import type { I18n } from "keycloakify/account/i18n";
4
4
  import type { KcContext } from "./kcContext";
5
5
  import { assert, type Equals } from "tsafe/assert";
6
+ import FederatedIdentity from "./pages/FederatedIdentity";
6
7
 
7
8
  const Password = lazy(() => import("keycloakify/account/pages/Password"));
8
9
  const Account = lazy(() => import("keycloakify/account/pages/Account"));
@@ -30,6 +31,8 @@ export default function Fallback(props: PageProps<KcContext, I18n>) {
30
31
  return <Applications kcContext={kcContext} {...rest} />;
31
32
  case "log.ftl":
32
33
  return <Log kcContext={kcContext} {...rest} />;
34
+ case "federatedIdentity.ftl":
35
+ return <FederatedIdentity kcContext={kcContext} {...rest} />;
33
36
  }
34
37
  assert<Equals<typeof kcContext, never>>(false);
35
38
  })()}
@@ -15,7 +15,7 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
15
15
 
16
16
  const { getClassName } = useGetClassName({ doUseDefaultCss, classes });
17
17
 
18
- const { msg, msgStr, changeLocale, labelBySupportedLanguageTag, currentLanguageTag } = i18n;
18
+ const { msg, msgStr, getChangeLocalUrl, labelBySupportedLanguageTag, currentLanguageTag } = i18n;
19
19
 
20
20
  const { locale, url, features, realm, message, referrer } = kcContext;
21
21
 
@@ -24,13 +24,13 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
24
24
  }, []);
25
25
 
26
26
  useSetClassName({
27
- "qualifiedName": "html",
28
- "className": getClassName("kcHtmlClass")
27
+ qualifiedName: "html",
28
+ className: getClassName("kcHtmlClass")
29
29
  });
30
30
 
31
31
  useSetClassName({
32
- "qualifiedName": "body",
33
- "className": clsx("admin-console", "user", getClassName("kcBodyClass"))
32
+ qualifiedName: "body",
33
+ className: clsx("admin-console", "user", getClassName("kcBodyClass"))
34
34
  });
35
35
 
36
36
  useEffect(() => {
@@ -46,7 +46,7 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
46
46
  }, []);
47
47
 
48
48
  const { areAllStyleSheetsLoaded } = useInsertLinkTags({
49
- "hrefs": !doUseDefaultCss
49
+ hrefs: !doUseDefaultCss
50
50
  ? []
51
51
  : [
52
52
  `${url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly.min.css`,
@@ -81,10 +81,7 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
81
81
  <ul>
82
82
  {locale.supported.map(({ languageTag }) => (
83
83
  <li key={languageTag} className="kc-dropdown-item">
84
- {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
85
- <a href="#" onClick={() => changeLocale(languageTag)}>
86
- {labelBySupportedLanguageTag[languageTag]}
87
- </a>
84
+ <a href={getChangeLocalUrl(languageTag)}>{labelBySupportedLanguageTag[languageTag]}</a>
88
85
  </li>
89
86
  ))}
90
87
  </ul>
@@ -2,7 +2,10 @@ import type { ReactNode } from "react";
2
2
  import type { KcContext } from "./kcContext";
3
3
  import type { I18n } from "./i18n";
4
4
 
5
- export type TemplateProps<KcContext extends KcContext.Common, I18nExtended extends I18n> = {
5
+ export type TemplateProps<
6
+ KcContext extends KcContext.Common,
7
+ I18nExtended extends I18n
8
+ > = {
6
9
  kcContext: KcContext;
7
10
  i18n: I18nExtended;
8
11
  doUseDefaultCss: boolean;
@@ -28,11 +28,10 @@ export type GenericI18n<MessageKey extends string> = {
28
28
  */
29
29
  currentLanguageTag: string;
30
30
  /**
31
- * To call when the user switch language.
32
- * This will cause the page to be reloaded,
33
- * on next load currentLanguageTag === newLanguageTag
31
+ * Redirect to this url to change the language.
32
+ * After reload currentLanguageTag === newLanguageTag
34
33
  */
35
- changeLocale: (newLanguageTag: string) => never;
34
+ getChangeLocalUrl: (newLanguageTag: string) => string;
36
35
  /**
37
36
  * e.g. "en" => "English", "fr" => "Français", ...
38
37
  *
@@ -92,19 +91,19 @@ export function createUseI18n<ExtraMessageKey extends string = never>(extraMessa
92
91
 
93
92
  setI18n({
94
93
  ...createI18nTranslationFunctions({
95
- "fallbackMessages": {
94
+ fallbackMessages: {
96
95
  ...fallbackMessages,
97
96
  ...(keycloakifyExtraMessages[fallbackLanguageTag] ?? {}),
98
97
  ...(extraMessages[fallbackLanguageTag] ?? {})
99
98
  } as any,
100
- "messages": {
99
+ messages: {
101
100
  ...(await getMessages(currentLanguageTag)),
102
101
  ...((keycloakifyExtraMessages as any)[currentLanguageTag] ?? {}),
103
102
  ...(extraMessages[currentLanguageTag] ?? {})
104
103
  } as any
105
104
  }),
106
105
  currentLanguageTag,
107
- "changeLocale": newLanguageTag => {
106
+ getChangeLocalUrl: newLanguageTag => {
108
107
  const { locale } = kcContext;
109
108
 
110
109
  assert(locale !== undefined, "Internationalization not enabled");
@@ -113,11 +112,9 @@ export function createUseI18n<ExtraMessageKey extends string = never>(extraMessa
113
112
 
114
113
  assert(targetSupportedLocale !== undefined, `${newLanguageTag} need to be enabled in Keycloak admin`);
115
114
 
116
- window.location.href = targetSupportedLocale.url;
117
-
118
- assert(false, "never");
115
+ return targetSupportedLocale.url;
119
116
  },
120
- "labelBySupportedLanguageTag": Object.fromEntries(
117
+ labelBySupportedLanguageTag: Object.fromEntries(
121
118
  (kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label])
122
119
  )
123
120
  });
@@ -173,7 +170,7 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
173
170
  })();
174
171
 
175
172
  return doRenderMarkdown ? (
176
- <Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
173
+ <Markdown allowDangerousHtml renderers={{ paragraph: "span" }}>
177
174
  {messageWithArgsInjectedIfAny}
178
175
  </Markdown>
179
176
  ) : (
@@ -189,7 +186,7 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
189
186
  const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
190
187
 
191
188
  const out = resolveMsg({
192
- "key": keyUnwrappedFromCurlyBraces,
189
+ key: keyUnwrappedFromCurlyBraces,
193
190
  args,
194
191
  doRenderMarkdown
195
192
  });
@@ -198,36 +195,46 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
198
195
  }
199
196
 
200
197
  return {
201
- "msgStr": (key, ...args) => resolveMsg({ key, args, "doRenderMarkdown": false }) as string,
202
- "msg": (key, ...args) => resolveMsg({ key, args, "doRenderMarkdown": true }) as JSX.Element,
203
- "advancedMsg": (key, ...args) => resolveMsgAdvanced({ key, args, "doRenderMarkdown": true }) as JSX.Element,
204
- "advancedMsgStr": (key, ...args) => resolveMsgAdvanced({ key, args, "doRenderMarkdown": false }) as string
198
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: false }) as string,
199
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: true }) as JSX.Element,
200
+ advancedMsg: (key, ...args) =>
201
+ resolveMsgAdvanced({
202
+ key,
203
+ args,
204
+ doRenderMarkdown: true
205
+ }) as JSX.Element,
206
+ advancedMsgStr: (key, ...args) =>
207
+ resolveMsgAdvanced({
208
+ key,
209
+ args,
210
+ doRenderMarkdown: false
211
+ }) as string
205
212
  };
206
213
  }
207
214
 
208
215
  const keycloakifyExtraMessages = {
209
- "en": {
210
- "shouldBeEqual": "{0} should be equal to {1}",
211
- "shouldBeDifferent": "{0} should be different to {1}",
212
- "shouldMatchPattern": "Pattern should match: `/{0}/`",
213
- "mustBeAnInteger": "Must be an integer",
214
- "notAValidOption": "Not a valid option",
215
- "newPasswordSameAsOld": "New password must be different from the old one",
216
- "passwordConfirmNotMatch": "Password confirmation does not match"
216
+ en: {
217
+ shouldBeEqual: "{0} should be equal to {1}",
218
+ shouldBeDifferent: "{0} should be different to {1}",
219
+ shouldMatchPattern: "Pattern should match: `/{0}/`",
220
+ mustBeAnInteger: "Must be an integer",
221
+ notAValidOption: "Not a valid option",
222
+ newPasswordSameAsOld: "New password must be different from the old one",
223
+ passwordConfirmNotMatch: "Password confirmation does not match"
217
224
  },
218
- "fr": {
225
+ fr: {
219
226
  /* spell-checker: disable */
220
- "shouldBeEqual": "{0} doit être égal à {1}",
221
- "shouldBeDifferent": "{0} doit être différent de {1}",
222
- "shouldMatchPattern": "Dois respecter le schéma: `/{0}/`",
223
- "mustBeAnInteger": "Doit être un nombre entier",
224
- "notAValidOption": "N'est pas une option valide",
225
-
226
- "logoutConfirmTitle": "Déconnexion",
227
- "logoutConfirmHeader": "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
228
- "doLogout": "Se déconnecter",
229
- "newPasswordSameAsOld": "Le nouveau mot de passe doit être différent de l'ancien",
230
- "passwordConfirmNotMatch": "La confirmation du mot de passe ne correspond pas"
227
+ shouldBeEqual: "{0} doit être égal à {1}",
228
+ shouldBeDifferent: "{0} doit être différent de {1}",
229
+ shouldMatchPattern: "Dois respecter le schéma: `/{0}/`",
230
+ mustBeAnInteger: "Doit être un nombre entier",
231
+ notAValidOption: "N'est pas une option valide",
232
+
233
+ logoutConfirmTitle: "Déconnexion",
234
+ logoutConfirmHeader: "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
235
+ doLogout: "Se déconnecter",
236
+ newPasswordSameAsOld: "Le nouveau mot de passe doit être différent de l'ancien",
237
+ passwordConfirmNotMatch: "La confirmation du mot de passe ne correspond pas"
231
238
  /* spell-checker: enable */
232
239
  }
233
240
  };
@@ -4,7 +4,7 @@ export default Fallback;
4
4
 
5
5
  export { getKcContext } from "keycloakify/account/kcContext/getKcContext";
6
6
  export { createGetKcContext } from "keycloakify/account/kcContext/createGetKcContext";
7
- export type { AccountThemePageId as PageId } from "keycloakify/bin/keycloakify/generateFtl";
7
+ export type { AccountThemePageId as PageId } from "keycloakify/bin/shared/constants";
8
8
  export { createUseI18n } from "keycloakify/account/i18n/i18n";
9
9
 
10
10
  export type { PageProps } from "keycloakify/account/pages/PageProps";
@@ -1,9 +1,15 @@
1
- import type { AccountThemePageId } from "keycloakify/bin/keycloakify/generateFtl";
2
1
  import { assert } from "tsafe/assert";
3
2
  import type { Equals } from "tsafe";
4
- import { type ThemeType } from "keycloakify/bin/constants";
3
+ import type { ThemeType, AccountThemePageId } from "keycloakify/bin/shared/constants";
5
4
 
6
- export type KcContext = KcContext.Password | KcContext.Account | KcContext.Sessions | KcContext.Totp | KcContext.Applications | KcContext.Log;
5
+ export type KcContext =
6
+ | KcContext.Password
7
+ | KcContext.Account
8
+ | KcContext.Sessions
9
+ | KcContext.Totp
10
+ | KcContext.Applications
11
+ | KcContext.Log
12
+ | KcContext.FederatedIdentity;
7
13
 
8
14
  export declare namespace KcContext {
9
15
  export type Common = {
@@ -27,6 +33,7 @@ export declare namespace KcContext {
27
33
  sessionsUrl: string;
28
34
  applicationsUrl: string;
29
35
  logUrl: string;
36
+ logoutUrl: string;
30
37
  resourceUrl: string;
31
38
  resourcesCommonPath: string;
32
39
  resourcesPath: string;
@@ -61,7 +68,10 @@ export declare namespace KcContext {
61
68
  * @param text to return
62
69
  * @return text if message exists for given field, else undefined
63
70
  */
64
- printIfExists: <T extends string>(fieldName: string, text: T) => T | undefined;
71
+ printIfExists: <T extends string>(
72
+ fieldName: string,
73
+ text: T
74
+ ) => T | undefined;
65
75
  /**
66
76
  * Check if exists error message for given fields
67
77
  *
@@ -91,15 +101,6 @@ export declare namespace KcContext {
91
101
  username?: string;
92
102
  };
93
103
  properties: Record<string, string | undefined>;
94
- sessions: {
95
- sessions: {
96
- ipAddress: string;
97
- started?: any;
98
- lastAccess?: any;
99
- expires?: any;
100
- clients: string[];
101
- }[];
102
- };
103
104
  };
104
105
 
105
106
  export type Password = Common & {
@@ -126,11 +127,12 @@ export declare namespace KcContext {
126
127
  pageId: "sessions.ftl";
127
128
  sessions: {
128
129
  sessions: {
129
- ipAddress: string;
130
- started?: any;
131
- lastAccess?: any;
132
- expires?: any;
130
+ expires: string;
133
131
  clients: string[];
132
+ ipAddress: string;
133
+ started: string;
134
+ lastAccess: string;
135
+ id: string;
134
136
  }[];
135
137
  };
136
138
  stateChecker: string;
@@ -164,21 +166,6 @@ export declare namespace KcContext {
164
166
  };
165
167
  mode?: "qr" | "manual" | undefined | null;
166
168
  isAppInitiatedAction: boolean;
167
- url: {
168
- accountUrl: string;
169
- passwordUrl: string;
170
- totpUrl: string;
171
- socialUrl: string;
172
- sessionsUrl: string;
173
- applicationsUrl: string;
174
- logUrl: string;
175
- resourceUrl: string;
176
- resourcesCommonPath: string;
177
- resourcesPath: string;
178
- /** @deprecated, not present in recent keycloak version apparently, use kcContext.referrer instead */
179
- referrerURI?: string;
180
- getLogoutUrl: () => string;
181
- };
182
169
  stateChecker: string;
183
170
  };
184
171
 
@@ -193,12 +180,21 @@ export declare namespace KcContext {
193
180
  stateChecker: string;
194
181
  applications: {
195
182
  applications: {
196
- realmRolesAvailable: { name: string; description: string }[];
183
+ realmRolesAvailable: {
184
+ name: string;
185
+ description: string;
186
+ compositesStream?: Record<string, unknown>;
187
+ clientRole?: boolean;
188
+ composite?: boolean;
189
+ id?: string;
190
+ containerId?: string;
191
+ attributes?: Record<string, unknown>;
192
+ }[];
197
193
  resourceRolesAvailable: Record<
198
194
  string,
199
195
  {
200
196
  roleName: string;
201
- roleDescription: string;
197
+ roleDescription?: string;
202
198
  clientName: string;
203
199
  clientId: string;
204
200
  }[]
@@ -207,41 +203,44 @@ export declare namespace KcContext {
207
203
  clientScopesGranted: string[];
208
204
  effectiveUrl?: string;
209
205
  client: {
210
- consentScreenText: string;
211
- surrogateAuthRequired: boolean;
206
+ alwaysDisplayInConsole: boolean;
207
+ attributes: Record<string, unknown>;
208
+ authenticationFlowBindingOverrides: Record<string, unknown>;
209
+ baseUrl?: string;
212
210
  bearerOnly: boolean;
213
- id: string;
214
- protocolMappersStream: Record<string, unknown>;
215
- includeInTokenScope: boolean;
216
- redirectUris: string[];
217
- fullScopeAllowed: boolean;
218
- registeredNodes: Record<string, unknown>;
219
- enabled: boolean;
220
211
  clientAuthenticatorType: string;
221
- realmScopeMappingsStream: Record<string, unknown>;
222
- scopeMappingsStream: Record<string, unknown>;
223
- displayOnConsentScreen: boolean;
224
212
  clientId: string;
225
- rootUrl: string;
226
- authenticationFlowBindingOverrides: Record<string, unknown>;
227
- standardFlowEnabled: boolean;
228
- attributes: Record<string, unknown>;
229
- publicClient: boolean;
230
- alwaysDisplayInConsole: boolean;
231
213
  consentRequired: boolean;
232
- notBefore: string;
233
- rolesStream: Record<string, unknown>;
234
- protocol: string;
235
- dynamicScope: boolean;
214
+ consentScreenText: string;
215
+ description: string;
236
216
  directAccessGrantsEnabled: boolean;
237
- name: string;
238
- serviceAccountsEnabled: boolean;
217
+ displayOnConsentScreen: boolean;
218
+ dynamicScope: boolean;
219
+ enabled: boolean;
239
220
  frontchannelLogout: boolean;
240
- nodeReRegistrationTimeout: string;
221
+ fullScopeAllowed: boolean;
222
+ id: string;
241
223
  implicitFlowEnabled: boolean;
242
- baseUrl: string;
243
- webOrigins: string[];
224
+ includeInTokenScope: boolean;
225
+ managementUrl: string;
226
+ name?: string;
227
+ nodeReRegistrationTimeout: string;
228
+ notBefore: string;
229
+ protocol: string;
230
+ protocolMappersStream: Record<string, unknown>;
231
+ publicClient: boolean;
244
232
  realm: Record<string, unknown>;
233
+ realmScopeMappingsStream: Record<string, unknown>;
234
+ redirectUris: string[];
235
+ registeredNodes: Record<string, unknown>;
236
+ rolesStream: Record<string, unknown>;
237
+ rootUrl?: string;
238
+ scopeMappingsStream: Record<string, unknown>;
239
+ secret: string;
240
+ serviceAccountsEnabled: boolean;
241
+ standardFlowEnabled: boolean;
242
+ surrogateAuthRequired: boolean;
243
+ webOrigins: string[];
245
244
  };
246
245
  }[];
247
246
  };
@@ -254,9 +253,23 @@ export declare namespace KcContext {
254
253
  date: string | number | Date;
255
254
  event: string;
256
255
  ipAddress: string;
257
- client: any;
258
- details: any[];
256
+ client: string;
257
+ details: { value: string; key: string }[];
258
+ }[];
259
+ };
260
+ };
261
+
262
+ export type FederatedIdentity = Common & {
263
+ pageId: "federatedIdentity.ftl";
264
+ stateChecker: string;
265
+ federatedIdentity: {
266
+ identities: {
267
+ providerId: string;
268
+ displayName: string;
269
+ userName: string;
270
+ connected: boolean;
259
271
  }[];
272
+ removeLinkPossible: boolean;
260
273
  };
261
274
  };
262
275
  }
@@ -4,17 +4,28 @@ import { isStorybook } from "keycloakify/lib/isStorybook";
4
4
  import type { ExtendKcContext } from "./getKcContextFromWindow";
5
5
  import { getKcContextFromWindow } from "./getKcContextFromWindow";
6
6
  import { symToStr } from "tsafe/symToStr";
7
- import { kcContextMocks, kcContextCommonMock } from "keycloakify/account/kcContext/kcContextMocks";
8
-
9
- export function createGetKcContext<KcContextExtension extends { pageId: string } = never>(params?: {
7
+ import {
8
+ kcContextMocks,
9
+ kcContextCommonMock
10
+ } from "keycloakify/account/kcContext/kcContextMocks";
11
+
12
+ export function createGetKcContext<
13
+ KcContextExtension extends { pageId: string } = never
14
+ >(params?: {
10
15
  mockData?: readonly DeepPartial<ExtendKcContext<KcContextExtension>>[];
11
16
  mockProperties?: Record<string, string>;
12
17
  }) {
13
18
  const { mockData, mockProperties } = params ?? {};
14
19
 
15
- function getKcContext<PageId extends ExtendKcContext<KcContextExtension>["pageId"] | undefined = undefined>(params?: {
20
+ function getKcContext<
21
+ PageId extends
22
+ | ExtendKcContext<KcContextExtension>["pageId"]
23
+ | undefined = undefined
24
+ >(params?: {
16
25
  mockPageId?: PageId;
17
- storyPartialKcContext?: DeepPartial<Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>>;
26
+ storyPartialKcContext?: DeepPartial<
27
+ Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>
28
+ >;
18
29
  }): {
19
30
  kcContext: PageId extends undefined
20
31
  ? ExtendKcContext<KcContextExtension> | undefined
@@ -32,34 +43,46 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
32
43
  break warn_that_mock_is_enbaled;
33
44
  }
34
45
 
35
- console.log(`%cKeycloakify: ${symToStr({ mockPageId })} set to ${mockPageId}.`, "background: red; color: yellow; font-size: medium");
46
+ console.log(
47
+ `%cKeycloakify: ${symToStr({
48
+ mockPageId
49
+ })} set to ${mockPageId}.`,
50
+ "background: red; color: yellow; font-size: medium"
51
+ );
36
52
  }
37
53
 
38
- const kcContextDefaultMock = kcContextMocks.find(({ pageId }) => pageId === mockPageId);
54
+ const kcContextDefaultMock = kcContextMocks.find(
55
+ ({ pageId }) => pageId === mockPageId
56
+ );
39
57
 
40
58
  const partialKcContextCustomMock = (() => {
41
59
  const out: DeepPartial<ExtendKcContext<KcContextExtension>> = {};
42
60
 
43
- const mockDataPick = mockData?.find(({ pageId }) => pageId === mockPageId);
61
+ const mockDataPick = mockData?.find(
62
+ ({ pageId }) => pageId === mockPageId
63
+ );
44
64
 
45
65
  if (mockDataPick !== undefined) {
46
66
  deepAssign({
47
- "target": out,
48
- "source": mockDataPick
67
+ target: out,
68
+ source: mockDataPick
49
69
  });
50
70
  }
51
71
 
52
72
  if (storyPartialKcContext !== undefined) {
53
73
  deepAssign({
54
- "target": out,
55
- "source": storyPartialKcContext
74
+ target: out,
75
+ source: storyPartialKcContext
56
76
  });
57
77
  }
58
78
 
59
79
  return Object.keys(out).length === 0 ? undefined : out;
60
80
  })();
61
81
 
62
- if (kcContextDefaultMock === undefined && partialKcContextCustomMock === undefined) {
82
+ if (
83
+ kcContextDefaultMock === undefined &&
84
+ partialKcContextCustomMock === undefined
85
+ ) {
63
86
  console.warn(
64
87
  [
65
88
  `WARNING: You declared the non build in page ${mockPageId} but you didn't `,
@@ -72,21 +95,24 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
72
95
  const kcContext: any = {};
73
96
 
74
97
  deepAssign({
75
- "target": kcContext,
76
- "source": kcContextDefaultMock !== undefined ? kcContextDefaultMock : { "pageId": mockPageId, ...kcContextCommonMock }
98
+ target: kcContext,
99
+ source:
100
+ kcContextDefaultMock !== undefined
101
+ ? kcContextDefaultMock
102
+ : { pageId: mockPageId, ...kcContextCommonMock }
77
103
  });
78
104
 
79
105
  if (partialKcContextCustomMock !== undefined) {
80
106
  deepAssign({
81
- "target": kcContext,
82
- "source": partialKcContextCustomMock
107
+ target: kcContext,
108
+ source: partialKcContextCustomMock
83
109
  });
84
110
  }
85
111
 
86
112
  if (mockProperties !== undefined) {
87
113
  deepAssign({
88
- "target": kcContext.properties,
89
- "source": mockProperties
114
+ target: kcContext.properties,
115
+ source: mockProperties
90
116
  });
91
117
  }
92
118
 
@@ -94,14 +120,14 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
94
120
  }
95
121
 
96
122
  if (realKcContext === undefined) {
97
- return { "kcContext": undefined as any };
123
+ return { kcContext: undefined as any };
98
124
  }
99
125
 
100
126
  if (realKcContext.themeType !== "account") {
101
- return { "kcContext": undefined as any };
127
+ return { kcContext: undefined as any };
102
128
  }
103
129
 
104
- return { "kcContext": realKcContext as any };
130
+ return { kcContext: realKcContext as any };
105
131
  }
106
132
 
107
133
  return { getKcContext };
@@ -5,7 +5,9 @@ import { createGetKcContext } from "./createGetKcContext";
5
5
  /** NOTE: We now recommend using createGetKcContext instead of this function to make storybook integration easier
6
6
  * See: https://github.com/keycloakify/keycloakify-starter/blob/main/src/keycloak-theme/account/kcContext.ts
7
7
  */
8
- export function getKcContext<KcContextExtension extends { pageId: string } = never>(params?: {
8
+ export function getKcContext<
9
+ KcContextExtension extends { pageId: string } = never
10
+ >(params?: {
9
11
  mockPageId?: ExtendKcContext<KcContextExtension>["pageId"];
10
12
  mockData?: readonly DeepPartial<ExtendKcContext<KcContextExtension>>[];
11
13
  }): { kcContext: ExtendKcContext<KcContextExtension> | undefined } {
@@ -1,11 +1,15 @@
1
1
  import type { AndByDiscriminatingKey } from "keycloakify/tools/AndByDiscriminatingKey";
2
- import { nameOfTheGlobal } from "keycloakify/bin/constants";
2
+ import { nameOfTheGlobal } from "keycloakify/bin/shared/constants";
3
3
  import type { KcContext } from "./KcContext";
4
4
 
5
- export type ExtendKcContext<KcContextExtension extends { pageId: string }> = [KcContextExtension] extends [never]
5
+ export type ExtendKcContext<KcContextExtension extends { pageId: string }> = [
6
+ KcContextExtension
7
+ ] extends [never]
6
8
  ? KcContext
7
9
  : AndByDiscriminatingKey<"pageId", KcContextExtension & KcContext.Common, KcContext>;
8
10
 
9
- export function getKcContextFromWindow<KcContextExtension extends { pageId: string } = never>(): ExtendKcContext<KcContextExtension> | undefined {
11
+ export function getKcContextFromWindow<
12
+ KcContextExtension extends { pageId: string } = never
13
+ >(): ExtendKcContext<KcContextExtension> | undefined {
10
14
  return typeof window === "undefined" ? undefined : (window as any)[nameOfTheGlobal];
11
15
  }