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
@@ -43,7 +43,7 @@ export default function UserProfileFormFields(props: UserProfileFormFieldsProps)
43
43
  onIsFormSubmittableValueChange(isFormSubmittable);
44
44
  }, [isFormSubmittable]);
45
45
 
46
- const groupNameRef = { "current": "" };
46
+ const groupNameRef = { current: "" };
47
47
 
48
48
  return (
49
49
  <>
@@ -62,7 +62,9 @@ export default function UserProfileFormFields(props: UserProfileFormFieldsProps)
62
62
  )}
63
63
  <div
64
64
  className={getClassName("kcFormGroupClass")}
65
- style={{ "display": attribute.name === "password-confirm" && !doMakeUserConfirmPassword ? "none" : undefined }}
65
+ style={{
66
+ display: attribute.name === "password-confirm" && !doMakeUserConfirmPassword ? "none" : undefined
67
+ }}
66
68
  >
67
69
  <div className={getClassName("kcLabelWrapperClass")}>
68
70
  <label htmlFor={attribute.name} className={getClassName("kcLabelClass")}>
@@ -201,18 +203,15 @@ function FieldErrors(props: {
201
203
  <span
202
204
  id={`input-error-${attribute.name}${fieldIndex === undefined ? "" : `-${fieldIndex}`}`}
203
205
  className={getClassName("kcInputErrorMessageClass")}
204
- style={{
205
- "position": displayableErrors.length === 1 ? "absolute" : undefined
206
- }}
207
206
  aria-live="polite"
208
207
  >
209
208
  {displayableErrors
210
209
  .filter(error => error.fieldIndex === fieldIndex)
211
210
  .map(({ errorMessage }, i, arr) => (
212
- <>
211
+ <Fragment key={i}>
213
212
  <span key={i}>{errorMessage}</span>
214
213
  {arr.length - 1 !== i && <br />}
215
- </>
214
+ </Fragment>
216
215
  ))}
217
216
  </span>
218
217
  );
@@ -345,9 +344,9 @@ function InputTag(props: InputFiledByTypeProps & { fieldIndex: number | undefine
345
344
  {...Object.fromEntries(Object.entries(attribute.html5DataAnnotations ?? {}).map(([key, value]) => [`data-${key}`, value]))}
346
345
  onChange={event =>
347
346
  formValidationDispatch({
348
- "action": "update",
349
- "name": attribute.name,
350
- "valueOrValues": (() => {
347
+ action: "update",
348
+ name: attribute.name,
349
+ valueOrValues: (() => {
351
350
  if (fieldIndex !== undefined) {
352
351
  assert(valueOrValues instanceof Array);
353
352
 
@@ -366,9 +365,9 @@ function InputTag(props: InputFiledByTypeProps & { fieldIndex: number | undefine
366
365
  }
367
366
  onBlur={() =>
368
367
  props.formValidationDispatch({
369
- "action": "focus lost",
370
- "name": attribute.name,
371
- "fieldIndex": fieldIndex
368
+ action: "focus lost",
369
+ name: attribute.name,
370
+ fieldIndex: fieldIndex
372
371
  })
373
372
  }
374
373
  />
@@ -487,9 +486,9 @@ function AddRemoveButtonsMultiValuedAttribute(props: {
487
486
  className="pf-c-button pf-m-inline pf-m-link"
488
487
  onClick={() =>
489
488
  dispatchFormAction({
490
- "action": "update",
491
- "name": attribute.name,
492
- "valueOrValues": values.filter((_, i) => i !== fieldIndex)
489
+ action: "update",
490
+ name: attribute.name,
491
+ valueOrValues: values.filter((_, i) => i !== fieldIndex)
493
492
  })
494
493
  }
495
494
  >
@@ -504,9 +503,9 @@ function AddRemoveButtonsMultiValuedAttribute(props: {
504
503
  className="pf-c-button pf-m-inline pf-m-link"
505
504
  onClick={() =>
506
505
  dispatchFormAction({
507
- "action": "update",
508
- "name": attribute.name,
509
- "valueOrValues": [...values, ""]
506
+ action: "update",
507
+ name: attribute.name,
508
+ valueOrValues: [...values, ""]
510
509
  })
511
510
  }
512
511
  >
@@ -530,17 +529,17 @@ function InputTagSelects(props: InputFiledByTypeProps) {
530
529
  switch (inputType) {
531
530
  case "select-radiobuttons":
532
531
  return {
533
- "inputType": "radio",
534
- "classDiv": getClassName("kcInputClassRadio"),
535
- "classInput": getClassName("kcInputClassRadioInput"),
536
- "classLabel": getClassName("kcInputClassRadioLabel")
532
+ inputType: "radio",
533
+ classDiv: getClassName("kcInputClassRadio"),
534
+ classInput: getClassName("kcInputClassRadioInput"),
535
+ classLabel: getClassName("kcInputClassRadioLabel")
537
536
  };
538
537
  case "multiselect-checkboxes":
539
538
  return {
540
- "inputType": "checkbox",
541
- "classDiv": getClassName("kcInputClassCheckbox"),
542
- "classInput": getClassName("kcInputClassCheckboxInput"),
543
- "classLabel": getClassName("kcInputClassCheckboxLabel")
539
+ inputType: "checkbox",
540
+ classDiv: getClassName("kcInputClassCheckbox"),
541
+ classInput: getClassName("kcInputClassCheckboxInput"),
542
+ classLabel: getClassName("kcInputClassCheckboxLabel")
544
543
  };
545
544
  }
546
545
  })();
@@ -584,9 +583,9 @@ function InputTagSelects(props: InputFiledByTypeProps) {
584
583
  checked={valueOrValues.includes(option)}
585
584
  onChange={event =>
586
585
  formValidationDispatch({
587
- "action": "update",
588
- "name": attribute.name,
589
- "valueOrValues": (() => {
586
+ action: "update",
587
+ name: attribute.name,
588
+ valueOrValues: (() => {
590
589
  const isChecked = event.target.checked;
591
590
 
592
591
  if (valueOrValues instanceof Array) {
@@ -607,9 +606,9 @@ function InputTagSelects(props: InputFiledByTypeProps) {
607
606
  }
608
607
  onBlur={() =>
609
608
  formValidationDispatch({
610
- "action": "focus lost",
611
- "name": attribute.name,
612
- "fieldIndex": undefined
609
+ action: "focus lost",
610
+ name: attribute.name,
611
+ fieldIndex: undefined
613
612
  })
614
613
  }
615
614
  />
@@ -645,16 +644,16 @@ function TextareaTag(props: InputFiledByTypeProps) {
645
644
  value={value}
646
645
  onChange={event =>
647
646
  formValidationDispatch({
648
- "action": "update",
649
- "name": attribute.name,
650
- "valueOrValues": event.target.value
647
+ action: "update",
648
+ name: attribute.name,
649
+ valueOrValues: event.target.value
651
650
  })
652
651
  }
653
652
  onBlur={() =>
654
653
  formValidationDispatch({
655
- "action": "focus lost",
656
- "name": attribute.name,
657
- "fieldIndex": undefined
654
+ action: "focus lost",
655
+ name: attribute.name,
656
+ fieldIndex: undefined
658
657
  })
659
658
  }
660
659
  />
@@ -680,9 +679,9 @@ function SelectTag(props: InputFiledByTypeProps) {
680
679
  value={valueOrValues}
681
680
  onChange={event =>
682
681
  formValidationDispatch({
683
- "action": "update",
684
- "name": attribute.name,
685
- "valueOrValues": (() => {
682
+ action: "update",
683
+ name: attribute.name,
684
+ valueOrValues: (() => {
686
685
  if (isMultiple) {
687
686
  return Array.from(event.target.selectedOptions).map(option => option.value);
688
687
  }
@@ -693,9 +692,9 @@ function SelectTag(props: InputFiledByTypeProps) {
693
692
  }
694
693
  onBlur={() =>
695
694
  formValidationDispatch({
696
- "action": "focus lost",
697
- "name": attribute.name,
698
- "fieldIndex": undefined
695
+ action: "focus lost",
696
+ name: attribute.name,
697
+ fieldIndex: undefined
699
698
  })
700
699
  }
701
700
  >
@@ -705,12 +704,12 @@ function SelectTag(props: InputFiledByTypeProps) {
705
704
  walk: {
706
705
  const { inputOptionsFromValidation } = attribute.annotations;
707
706
 
708
- assert(typeof inputOptionsFromValidation === "string");
709
-
710
707
  if (inputOptionsFromValidation === undefined) {
711
708
  break walk;
712
709
  }
713
710
 
711
+ assert(typeof inputOptionsFromValidation === "string");
712
+
714
713
  const validator = (attribute.validators as Record<string, { options?: string[] }>)[inputOptionsFromValidation];
715
714
 
716
715
  if (validator === undefined) {
@@ -342,7 +342,7 @@ const messages= {
342
342
  "locale_nl": "neerlandès",
343
343
  "locale_no": "noruec",
344
344
  "locale_pl": "polonès",
345
- "locale_pt_BR": "portuguès (Brasil)",
345
+ "locale_pt-BR": "portuguès (Brasil)",
346
346
  "locale_ru": "rus",
347
347
  "locale_sk": "eslovè",
348
348
  "locale_sv": "suec",
@@ -337,7 +337,6 @@ const messages= {
337
337
  "locale_nl": "Nederlands",
338
338
  "locale_no": "Norsk",
339
339
  "locale_pl": "Polski",
340
- "locale_pt_BR": "Português (Brasil)",
341
340
  "locale_pt-BR": "Português (Brasil)",
342
341
  "locale_ru": "Русский",
343
342
  "locale_sk": "Slovenčina",
@@ -349,7 +349,7 @@ const messages= {
349
349
  "locale_nl": "Nederlands",
350
350
  "locale_no": "Norsk",
351
351
  "locale_pl": "Polski",
352
- "locale_pt_BR": "Português (Brasil)",
352
+ "locale_pt-BR": "Português (Brasil)",
353
353
  "locale_ru": "Русский",
354
354
  "locale_sk": "Slovenčina",
355
355
  "locale_sv": "Svenska",
@@ -376,7 +376,7 @@ const messages= {
376
376
  "locale_nl": "Nederlands",
377
377
  "locale_no": "Norsk",
378
378
  "locale_pl": "Polski",
379
- "locale_pt_BR": "Português (Brasil)",
379
+ "locale_pt-BR": "Português (Brasil)",
380
380
  "locale_ru": "Русский",
381
381
  "locale_sk": "Slovenčina",
382
382
  "locale_sv": "Svenska",
@@ -338,7 +338,6 @@ const messages= {
338
338
  "locale_nl": "Nederlands",
339
339
  "locale_no": "Norsk",
340
340
  "locale_pl": "Polski",
341
- "locale_pt_BR": "Português (Brasil)",
342
341
  "locale_pt-BR": "Português (Brasil)",
343
342
  "locale_ru": "Русский",
344
343
  "locale_sk": "Slovenčina",
@@ -342,7 +342,7 @@ const messages= {
342
342
  "locale_nl": "Nederlands",
343
343
  "locale_no": "Norsk",
344
344
  "locale_pl": "Polski",
345
- "locale_pt_BR": "Português (Brasil)",
345
+ "locale_pt-BR": "Português (Brasil)",
346
346
  "locale_ru": "Русский",
347
347
  "locale_sk": "Slovenčina",
348
348
  "locale_sv": "Svenska",
@@ -346,7 +346,7 @@ const messages= {
346
346
  "locale_nl": "Nederlands",
347
347
  "locale_no": "Norsk",
348
348
  "locale_pl": "Polski",
349
- "locale_pt_BR": "Português (Brasil)",
349
+ "locale_pt-BR": "Português (Brasil)",
350
350
  "locale_ru": "Русский",
351
351
  "locale_sk": "Slovenčina",
352
352
  "locale_sv": "Svenska",
@@ -1,11 +1,9 @@
1
1
  import "minimal-polyfills/Object.fromEntries";
2
- //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35
3
2
  import { useEffect, useState, useRef } from "react";
4
3
  import fallbackMessages from "./baseMessages/en";
5
4
  import { getMessages } from "./baseMessages";
6
5
  import { assert } from "tsafe/assert";
7
6
  import type { KcContext } from "../kcContext/KcContext";
8
- import { Markdown } from "keycloakify/tools/Markdown";
9
7
 
10
8
  export const fallbackLanguageTag = "en";
11
9
 
@@ -14,6 +12,7 @@ export type KcContextLike = {
14
12
  currentLanguageTag: string;
15
13
  supported: { languageTag: string; url: string; label: string }[];
16
14
  };
15
+ __localizationRealmOverridesUserProfile: Record<string, string>;
17
16
  };
18
17
 
19
18
  assert<KcContext extends KcContextLike ? true : false>();
@@ -28,11 +27,10 @@ export type GenericI18n<MessageKey extends string> = {
28
27
  */
29
28
  currentLanguageTag: string;
30
29
  /**
31
- * To call when the user switch language.
32
- * This will cause the page to be reloaded,
33
- * on next load currentLanguageTag === newLanguageTag
30
+ * Redirect to this url to change the language.
31
+ * After reload currentLanguageTag === newLanguageTag
34
32
  */
35
- changeLocale: (newLanguageTag: string) => never;
33
+ getChangeLocalUrl: (newLanguageTag: string) => string;
36
34
  /**
37
35
  * e.g. "en" => "English", "fr" => "Français", ...
38
36
  *
@@ -63,7 +61,7 @@ export type GenericI18n<MessageKey extends string> = {
63
61
  /**
64
62
  * Examples assuming currentLanguageTag === "en"
65
63
  * advancedMsg("${access-denied} foo bar") === msg("access-denied") + " foo bar" === "Access denied foo bar"
66
- * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === "not-a-message-key"
64
+ * advancedMsg("${not-a-message-key}") === advancedMsg("not-a-message-key") === "not-a-message-key"
67
65
  */
68
66
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
69
67
  };
@@ -92,19 +90,20 @@ export function createUseI18n<ExtraMessageKey extends string = never>(extraMessa
92
90
 
93
91
  setI18n({
94
92
  ...createI18nTranslationFunctions({
95
- "fallbackMessages": {
93
+ fallbackMessages: {
96
94
  ...fallbackMessages,
97
95
  ...(keycloakifyExtraMessages[fallbackLanguageTag] ?? {}),
98
96
  ...(extraMessages[fallbackLanguageTag] ?? {})
99
97
  } as any,
100
- "messages": {
98
+ messages: {
101
99
  ...(await getMessages(currentLanguageTag)),
102
100
  ...((keycloakifyExtraMessages as any)[currentLanguageTag] ?? {}),
103
101
  ...(extraMessages[currentLanguageTag] ?? {})
104
- } as any
102
+ } as any,
103
+ __localizationRealmOverridesUserProfile: kcContext.__localizationRealmOverridesUserProfile
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
  });
@@ -133,11 +130,12 @@ export function createUseI18n<ExtraMessageKey extends string = never>(extraMessa
133
130
  function createI18nTranslationFunctions<MessageKey extends string>(params: {
134
131
  fallbackMessages: Record<MessageKey, string>;
135
132
  messages: Record<MessageKey, string>;
133
+ __localizationRealmOverridesUserProfile: Record<string, string>;
136
134
  }): Pick<GenericI18n<MessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
137
- const { fallbackMessages, messages } = params;
135
+ const { fallbackMessages, messages /*__localizationRealmOverridesUserProfile*/ } = params;
138
136
 
139
- function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): string | JSX.Element | undefined {
140
- const { key, args, doRenderMarkdown } = props;
137
+ function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): string | JSX.Element | undefined {
138
+ const { key, args, doRenderAsHtml } = props;
141
139
 
142
140
  const messageOrUndefined: string | undefined = (messages as any)[key] ?? (fallbackMessages as any)[key];
143
141
 
@@ -166,70 +164,95 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
166
164
  return;
167
165
  }
168
166
 
169
- messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg);
167
+ messageWithArgsInjected = messageWithArgsInjected.replace(
168
+ new RegExp(`\\{${i + startIndex}\\}`, "g"),
169
+ arg.replace(/</g, "&lt;").replace(/>/g, "&gt;")
170
+ );
170
171
  });
171
172
 
172
173
  return messageWithArgsInjected;
173
174
  })();
174
175
 
175
- return doRenderMarkdown ? (
176
- <Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
177
- {messageWithArgsInjectedIfAny}
178
- </Markdown>
176
+ return doRenderAsHtml ? (
177
+ <span
178
+ // NOTE: The message is trusted. The arguments are not but are escaped.
179
+ dangerouslySetInnerHTML={{
180
+ __html: messageWithArgsInjectedIfAny
181
+ }}
182
+ />
179
183
  ) : (
180
184
  messageWithArgsInjectedIfAny
181
185
  );
182
186
  }
183
187
 
184
- function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): JSX.Element | string {
185
- const { key, args, doRenderMarkdown } = props;
188
+ function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): JSX.Element | string {
189
+ const { key, args, doRenderAsHtml } = props;
190
+
191
+ // TODO:
192
+ /*
193
+ if( key in __localizationRealmOverridesUserProfile ){
194
+
195
+
196
+
197
+ }
198
+ */
186
199
 
187
200
  const match = key.match(/^\$\{([^{]+)\}$/);
188
201
 
189
202
  const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
190
203
 
191
204
  const out = resolveMsg({
192
- "key": keyUnwrappedFromCurlyBraces,
205
+ key: keyUnwrappedFromCurlyBraces,
193
206
  args,
194
- doRenderMarkdown
207
+ doRenderAsHtml
195
208
  });
196
209
 
197
- return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
210
+ return (out !== undefined ? out : doRenderAsHtml ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
198
211
  }
199
212
 
200
213
  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
214
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }) as string,
215
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: true }) as JSX.Element,
216
+ advancedMsg: (key, ...args) =>
217
+ resolveMsgAdvanced({
218
+ key,
219
+ args,
220
+ doRenderAsHtml: true
221
+ }) as JSX.Element,
222
+ advancedMsgStr: (key, ...args) =>
223
+ resolveMsgAdvanced({
224
+ key,
225
+ args,
226
+ doRenderAsHtml: false
227
+ }) as string
205
228
  };
206
229
  }
207
230
 
208
231
  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
- "selectAnOption": "Select an option",
216
- "remove": "Remove",
217
- "addValue": "Add value"
232
+ en: {
233
+ shouldBeEqual: "{0} should be equal to {1}",
234
+ shouldBeDifferent: "{0} should be different to {1}",
235
+ shouldMatchPattern: "Pattern should match: `/{0}/`",
236
+ mustBeAnInteger: "Must be an integer",
237
+ notAValidOption: "Not a valid option",
238
+ selectAnOption: "Select an option",
239
+ remove: "Remove",
240
+ addValue: "Add value"
218
241
  },
219
- "fr": {
242
+ fr: {
220
243
  /* spell-checker: disable */
221
- "shouldBeEqual": "{0} doit être égal à {1}",
222
- "shouldBeDifferent": "{0} doit être différent de {1}",
223
- "shouldMatchPattern": "Dois respecter le schéma: `/{0}/`",
224
- "mustBeAnInteger": "Doit être un nombre entier",
225
- "notAValidOption": "N'est pas une option valide",
226
-
227
- "logoutConfirmTitle": "Déconnexion",
228
- "logoutConfirmHeader": "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
229
- "doLogout": "Se déconnecter",
230
- "selectAnOption": "Sélectionner une option",
231
- "remove": "Supprimer",
232
- "addValue": "Ajouter une valeur"
244
+ shouldBeEqual: "{0} doit être égal à {1}",
245
+ shouldBeDifferent: "{0} doit être différent de {1}",
246
+ shouldMatchPattern: "Dois respecter le schéma: `/{0}/`",
247
+ mustBeAnInteger: "Doit être un nombre entier",
248
+ notAValidOption: "N'est pas une option valide",
249
+
250
+ logoutConfirmTitle: "Déconnexion",
251
+ logoutConfirmHeader: "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
252
+ doLogout: "Se déconnecter",
253
+ selectAnOption: "Sélectionner une option",
254
+ remove: "Supprimer",
255
+ addValue: "Ajouter une valeur"
233
256
  /* spell-checker: enable */
234
257
  }
235
258
  };
@@ -5,7 +5,7 @@ export default Fallback;
5
5
  export { useDownloadTerms } from "keycloakify/login/lib/useDownloadTerms";
6
6
  export { getKcContext } from "keycloakify/login/kcContext/getKcContext";
7
7
  export { createGetKcContext } from "keycloakify/login/kcContext/createGetKcContext";
8
- export type { LoginThemePageId as PageId } from "keycloakify/bin/keycloakify/generateFtl";
8
+ export type { LoginThemePageId as PageId } from "keycloakify/bin/shared/constants";
9
9
  export { createUseI18n } from "keycloakify/login/i18n/i18n";
10
10
 
11
11
  export type { PageProps } from "keycloakify/login/pages/PageProps";
@@ -1,10 +1,16 @@
1
- import type { LoginThemePageId } from "keycloakify/bin/keycloakify/generateFtl";
2
- import { type ThemeType } from "keycloakify/bin/constants";
1
+ import type {
2
+ ThemeType,
3
+ LoginThemePageId,
4
+ nameOfTheLocalizationRealmOverridesUserProfileProperty
5
+ } from "keycloakify/bin/shared/constants";
3
6
  import { assert } from "tsafe/assert";
4
7
  import type { Equals } from "tsafe";
5
8
  import type { MessageKey } from "../i18n/i18n";
6
9
 
7
- type ExtractAfterStartingWith<Prefix extends string, StrEnum> = StrEnum extends `${Prefix}${infer U}` ? U : never;
10
+ type ExtractAfterStartingWith<
11
+ Prefix extends string,
12
+ StrEnum
13
+ > = StrEnum extends `${Prefix}${infer U}` ? U : never;
8
14
 
9
15
  /** Take theses type definition with a grain of salt.
10
16
  * Some values might be undefined on some pages.
@@ -104,7 +110,10 @@ export declare namespace KcContext {
104
110
  * @param text to return
105
111
  * @return text if message exists for given field, else undefined
106
112
  */
107
- printIfExists: <T extends string>(fieldName: string, text: T) => T | undefined;
113
+ printIfExists: <T extends string>(
114
+ fieldName: string,
115
+ text: T
116
+ ) => T | undefined;
108
117
  /**
109
118
  * Check if exists error message for given fields
110
119
  *
@@ -135,6 +144,7 @@ export declare namespace KcContext {
135
144
  tabId: string;
136
145
  ssoLoginInOtherTabsUrl: string;
137
146
  };
147
+ __localizationRealmOverridesUserProfile: Record<string, string>;
138
148
  };
139
149
 
140
150
  export type SamlPostForm = Common & {
@@ -745,3 +755,12 @@ export type PasswordPolicies = {
745
755
  /** Whether the password can be the email address */
746
756
  notEmail?: boolean;
747
757
  };
758
+
759
+ assert<
760
+ KcContext.Common extends Record<
761
+ typeof nameOfTheLocalizationRealmOverridesUserProfileProperty,
762
+ unknown
763
+ >
764
+ ? true
765
+ : false
766
+ >();