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
@@ -1,291 +1,202 @@
1
1
  <script>const _=
2
- <#assign pageId="PAGE_ID_xIgLsPgGId9D8e">
3
2
  (()=>{
4
-
5
- const out = ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc};
6
-
7
- out["msg"]= function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); };
8
- out["advancedMsg"]= function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); };
9
-
10
- out["messagesPerField"]= {
11
- <#assign fieldNames = [ FIELD_NAMES_eKsIY4ZsZ4xeM ]>
12
-
13
- <#attempt>
14
- <#if profile?? && profile.attributes?? && profile.attributes?is_enumerable>
15
- <#list profile.attributes as attribute>
16
- <#if fieldNames?seq_contains(attribute.name)>
17
- <#continue>
3
+ <#assign pageId="PAGE_ID_xIgLsPgGId9D8e">
4
+ const out = ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc};
5
+ out["messagesPerField"]= {
6
+ <#assign fieldNames = [ FIELD_NAMES_eKsIY4ZsZ4xeM ]>
7
+ <#attempt>
8
+ <#if profile?? && profile.attributes?? && profile.attributes?is_enumerable>
9
+ <#list profile.attributes as attribute>
10
+ <#if fieldNames?seq_contains(attribute.name)>
11
+ <#continue>
12
+ </#if>
13
+ <#assign fieldNames += [attribute.name]>
14
+ </#list>
15
+ </#if>
16
+ <#recover>
17
+ </#attempt>
18
+ "printIfExists": function (fieldName, text) {
19
+ <#if !messagesPerField?? || !(messagesPerField?is_hash)>
20
+ throw new Error("You're not supposed to use messagesPerField.printIfExists in this page");
21
+ <#else>
22
+ <#list fieldNames as fieldName>
23
+ if(fieldName === "${fieldName}" ){
24
+ <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
25
+ <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
26
+ <#assign doExistErrorOnUsernameOrPassword = "">
27
+ <#attempt>
28
+ <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
29
+ <#recover>
30
+ <#assign doExistErrorOnUsernameOrPassword = true>
31
+ </#attempt>
32
+ return <#if doExistErrorOnUsernameOrPassword>text<#else>undefined</#if>
33
+ <#else>
34
+ <#assign doExistMessageForField = "">
35
+ <#attempt>
36
+ <#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
37
+ <#recover>
38
+ <#assign doExistMessageForField = true>
39
+ </#attempt>
40
+ return <#if doExistMessageForField>text<#else>undefined</#if>;
18
41
  </#if>
19
- <#assign fieldNames += [attribute.name]>
20
- </#list>
21
- </#if>
22
- <#recover>
23
- </#attempt>
24
-
25
- "printIfExists": function (fieldName, text) {
26
-
42
+ }
43
+ </#list>
44
+ throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
45
+ </#if>
46
+ },
47
+ "existsError": function (){
48
+ function existsError_singleFieldName(fieldName) {
27
49
  <#if !messagesPerField?? || !(messagesPerField?is_hash)>
28
50
  throw new Error("You're not supposed to use messagesPerField.printIfExists in this page");
29
51
  <#else>
30
52
  <#list fieldNames as fieldName>
31
53
  if(fieldName === "${fieldName}" ){
32
-
33
54
  <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
34
55
  <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
35
-
36
56
  <#assign doExistErrorOnUsernameOrPassword = "">
37
-
38
57
  <#attempt>
39
58
  <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
40
59
  <#recover>
41
60
  <#assign doExistErrorOnUsernameOrPassword = true>
42
61
  </#attempt>
43
-
44
- <#if doExistErrorOnUsernameOrPassword>
45
- return text;
46
- <#else>
47
-
48
- <#assign doExistMessageForField = "">
49
-
50
- <#attempt>
51
- <#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
52
- <#recover>
53
- <#assign doExistMessageForField = true>
54
- </#attempt>
55
-
56
- return <#if doExistMessageForField>text<#else>undefined</#if>;
57
-
58
- </#if>
59
-
62
+ return <#if doExistErrorOnUsernameOrPassword>true<#else>false</#if>;
60
63
  <#else>
61
-
62
- <#assign doExistMessageForField = "">
63
-
64
+ <#assign doExistErrorMessageForField = "">
64
65
  <#attempt>
65
- <#assign doExistMessageForField = messagesPerField.exists('${fieldName}')>
66
+ <#assign doExistErrorMessageForField = messagesPerField.existsError('${fieldName}')>
66
67
  <#recover>
67
- <#assign doExistMessageForField = true>
68
+ <#assign doExistErrorMessageForField = true>
68
69
  </#attempt>
69
-
70
- return <#if doExistMessageForField>text<#else>undefined</#if>;
71
-
70
+ return <#if doExistErrorMessageForField>true<#else>false</#if>;
72
71
  </#if>
73
-
74
-
75
72
  }
76
73
  </#list>
77
-
78
74
  throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
79
75
  </#if>
80
-
81
- },
82
- "existsError": function (){
83
-
84
- function existsError_singleFieldName(fieldName) {
85
-
86
- <#if !messagesPerField?? || !(messagesPerField?is_hash)>
87
- throw new Error("You're not supposed to use messagesPerField.printIfExists in this page");
88
- <#else>
89
- <#list fieldNames as fieldName>
90
- if(fieldName === "${fieldName}" ){
91
-
92
- <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
93
- <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
94
-
95
- <#assign doExistErrorOnUsernameOrPassword = "">
96
-
97
- <#attempt>
98
- <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
99
- <#recover>
100
- <#assign doExistErrorOnUsernameOrPassword = true>
101
- </#attempt>
102
-
103
- return <#if doExistErrorOnUsernameOrPassword>true<#else>false</#if>;
104
-
105
- <#else>
106
-
107
- <#assign doExistErrorMessageForField = "">
108
-
109
- <#attempt>
110
- <#assign doExistErrorMessageForField = messagesPerField.existsError('${fieldName}')>
111
- <#recover>
112
- <#assign doExistErrorMessageForField = true>
113
- </#attempt>
114
-
115
- return <#if doExistErrorMessageForField>true<#else>false</#if>;
116
-
117
- </#if>
118
-
119
- }
120
- </#list>
121
-
122
- throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
123
-
124
- </#if>
125
-
126
- }
127
-
128
- for( let i = 0; i < arguments.length; i++ ){
129
-
130
- if( existsError_singleFieldName(arguments[i]) ){
131
- return true;
132
- }
133
-
76
+ }
77
+ for( let i = 0; i < arguments.length; i++ ){
78
+ if( existsError_singleFieldName(arguments[i]) ){
79
+ return true;
134
80
  }
135
-
136
- return false;
137
-
138
- },
139
- "get": function (fieldName) {
140
-
141
-
142
- <#if !messagesPerField?? || !(messagesPerField?is_hash)>
143
- throw new Error("You're not supposed to use messagesPerField.get in this page");
144
- <#else>
145
- <#list fieldNames as fieldName>
146
- if(fieldName === "${fieldName}" ){
147
-
148
- <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
149
- <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
150
-
151
- <#assign doExistErrorOnUsernameOrPassword = "">
152
-
153
- <#attempt>
154
- <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
155
- <#recover>
156
- <#assign doExistErrorOnUsernameOrPassword = true>
157
- </#attempt>
158
-
159
- <#if doExistErrorOnUsernameOrPassword>
160
-
161
- <#attempt>
162
- return "${kcSanitize(msg('invalidUserMessage'))?no_esc}";
163
- <#recover>
164
- return "Invalid username or password.";
165
- </#attempt>
166
-
167
- <#else>
168
-
169
- <#attempt>
170
- return "${messagesPerField.get('${fieldName}')?no_esc}";
171
- <#recover>
172
- return "";
173
- </#attempt>
174
-
175
- </#if>
176
-
177
- <#else>
178
-
179
- <#attempt>
180
- return "${messagesPerField.get('${fieldName}')?no_esc}";
181
- <#recover>
182
- return "invalid field";
183
- </#attempt>
184
-
185
- </#if>
186
-
187
- }
188
- </#list>
189
-
190
- throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
191
-
192
- </#if>
193
-
194
- },
195
- "exists": function (fieldName) {
196
-
197
- <#if !messagesPerField?? || !(messagesPerField?is_hash)>
198
- throw new Error("You're not supposed to use messagesPerField.exists in this page");
199
- <#else>
200
- <#list fieldNames as fieldName>
201
- if(fieldName === "${fieldName}" ){
202
-
203
- <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
204
- <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
205
-
206
- <#assign doExistErrorOnUsernameOrPassword = "">
207
-
81
+ }
82
+ return false;
83
+ },
84
+ "get": function (fieldName) {
85
+ <#if !messagesPerField?? || !(messagesPerField?is_hash)>
86
+ throw new Error("You're not supposed to use messagesPerField.get in this page");
87
+ <#else>
88
+ <#list fieldNames as fieldName>
89
+ if(fieldName === "${fieldName}" ){
90
+ <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
91
+ <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
92
+ <#assign doExistErrorOnUsernameOrPassword = "">
93
+ <#attempt>
94
+ <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
95
+ <#recover>
96
+ <#assign doExistErrorOnUsernameOrPassword = true>
97
+ </#attempt>
98
+ <#if doExistErrorOnUsernameOrPassword>
208
99
  <#attempt>
209
- <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
100
+ return decodeHtmlEntities("${msg('invalidUserMessage')?js_string}");
210
101
  <#recover>
211
- <#assign doExistErrorOnUsernameOrPassword = true>
102
+ return "Invalid username or password.";
212
103
  </#attempt>
213
-
214
- return <#if doExistErrorOnUsernameOrPassword>true<#else>false</#if>;
215
-
216
104
  <#else>
217
-
218
- <#assign doExistErrorMessageForField = "">
219
-
220
- <#attempt>
221
- <#assign doExistErrorMessageForField = messagesPerField.exists('${fieldName}')>
222
- <#recover>
223
- <#assign doExistErrorMessageForField = true>
224
- </#attempt>
225
-
226
- return <#if doExistErrorMessageForField>true<#else>false</#if>;
227
-
105
+ return "";
228
106
  </#if>
229
-
230
- }
231
- </#list>
232
-
233
- throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
234
- </#if>
235
-
236
- },
237
- "getFirstError": function () {
238
-
239
- for( let i = 0; i < arguments.length; i++ ){
240
-
241
- const fieldName = arguments[i];
242
-
243
- if( out.messagesPerField.existsError(fieldName) ){
244
- return out.messagesPerField.get(fieldName);
107
+ <#else>
108
+ <#attempt>
109
+ return decodeHtmlEntities("${messagesPerField.get('${fieldName}')?js_string}");
110
+ <#recover>
111
+ return "Invalid field";
112
+ </#attempt>
113
+ </#if>
245
114
  }
246
-
115
+ </#list>
116
+ throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
117
+ </#if>
118
+ },
119
+ "exists": function (fieldName) {
120
+ <#if !messagesPerField?? || !(messagesPerField?is_hash)>
121
+ throw new Error("You're not supposed to use messagesPerField.exists in this page");
122
+ <#else>
123
+ <#list fieldNames as fieldName>
124
+ if(fieldName === "${fieldName}" ){
125
+ <#-- https://github.com/keycloakify/keycloakify/pull/218 -->
126
+ <#if ('${fieldName}' == 'username' || '${fieldName}' == 'password') && pageId != 'register.ftl' && pageId != 'register-user-profile.ftl'>
127
+ <#assign doExistErrorOnUsernameOrPassword = "">
128
+ <#attempt>
129
+ <#assign doExistErrorOnUsernameOrPassword = messagesPerField.existsError('username', 'password')>
130
+ <#recover>
131
+ <#assign doExistErrorOnUsernameOrPassword = true>
132
+ </#attempt>
133
+ return <#if doExistErrorOnUsernameOrPassword>true<#else>false</#if>;
134
+ <#else>
135
+ <#assign doExistErrorMessageForField = "">
136
+ <#attempt>
137
+ <#assign doExistErrorMessageForField = messagesPerField.exists('${fieldName}')>
138
+ <#recover>
139
+ <#assign doExistErrorMessageForField = true>
140
+ </#attempt>
141
+ return <#if doExistErrorMessageForField>true<#else>false</#if>;
142
+ </#if>
143
+ }
144
+ </#list>
145
+ throw new Error(fieldName + "is probably runtime generated, see: https://docs.keycloakify.dev/limitations#field-names-cant-be-runtime-generated");
146
+ </#if>
147
+ },
148
+ "getFirstError": function () {
149
+ for( let i = 0; i < arguments.length; i++ ){
150
+ const fieldName = arguments[i];
151
+ if( out.messagesPerField.existsError(fieldName) ){
152
+ return out.messagesPerField.get(fieldName);
247
153
  }
248
-
249
154
  }
155
+ }
156
+ };
157
+
158
+ out["keycloakifyVersion"] = "KEYCLOAKIFY_VERSION_xEdKd3xEdr";
159
+ out["themeVersion"] = "KEYCLOAKIFY_THEME_VERSION_sIgKd3xEdr3dx";
160
+ out["themeType"] = "KEYCLOAKIFY_THEME_TYPE_dExKd3xEdr";
161
+ out["themeName"] = "KEYCLOAKIFY_THEME_NAME_cXxKd3xEer";
162
+ out["pageId"] = "${pageId}";
163
+
164
+ try {
165
+ out["url"]["resourcesCommonPath"] = out["url"]["resourcesPath"] + "/" + "RESOURCES_COMMON_cLsLsMrtDkpVv";
166
+ } catch(error) { }
167
+
168
+ <#if profile?? && profile.attributes??>
169
+ out["lOCALIZATION_REALM_OVERRIDES_USER_PROFILE_PROPERTY_KEY_aaGLsPgGIdeeX"] = {
170
+ <#list profile.attributes as attribute>
171
+ <#if attribute.annotations?? && attribute.displayName??>
172
+ "${attribute.displayName}": decodeHtmlEntities("${advancedMsg(attribute.displayName)?js_string}"),
173
+ </#if>
174
+ <#if attribute.annotations.inputHelperTextBefore??>
175
+ "${attribute.annotations.inputHelperTextBefore}": decodeHtmlEntities("${advancedMsg(attribute.annotations.inputHelperTextBefore)?js_string}"),
176
+ </#if>
177
+ <#if attribute.annotations.inputHelperTextAfter??>
178
+ "${attribute.annotations.inputHelperTextAfter}": decodeHtmlEntities("${advancedMsg(attribute.annotations.inputHelperTextAfter)?js_string}"),
179
+ </#if>
180
+ <#if attribute.annotations.inputTypePlaceholder??>
181
+ "${attribute.annotations.inputTypePlaceholder}": decodeHtmlEntities("${advancedMsg(attribute.annotations.inputTypePlaceholder)?js_string}"),
182
+ </#if>
183
+ </#list>
250
184
  };
185
+ </#if>
251
186
 
252
- <#if account??>
253
- out["url"]["getLogoutUrl"] = function () {
254
- <#attempt>
255
- return "${url.getLogoutUrl()}";
256
- <#recover>
257
- throw new Error("Failed to invoke url.getLogoutUrl() in the FreeMarker template");
258
- </#attempt>
259
- };
260
- </#if>
261
-
262
- <#if pageId === "login-config-totp.ftl">
263
- out["totp"]["policy"]["getAlgorithmKey"] = function () {
264
- <#attempt>
265
- return "${totp.policy.getAlgorithmKey()}";
266
- <#recover>
267
- throw new Error("Failed to invoke totp.policy.getAlgorithmKey() in the FreeMarker template");
268
- </#attempt>
269
- };
270
- </#if>
271
-
272
- out["keycloakifyVersion"] = "KEYCLOAKIFY_VERSION_xEdKd3xEdr";
273
- out["themeVersion"] = "KEYCLOAKIFY_THEME_VERSION_sIgKd3xEdr3dx";
274
- out["themeType"] = "KEYCLOAKIFY_THEME_TYPE_dExKd3xEdr";
275
- out["themeName"] = "KEYCLOAKIFY_THEME_NAME_cXxKd3xEer";
276
- out["pageId"] = "${pageId}";
277
-
278
- try {
279
-
280
- out["url"]["resourcesCommonPath"] = out["url"]["resourcesPath"] + "/" + "RESOURCES_COMMON_cLsLsMrtDkpVv";
281
-
282
- } catch(error) {
187
+ return out;
283
188
 
189
+ function decodeHtmlEntities(htmlStr){
190
+ var element = decodeHtmlEntities.element;
191
+ if (!element) {
192
+ element = document.createElement("textarea");
193
+ decodeHtmlEntities.element = element;
284
194
  }
195
+ element.innerHTML = htmlStr;
196
+ return textarea.value;
197
+ }
285
198
 
286
- return out;
287
-
288
- })()
199
+ })();
289
200
  <#function ftl_object_to_js_code_declaring_an_object object path>
290
201
 
291
202
  <#local isHash = "">
@@ -309,7 +220,6 @@
309
220
  <#return "ABORT: We can't list keys on this object">
310
221
  </#attempt>
311
222
 
312
-
313
223
  <#local out_seq = []>
314
224
 
315
225
  <#list keys as key>
@@ -378,7 +288,7 @@
378
288
  key == "realmAttributes"
379
289
  )
380
290
  >
381
- <#local out_seq += ["/*If you need '" + path?join(".") + "." + key + "' on " + pageId + ", please submit an issue to the Keycloakify repo*/"]>
291
+ <#local out_seq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
382
292
  <#continue>
383
293
  </#if>
384
294
 
@@ -390,7 +300,7 @@
390
300
  <#attempt>
391
301
  <#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
392
302
  <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
393
- <#local out_seq += ["/*If you need '" + key + "' on " + pageId + ", please submit an issue to the Keycloakify repo*/"]>
303
+ <#local out_seq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
394
304
  <#continue>
395
305
  </#if>
396
306
  <#recover>
@@ -470,6 +380,26 @@
470
380
  </#attempt>
471
381
  </#if>
472
382
 
383
+ <#if are_same_path(path, ["url", "getLogoutUrl"])>
384
+ <#local returnValue = "">
385
+ <#attempt>
386
+ <#local returnValue = url.getLogoutUrl()>
387
+ <#recover>
388
+ <#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
389
+ </#attempt>
390
+ <#return 'function(){ return "' + returnValue + '"; }'>
391
+ </#if>
392
+
393
+ <#if are_same_path(path, ["totp", "policy", "getAlgorithmKey"])>
394
+ <#local returnValue = "">
395
+ <#attempt>
396
+ <#local returnValue = totp.policy.getAlgorithmKey()>
397
+ <#recover>
398
+ <#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
399
+ </#attempt>
400
+ <#return 'function(){ return "' + returnValue + '"; }'>
401
+ </#if>
402
+
473
403
  <#return "ABORT: It's a method">
474
404
  </#if>
475
405
 
@@ -4,9 +4,16 @@ import { generateCssCodeToDefineGlobals } from "../replacers/replaceImportsInCss
4
4
  import { replaceImportsInInlineCssCode } from "../replacers/replaceImportsInInlineCssCode";
5
5
  import * as fs from "fs";
6
6
  import { join as pathJoin } from "path";
7
- import type { BuildOptions } from "../buildOptions";
7
+ import type { BuildOptions } from "../../shared/buildOptions";
8
8
  import { assert } from "tsafe/assert";
9
- import { type ThemeType, nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir, resources_common } from "../../constants";
9
+ import {
10
+ type ThemeType,
11
+ nameOfTheGlobal,
12
+ basenameOfTheKeycloakifyResourcesDir,
13
+ resources_common,
14
+ nameOfTheLocalizationRealmOverridesUserProfileProperty
15
+ } from "../../shared/constants";
16
+ import { getThisCodebaseRootDirPath } from "../../tools/getThisCodebaseRootDirPath";
10
17
 
11
18
  export type BuildOptionsLike = {
12
19
  bundler: "vite" | "webpack";
@@ -27,7 +34,15 @@ export function generateFtlFilesCodeFactory(params: {
27
34
  themeType: ThemeType;
28
35
  fieldNames: string[];
29
36
  }) {
30
- const { themeName, cssGlobalsToDefine, indexHtmlCode, buildOptions, keycloakifyVersion, themeType, fieldNames } = params;
37
+ const {
38
+ themeName,
39
+ cssGlobalsToDefine,
40
+ indexHtmlCode,
41
+ buildOptions,
42
+ keycloakifyVersion,
43
+ themeType,
44
+ fieldNames
45
+ } = params;
31
46
 
32
47
  const $ = cheerio.load(indexHtmlCode);
33
48
 
@@ -37,7 +52,10 @@ export function generateFtlFilesCodeFactory(params: {
37
52
 
38
53
  assert(jsCode !== null);
39
54
 
40
- const { fixedJsCode } = replaceImportsInJsCode({ jsCode, buildOptions });
55
+ const { fixedJsCode } = replaceImportsInJsCode({
56
+ jsCode,
57
+ buildOptions
58
+ });
41
59
 
42
60
  $(element).text(fixedJsCode);
43
61
  });
@@ -71,7 +89,9 @@ export function generateFtlFilesCodeFactory(params: {
71
89
  $(element).attr(
72
90
  attrName,
73
91
  href.replace(
74
- new RegExp(`^${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`),
92
+ new RegExp(
93
+ `^${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`
94
+ ),
75
95
  `\${url.resourcesPath}/${basenameOfTheKeycloakifyResourcesDir}/`
76
96
  )
77
97
  );
@@ -96,19 +116,37 @@ export function generateFtlFilesCodeFactory(params: {
96
116
 
97
117
  //FTL is no valid html, we can't insert with cheerio, we put placeholder for injecting later.
98
118
  const ftlObjectToJsCodeDeclaringAnObject = fs
99
- .readFileSync(pathJoin(__dirname, "ftl_object_to_js_code_declaring_an_object.ftl"))
119
+ .readFileSync(
120
+ pathJoin(
121
+ getThisCodebaseRootDirPath(),
122
+ "src",
123
+ "bin",
124
+ "keycloakify",
125
+ "generateFtl",
126
+ "ftl_object_to_js_code_declaring_an_object.ftl"
127
+ )
128
+ )
100
129
  .toString("utf8")
101
130
  .match(/^<script>const _=((?:.|\n)+)<\/script>[\n]?$/)![1]
102
- .replace("FIELD_NAMES_eKsIY4ZsZ4xeM", fieldNames.map(name => `"${name}"`).join(", "))
131
+ .replace(
132
+ "FIELD_NAMES_eKsIY4ZsZ4xeM",
133
+ fieldNames.map(name => `"${name}"`).join(", ")
134
+ )
103
135
  .replace("KEYCLOAKIFY_VERSION_xEdKd3xEdr", keycloakifyVersion)
104
136
  .replace("KEYCLOAKIFY_THEME_VERSION_sIgKd3xEdr3dx", buildOptions.themeVersion)
105
137
  .replace("KEYCLOAKIFY_THEME_TYPE_dExKd3xEdr", themeType)
106
138
  .replace("KEYCLOAKIFY_THEME_NAME_cXxKd3xEer", themeName)
107
- .replace("RESOURCES_COMMON_cLsLsMrtDkpVv", resources_common);
108
-
109
- const ftlObjectToJsCodeDeclaringAnObjectPlaceholder = '{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }';
139
+ .replace("RESOURCES_COMMON_cLsLsMrtDkpVv", resources_common)
140
+ .replace(
141
+ "lOCALIZATION_REALM_OVERRIDES_USER_PROFILE_PROPERTY_KEY_aaGLsPgGIdeeX",
142
+ nameOfTheLocalizationRealmOverridesUserProfileProperty
143
+ );
144
+ const ftlObjectToJsCodeDeclaringAnObjectPlaceholder =
145
+ '{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }';
110
146
 
111
- $("head").prepend(["<script>", ` window.${nameOfTheGlobal}= ${ftlObjectToJsCodeDeclaringAnObjectPlaceholder};`, "</script>"].join("\n"));
147
+ $("head").prepend(
148
+ `<script>\nwindow.${nameOfTheGlobal}=${ftlObjectToJsCodeDeclaringAnObjectPlaceholder}</script>`
149
+ );
112
150
 
113
151
  // Remove part of the document marked as ignored.
114
152
  {
@@ -116,7 +154,9 @@ export function generateFtlFilesCodeFactory(params: {
116
154
 
117
155
  startTags.each((...[, startTag]) => {
118
156
  const $startTag = $(startTag);
119
- const $endTag = $startTag.nextAll('meta[name="keycloakify-ignore-end"]').first();
157
+ const $endTag = $startTag
158
+ .nextAll('meta[name="keycloakify-ignore-end"]')
159
+ .first();
120
160
 
121
161
  if ($endTag.length) {
122
162
  let currentNode = $startTag.next();
@@ -143,9 +183,13 @@ export function generateFtlFilesCodeFactory(params: {
143
183
  let ftlCode = $.html();
144
184
 
145
185
  Object.entries({
146
- [ftlObjectToJsCodeDeclaringAnObjectPlaceholder]: ftlObjectToJsCodeDeclaringAnObject,
147
- "PAGE_ID_xIgLsPgGId9D8e": pageId
148
- }).map(([searchValue, replaceValue]) => (ftlCode = ftlCode.replace(searchValue, replaceValue)));
186
+ [ftlObjectToJsCodeDeclaringAnObjectPlaceholder]:
187
+ ftlObjectToJsCodeDeclaringAnObject,
188
+ PAGE_ID_xIgLsPgGId9D8e: pageId
189
+ }).map(
190
+ ([searchValue, replaceValue]) =>
191
+ (ftlCode = ftlCode.replace(searchValue, replaceValue))
192
+ );
149
193
 
150
194
  return { ftlCode };
151
195
  }
@@ -1,2 +1 @@
1
1
  export * from "./generateFtl";
2
- export * from "./pageId";