keycloakify 10.0.0-rc.99 → 10.0.1

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 (503) hide show
  1. package/PUBLIC_URL.js +2 -2
  2. package/PUBLIC_URL.js.map +1 -1
  3. package/README.md +29 -242
  4. package/account/KcContext/KcContext.d.ts +4 -1
  5. package/account/KcContext/KcContext.js.map +1 -1
  6. package/account/KcContext/kcContextMocks.js +7 -4
  7. package/account/KcContext/kcContextMocks.js.map +1 -1
  8. package/account/Template.js +3 -1
  9. package/account/Template.js.map +1 -1
  10. package/account/i18n/GenericI18n.d.ts +6 -0
  11. package/account/i18n/GenericI18n.js +2 -0
  12. package/account/i18n/GenericI18n.js.map +1 -0
  13. package/account/i18n/i18n.d.ts +24 -30
  14. package/account/i18n/i18n.js +50 -70
  15. package/account/i18n/i18n.js.map +1 -1
  16. package/account/i18n/index.d.ts +4 -3
  17. package/account/i18n/index.js.map +1 -1
  18. package/account/i18n/messages_defaultSet/ar.js.map +1 -0
  19. package/account/i18n/messages_defaultSet/ca.js.map +1 -0
  20. package/account/i18n/messages_defaultSet/cs.js.map +1 -0
  21. package/account/i18n/messages_defaultSet/da.js.map +1 -0
  22. package/account/i18n/messages_defaultSet/de.js.map +1 -0
  23. package/account/i18n/messages_defaultSet/el.js.map +1 -0
  24. package/account/i18n/messages_defaultSet/en.js.map +1 -0
  25. package/account/i18n/messages_defaultSet/es.js.map +1 -0
  26. package/account/i18n/messages_defaultSet/fa.js.map +1 -0
  27. package/account/i18n/messages_defaultSet/fi.js.map +1 -0
  28. package/account/i18n/messages_defaultSet/fr.js.map +1 -0
  29. package/account/i18n/messages_defaultSet/hu.js.map +1 -0
  30. package/account/i18n/{baseMessages → messages_defaultSet}/index.d.ts +1 -1
  31. package/account/i18n/{baseMessages → messages_defaultSet}/index.js +3 -3
  32. package/account/i18n/messages_defaultSet/index.js.map +1 -0
  33. package/account/i18n/messages_defaultSet/it.js.map +1 -0
  34. package/account/i18n/messages_defaultSet/ja.js.map +1 -0
  35. package/account/i18n/messages_defaultSet/lt.js.map +1 -0
  36. package/account/i18n/messages_defaultSet/lv.js.map +1 -0
  37. package/account/i18n/messages_defaultSet/nl.js.map +1 -0
  38. package/account/i18n/messages_defaultSet/no.js.map +1 -0
  39. package/account/i18n/messages_defaultSet/pl.js.map +1 -0
  40. package/account/i18n/messages_defaultSet/pt-BR.js.map +1 -0
  41. package/account/i18n/messages_defaultSet/ru.js.map +1 -0
  42. package/account/i18n/messages_defaultSet/sk.js.map +1 -0
  43. package/account/i18n/messages_defaultSet/sv.js.map +1 -0
  44. package/account/i18n/messages_defaultSet/th.js.map +1 -0
  45. package/account/i18n/messages_defaultSet/tr.js.map +1 -0
  46. package/account/i18n/messages_defaultSet/uk.js.map +1 -0
  47. package/account/i18n/messages_defaultSet/zh-CN.js.map +1 -0
  48. package/account/i18n/useI18n.d.ts +6 -5
  49. package/account/i18n/useI18n.js +37 -4
  50. package/account/i18n/useI18n.js.map +1 -1
  51. package/account/pages/FederatedIdentity.js +1 -1
  52. package/account/pages/FederatedIdentity.js.map +1 -1
  53. package/account/pages/Totp.js +5 -1
  54. package/account/pages/Totp.js.map +1 -1
  55. package/bin/193.index.js +5 -5
  56. package/bin/{490.index.js → 246.index.js} +22 -4
  57. package/bin/31.index.js +264 -203
  58. package/bin/440.index.js +178 -106
  59. package/bin/453.index.js +59 -7
  60. package/bin/526.index.js +525 -137
  61. package/bin/599.index.js +567 -0
  62. package/bin/{893.index.js → 622.index.js} +239 -231
  63. package/bin/{36.index.js → 678.index.js} +577 -71
  64. package/bin/{180.index.js → 697.index.js} +611 -526
  65. package/bin/743.index.js +70 -0
  66. package/bin/780.index.js +895 -0
  67. package/bin/786.index.js +185 -0
  68. package/bin/932.index.js +740 -52
  69. package/bin/{966.index.js → 941.index.js} +2 -19
  70. package/bin/97.index.js +29 -7
  71. package/bin/main.js +22 -10
  72. package/bin/shared/KeycloakVersionRange.d.ts +3 -3
  73. package/bin/shared/buildContext.d.ts +52 -16
  74. package/bin/shared/buildContext.js.map +1 -1
  75. package/bin/shared/constants.d.ts +18 -17
  76. package/bin/shared/constants.js +15 -14
  77. package/bin/shared/constants.js.map +1 -1
  78. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -1
  79. package/bin/shared/downloadKeycloakDefaultTheme.js.map +1 -1
  80. package/bin/shared/generateKcGenTs.d.ts +3 -0
  81. package/bin/shared/generateKcGenTs.js.map +1 -1
  82. package/bin/shared/getLatestsSemVersionedTag.d.ts +15 -0
  83. package/bin/shared/getLatestsSemVersionedTag.js.map +1 -0
  84. package/bin/shared/promptKeycloakVersion.d.ts +3 -1
  85. package/bin/shared/promptKeycloakVersion.js.map +1 -1
  86. package/lib/getKcClsx.js +2 -1
  87. package/lib/getKcClsx.js.map +1 -1
  88. package/login/KcContext/KcContext.d.ts +10 -11
  89. package/login/KcContext/KcContext.js.map +1 -1
  90. package/login/KcContext/kcContextMocks.js +4 -5
  91. package/login/KcContext/kcContextMocks.js.map +1 -1
  92. package/login/Template.js +13 -7
  93. package/login/Template.js.map +1 -1
  94. package/login/TemplateProps.d.ts +0 -1
  95. package/login/UserProfileFormFields.js +9 -8
  96. package/login/UserProfileFormFields.js.map +1 -1
  97. package/login/i18n/GenericI18n.d.ts +6 -0
  98. package/login/i18n/GenericI18n.js +2 -0
  99. package/login/i18n/GenericI18n.js.map +1 -0
  100. package/login/i18n/i18n.d.ts +22 -32
  101. package/login/i18n/i18n.js +51 -92
  102. package/login/i18n/i18n.js.map +1 -1
  103. package/login/i18n/index.d.ts +4 -3
  104. package/login/i18n/index.js.map +1 -1
  105. package/login/i18n/messages_defaultSet/ar.js.map +1 -0
  106. package/login/i18n/messages_defaultSet/ca.js.map +1 -0
  107. package/login/i18n/messages_defaultSet/cs.js.map +1 -0
  108. package/login/i18n/messages_defaultSet/da.js.map +1 -0
  109. package/login/i18n/messages_defaultSet/de.js.map +1 -0
  110. package/login/i18n/messages_defaultSet/el.js.map +1 -0
  111. package/login/i18n/messages_defaultSet/en.js.map +1 -0
  112. package/login/i18n/messages_defaultSet/es.js.map +1 -0
  113. package/login/i18n/messages_defaultSet/fa.js.map +1 -0
  114. package/login/i18n/messages_defaultSet/fi.js.map +1 -0
  115. package/login/i18n/messages_defaultSet/fr.js.map +1 -0
  116. package/login/i18n/messages_defaultSet/hu.js.map +1 -0
  117. package/login/i18n/{baseMessages → messages_defaultSet}/index.d.ts +1 -1
  118. package/login/i18n/{baseMessages → messages_defaultSet}/index.js +3 -3
  119. package/login/i18n/messages_defaultSet/index.js.map +1 -0
  120. package/login/i18n/messages_defaultSet/it.js.map +1 -0
  121. package/login/i18n/messages_defaultSet/ja.js.map +1 -0
  122. package/login/i18n/messages_defaultSet/lt.js.map +1 -0
  123. package/login/i18n/messages_defaultSet/lv.js.map +1 -0
  124. package/login/i18n/messages_defaultSet/nl.js.map +1 -0
  125. package/login/i18n/messages_defaultSet/no.js.map +1 -0
  126. package/login/i18n/messages_defaultSet/pl.js.map +1 -0
  127. package/login/i18n/messages_defaultSet/pt-BR.js.map +1 -0
  128. package/login/i18n/messages_defaultSet/ru.js.map +1 -0
  129. package/login/i18n/messages_defaultSet/sk.js.map +1 -0
  130. package/login/i18n/messages_defaultSet/sv.js.map +1 -0
  131. package/login/i18n/messages_defaultSet/th.js.map +1 -0
  132. package/login/i18n/messages_defaultSet/tr.js.map +1 -0
  133. package/login/i18n/messages_defaultSet/uk.js.map +1 -0
  134. package/login/i18n/messages_defaultSet/zh-CN.js.map +1 -0
  135. package/login/i18n/useI18n.d.ts +6 -5
  136. package/login/i18n/useI18n.js +37 -4
  137. package/login/i18n/useI18n.js.map +1 -1
  138. package/login/lib/useUserProfileForm.d.ts +2 -0
  139. package/login/lib/useUserProfileForm.js +44 -10
  140. package/login/lib/useUserProfileForm.js.map +1 -1
  141. package/login/pages/Error.js +1 -1
  142. package/login/pages/Error.js.map +1 -1
  143. package/login/pages/Info.js +15 -3
  144. package/login/pages/Info.js.map +1 -1
  145. package/login/pages/Login.js +6 -2
  146. package/login/pages/Login.js.map +1 -1
  147. package/login/pages/LoginConfigTotp.js +5 -1
  148. package/login/pages/LoginConfigTotp.js.map +1 -1
  149. package/login/pages/LoginOtp.js +3 -1
  150. package/login/pages/LoginOtp.js.map +1 -1
  151. package/login/pages/LoginPassword.js +3 -1
  152. package/login/pages/LoginPassword.js.map +1 -1
  153. package/login/pages/LoginRecoveryAuthnCodeInput.js +3 -1
  154. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  155. package/login/pages/LoginResetPassword.js +3 -1
  156. package/login/pages/LoginResetPassword.js.map +1 -1
  157. package/login/pages/LoginUpdatePassword.js +5 -1
  158. package/login/pages/LoginUpdatePassword.js.map +1 -1
  159. package/login/pages/Register.js +3 -1
  160. package/login/pages/Register.js.map +1 -1
  161. package/login/pages/SamlPostForm.js +1 -1
  162. package/login/pages/SamlPostForm.js.map +1 -1
  163. package/login/pages/SelectAuthenticator.js +2 -2
  164. package/login/pages/SelectAuthenticator.js.map +1 -1
  165. package/login/pages/WebauthnAuthenticate.js +3 -3
  166. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  167. package/login/pages/WebauthnRegister.js +2 -2
  168. package/package.json +265 -245
  169. package/src/PUBLIC_URL.ts +2 -2
  170. package/src/account/KcContext/KcContext.ts +4 -1
  171. package/src/account/KcContext/kcContextMocks.ts +7 -4
  172. package/src/account/Template.tsx +6 -1
  173. package/src/account/i18n/GenericI18n.tsx +6 -0
  174. package/src/account/i18n/i18n.tsx +91 -129
  175. package/src/account/i18n/index.ts +4 -3
  176. package/src/account/i18n/{baseMessages → messages_defaultSet}/index.ts +3 -3
  177. package/src/account/i18n/useI18n.tsx +95 -0
  178. package/src/account/pages/FederatedIdentity.tsx +1 -1
  179. package/src/account/pages/Totp.tsx +16 -6
  180. package/src/bin/add-story.ts +42 -10
  181. package/src/bin/eject-page.ts +119 -11
  182. package/src/bin/initialize-account-theme/copyBoilerplate.ts +32 -0
  183. package/src/bin/initialize-account-theme/index.ts +1 -0
  184. package/src/bin/initialize-account-theme/initialize-account-theme.ts +112 -0
  185. package/src/bin/initialize-account-theme/initializeAccountTheme_multiPage.ts +21 -0
  186. package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +152 -0
  187. package/src/bin/initialize-account-theme/src/multi-page/KcContext.ts +12 -0
  188. package/src/bin/initialize-account-theme/src/multi-page/KcPage.tsx +25 -0
  189. package/src/bin/initialize-account-theme/src/multi-page/KcPageStory.tsx +38 -0
  190. package/src/bin/initialize-account-theme/src/multi-page/i18n.ts +5 -0
  191. package/src/bin/initialize-account-theme/src/single-page/KcContext.ts +7 -0
  192. package/src/bin/initialize-account-theme/src/single-page/KcPage.tsx +11 -0
  193. package/src/bin/initialize-account-theme/updateAccountThemeImplementationInConfig.ts +92 -0
  194. package/src/bin/initialize-email-theme.ts +1 -1
  195. package/src/bin/keycloakify/buildJars/buildJar.ts +38 -24
  196. package/src/bin/keycloakify/buildJars/buildJars.ts +6 -3
  197. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +5 -5
  198. package/src/bin/keycloakify/generateFtl/generateFtl.ts +16 -16
  199. package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +471 -364
  200. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +7 -7
  201. package/src/bin/keycloakify/generateResources/generateMessageProperties.ts +3 -3
  202. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +125 -59
  203. package/src/bin/keycloakify/generateResources/generateResourcesForThemeVariant.ts +2 -2
  204. package/src/bin/keycloakify/generateResources/readExtraPageNames.ts +5 -8
  205. package/src/bin/keycloakify/keycloakify.ts +8 -6
  206. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +41 -27
  207. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +2 -2
  208. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +6 -6
  209. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +4 -4
  210. package/src/bin/main.ts +16 -2
  211. package/src/bin/shared/KeycloakVersionRange.ts +4 -4
  212. package/src/bin/shared/buildContext.ts +360 -251
  213. package/src/bin/shared/constants.ts +19 -17
  214. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +6 -6
  215. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +48 -27
  216. package/src/bin/shared/downloadKeycloakStaticResources.ts +2 -2
  217. package/src/bin/shared/generateKcGenTs.ts +110 -3
  218. package/src/bin/shared/getLatestsSemVersionedTag.ts +201 -0
  219. package/src/bin/shared/promptKeycloakVersion.ts +20 -80
  220. package/src/bin/start-keycloak/appBuild.ts +15 -11
  221. package/src/bin/start-keycloak/keycloakifyBuild.ts +3 -3
  222. package/src/bin/start-keycloak/myrealm-realm-18.json +4 -4
  223. package/src/bin/start-keycloak/myrealm-realm-19.json +4 -4
  224. package/src/bin/start-keycloak/myrealm-realm-20.json +4 -4
  225. package/src/bin/start-keycloak/myrealm-realm-21.json +4 -4
  226. package/src/bin/start-keycloak/myrealm-realm-23.json +3 -3
  227. package/src/bin/start-keycloak/myrealm-realm-24.json +4 -4
  228. package/src/bin/start-keycloak/myrealm-realm-25.json +4 -4
  229. package/src/bin/start-keycloak/start-keycloak.ts +256 -102
  230. package/src/bin/tools/assertNoPnpmDlx.ts +4 -2
  231. package/src/bin/tools/downloadAndExtractArchive.ts +10 -9
  232. package/src/bin/tools/fetchProxyOptions.ts +32 -11
  233. package/src/bin/tools/npmInstall.ts +63 -0
  234. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +3 -2
  235. package/src/bin/tsconfig.json +3 -1
  236. package/src/lib/getKcClsx.ts +2 -2
  237. package/src/login/KcContext/KcContext.ts +10 -28
  238. package/src/login/KcContext/kcContextMocks.ts +5 -6
  239. package/src/login/Template.tsx +32 -54
  240. package/src/login/TemplateProps.ts +0 -1
  241. package/src/login/UserProfileFormFields.tsx +18 -14
  242. package/src/login/i18n/GenericI18n.tsx +6 -0
  243. package/src/login/i18n/i18n.tsx +91 -166
  244. package/src/login/i18n/index.ts +4 -3
  245. package/src/login/i18n/{baseMessages → messages_defaultSet}/index.ts +3 -3
  246. package/src/login/i18n/useI18n.tsx +95 -0
  247. package/src/login/lib/useUserProfileForm.tsx +68 -20
  248. package/src/login/pages/Error.tsx +1 -1
  249. package/src/login/pages/Info.tsx +26 -6
  250. package/src/login/pages/Login.tsx +20 -9
  251. package/src/login/pages/LoginConfigTotp.tsx +16 -6
  252. package/src/login/pages/LoginOtp.tsx +8 -3
  253. package/src/login/pages/LoginPassword.tsx +8 -3
  254. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +8 -3
  255. package/src/login/pages/LoginResetPassword.tsx +8 -3
  256. package/src/login/pages/LoginUpdatePassword.tsx +55 -47
  257. package/src/login/pages/Register.tsx +8 -3
  258. package/src/login/pages/SamlPostForm.tsx +1 -1
  259. package/src/login/pages/SelectAuthenticator.tsx +4 -4
  260. package/src/login/pages/WebauthnAuthenticate.tsx +5 -5
  261. package/src/login/pages/WebauthnRegister.tsx +2 -2
  262. package/src/tools/useInsertLinkTags.ts +9 -1
  263. package/src/tools/useInsertScriptTags.ts +9 -1
  264. package/src/vite-plugin/vite-plugin.ts +15 -13
  265. package/stories/account/pages/Log.stories.tsx +1 -0
  266. package/stories/account-spa/index.stories.tsx +94 -0
  267. package/stories/intro/intro.stories.tsx +90 -0
  268. package/stories/login/pages/Info.stories.tsx +7 -2
  269. package/stories/login/pages/Login.stories.tsx +25 -13
  270. package/stories/login/pages/Register.stories.tsx +11 -9
  271. package/stories/login/pages/SelectAuthenticator.stories.tsx +41 -0
  272. package/stories/login/pages/Terms.stories.tsx +6 -2
  273. package/tools/useInsertLinkTags.js +7 -1
  274. package/tools/useInsertLinkTags.js.map +1 -1
  275. package/tools/useInsertScriptTags.js +7 -1
  276. package/tools/useInsertScriptTags.js.map +1 -1
  277. package/vite-plugin/index.js +25820 -25686
  278. package/vite-plugin/vite-plugin.d.ts +6 -4
  279. package/account/i18n/baseMessages/ar.js.map +0 -1
  280. package/account/i18n/baseMessages/ca.js.map +0 -1
  281. package/account/i18n/baseMessages/cs.js.map +0 -1
  282. package/account/i18n/baseMessages/da.js.map +0 -1
  283. package/account/i18n/baseMessages/de.js.map +0 -1
  284. package/account/i18n/baseMessages/el.js.map +0 -1
  285. package/account/i18n/baseMessages/en.js.map +0 -1
  286. package/account/i18n/baseMessages/es.js.map +0 -1
  287. package/account/i18n/baseMessages/fa.js.map +0 -1
  288. package/account/i18n/baseMessages/fi.js.map +0 -1
  289. package/account/i18n/baseMessages/fr.js.map +0 -1
  290. package/account/i18n/baseMessages/hu.js.map +0 -1
  291. package/account/i18n/baseMessages/index.js.map +0 -1
  292. package/account/i18n/baseMessages/it.js.map +0 -1
  293. package/account/i18n/baseMessages/ja.js.map +0 -1
  294. package/account/i18n/baseMessages/lt.js.map +0 -1
  295. package/account/i18n/baseMessages/lv.js.map +0 -1
  296. package/account/i18n/baseMessages/nl.js.map +0 -1
  297. package/account/i18n/baseMessages/no.js.map +0 -1
  298. package/account/i18n/baseMessages/pl.js.map +0 -1
  299. package/account/i18n/baseMessages/pt-BR.js.map +0 -1
  300. package/account/i18n/baseMessages/ru.js.map +0 -1
  301. package/account/i18n/baseMessages/sk.js.map +0 -1
  302. package/account/i18n/baseMessages/sv.js.map +0 -1
  303. package/account/i18n/baseMessages/th.js.map +0 -1
  304. package/account/i18n/baseMessages/tr.js.map +0 -1
  305. package/account/i18n/baseMessages/uk.js.map +0 -1
  306. package/account/i18n/baseMessages/zh-CN.js.map +0 -1
  307. package/bin/538.index.js +0 -108
  308. package/login/i18n/baseMessages/ar.js.map +0 -1
  309. package/login/i18n/baseMessages/ca.js.map +0 -1
  310. package/login/i18n/baseMessages/cs.js.map +0 -1
  311. package/login/i18n/baseMessages/da.js.map +0 -1
  312. package/login/i18n/baseMessages/de.js.map +0 -1
  313. package/login/i18n/baseMessages/el.js.map +0 -1
  314. package/login/i18n/baseMessages/en.js.map +0 -1
  315. package/login/i18n/baseMessages/es.js.map +0 -1
  316. package/login/i18n/baseMessages/fa.js.map +0 -1
  317. package/login/i18n/baseMessages/fi.js.map +0 -1
  318. package/login/i18n/baseMessages/fr.js.map +0 -1
  319. package/login/i18n/baseMessages/hu.js.map +0 -1
  320. package/login/i18n/baseMessages/index.js.map +0 -1
  321. package/login/i18n/baseMessages/it.js.map +0 -1
  322. package/login/i18n/baseMessages/ja.js.map +0 -1
  323. package/login/i18n/baseMessages/lt.js.map +0 -1
  324. package/login/i18n/baseMessages/lv.js.map +0 -1
  325. package/login/i18n/baseMessages/nl.js.map +0 -1
  326. package/login/i18n/baseMessages/no.js.map +0 -1
  327. package/login/i18n/baseMessages/pl.js.map +0 -1
  328. package/login/i18n/baseMessages/pt-BR.js.map +0 -1
  329. package/login/i18n/baseMessages/ru.js.map +0 -1
  330. package/login/i18n/baseMessages/sk.js.map +0 -1
  331. package/login/i18n/baseMessages/sv.js.map +0 -1
  332. package/login/i18n/baseMessages/th.js.map +0 -1
  333. package/login/i18n/baseMessages/tr.js.map +0 -1
  334. package/login/i18n/baseMessages/uk.js.map +0 -1
  335. package/login/i18n/baseMessages/zh-CN.js.map +0 -1
  336. package/src/account/i18n/useI18n.ts +0 -44
  337. package/src/login/i18n/useI18n.ts +0 -44
  338. package/src/tools/ExtractAfterStartingWith.ts +0 -4
  339. package/tools/ExtractAfterStartingWith.d.ts +0 -1
  340. package/tools/ExtractAfterStartingWith.js +0 -2
  341. package/tools/ExtractAfterStartingWith.js.map +0 -1
  342. /package/account/i18n/{baseMessages → messages_defaultSet}/ar.d.ts +0 -0
  343. /package/account/i18n/{baseMessages → messages_defaultSet}/ar.js +0 -0
  344. /package/account/i18n/{baseMessages → messages_defaultSet}/ca.d.ts +0 -0
  345. /package/account/i18n/{baseMessages → messages_defaultSet}/ca.js +0 -0
  346. /package/account/i18n/{baseMessages → messages_defaultSet}/cs.d.ts +0 -0
  347. /package/account/i18n/{baseMessages → messages_defaultSet}/cs.js +0 -0
  348. /package/account/i18n/{baseMessages → messages_defaultSet}/da.d.ts +0 -0
  349. /package/account/i18n/{baseMessages → messages_defaultSet}/da.js +0 -0
  350. /package/account/i18n/{baseMessages → messages_defaultSet}/de.d.ts +0 -0
  351. /package/account/i18n/{baseMessages → messages_defaultSet}/de.js +0 -0
  352. /package/account/i18n/{baseMessages → messages_defaultSet}/el.d.ts +0 -0
  353. /package/account/i18n/{baseMessages → messages_defaultSet}/el.js +0 -0
  354. /package/account/i18n/{baseMessages → messages_defaultSet}/en.d.ts +0 -0
  355. /package/account/i18n/{baseMessages → messages_defaultSet}/en.js +0 -0
  356. /package/account/i18n/{baseMessages → messages_defaultSet}/es.d.ts +0 -0
  357. /package/account/i18n/{baseMessages → messages_defaultSet}/es.js +0 -0
  358. /package/account/i18n/{baseMessages → messages_defaultSet}/fa.d.ts +0 -0
  359. /package/account/i18n/{baseMessages → messages_defaultSet}/fa.js +0 -0
  360. /package/account/i18n/{baseMessages → messages_defaultSet}/fi.d.ts +0 -0
  361. /package/account/i18n/{baseMessages → messages_defaultSet}/fi.js +0 -0
  362. /package/account/i18n/{baseMessages → messages_defaultSet}/fr.d.ts +0 -0
  363. /package/account/i18n/{baseMessages → messages_defaultSet}/fr.js +0 -0
  364. /package/account/i18n/{baseMessages → messages_defaultSet}/hu.d.ts +0 -0
  365. /package/account/i18n/{baseMessages → messages_defaultSet}/hu.js +0 -0
  366. /package/account/i18n/{baseMessages → messages_defaultSet}/it.d.ts +0 -0
  367. /package/account/i18n/{baseMessages → messages_defaultSet}/it.js +0 -0
  368. /package/account/i18n/{baseMessages → messages_defaultSet}/ja.d.ts +0 -0
  369. /package/account/i18n/{baseMessages → messages_defaultSet}/ja.js +0 -0
  370. /package/account/i18n/{baseMessages → messages_defaultSet}/lt.d.ts +0 -0
  371. /package/account/i18n/{baseMessages → messages_defaultSet}/lt.js +0 -0
  372. /package/account/i18n/{baseMessages → messages_defaultSet}/lv.d.ts +0 -0
  373. /package/account/i18n/{baseMessages → messages_defaultSet}/lv.js +0 -0
  374. /package/account/i18n/{baseMessages → messages_defaultSet}/nl.d.ts +0 -0
  375. /package/account/i18n/{baseMessages → messages_defaultSet}/nl.js +0 -0
  376. /package/account/i18n/{baseMessages → messages_defaultSet}/no.d.ts +0 -0
  377. /package/account/i18n/{baseMessages → messages_defaultSet}/no.js +0 -0
  378. /package/account/i18n/{baseMessages → messages_defaultSet}/pl.d.ts +0 -0
  379. /package/account/i18n/{baseMessages → messages_defaultSet}/pl.js +0 -0
  380. /package/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.d.ts +0 -0
  381. /package/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.js +0 -0
  382. /package/account/i18n/{baseMessages → messages_defaultSet}/ru.d.ts +0 -0
  383. /package/account/i18n/{baseMessages → messages_defaultSet}/ru.js +0 -0
  384. /package/account/i18n/{baseMessages → messages_defaultSet}/sk.d.ts +0 -0
  385. /package/account/i18n/{baseMessages → messages_defaultSet}/sk.js +0 -0
  386. /package/account/i18n/{baseMessages → messages_defaultSet}/sv.d.ts +0 -0
  387. /package/account/i18n/{baseMessages → messages_defaultSet}/sv.js +0 -0
  388. /package/account/i18n/{baseMessages → messages_defaultSet}/th.d.ts +0 -0
  389. /package/account/i18n/{baseMessages → messages_defaultSet}/th.js +0 -0
  390. /package/account/i18n/{baseMessages → messages_defaultSet}/tr.d.ts +0 -0
  391. /package/account/i18n/{baseMessages → messages_defaultSet}/tr.js +0 -0
  392. /package/account/i18n/{baseMessages → messages_defaultSet}/uk.d.ts +0 -0
  393. /package/account/i18n/{baseMessages → messages_defaultSet}/uk.js +0 -0
  394. /package/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.d.ts +0 -0
  395. /package/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.js +0 -0
  396. /package/login/i18n/{baseMessages → messages_defaultSet}/ar.d.ts +0 -0
  397. /package/login/i18n/{baseMessages → messages_defaultSet}/ar.js +0 -0
  398. /package/login/i18n/{baseMessages → messages_defaultSet}/ca.d.ts +0 -0
  399. /package/login/i18n/{baseMessages → messages_defaultSet}/ca.js +0 -0
  400. /package/login/i18n/{baseMessages → messages_defaultSet}/cs.d.ts +0 -0
  401. /package/login/i18n/{baseMessages → messages_defaultSet}/cs.js +0 -0
  402. /package/login/i18n/{baseMessages → messages_defaultSet}/da.d.ts +0 -0
  403. /package/login/i18n/{baseMessages → messages_defaultSet}/da.js +0 -0
  404. /package/login/i18n/{baseMessages → messages_defaultSet}/de.d.ts +0 -0
  405. /package/login/i18n/{baseMessages → messages_defaultSet}/de.js +0 -0
  406. /package/login/i18n/{baseMessages → messages_defaultSet}/el.d.ts +0 -0
  407. /package/login/i18n/{baseMessages → messages_defaultSet}/el.js +0 -0
  408. /package/login/i18n/{baseMessages → messages_defaultSet}/en.d.ts +0 -0
  409. /package/login/i18n/{baseMessages → messages_defaultSet}/en.js +0 -0
  410. /package/login/i18n/{baseMessages → messages_defaultSet}/es.d.ts +0 -0
  411. /package/login/i18n/{baseMessages → messages_defaultSet}/es.js +0 -0
  412. /package/login/i18n/{baseMessages → messages_defaultSet}/fa.d.ts +0 -0
  413. /package/login/i18n/{baseMessages → messages_defaultSet}/fa.js +0 -0
  414. /package/login/i18n/{baseMessages → messages_defaultSet}/fi.d.ts +0 -0
  415. /package/login/i18n/{baseMessages → messages_defaultSet}/fi.js +0 -0
  416. /package/login/i18n/{baseMessages → messages_defaultSet}/fr.d.ts +0 -0
  417. /package/login/i18n/{baseMessages → messages_defaultSet}/fr.js +0 -0
  418. /package/login/i18n/{baseMessages → messages_defaultSet}/hu.d.ts +0 -0
  419. /package/login/i18n/{baseMessages → messages_defaultSet}/hu.js +0 -0
  420. /package/login/i18n/{baseMessages → messages_defaultSet}/it.d.ts +0 -0
  421. /package/login/i18n/{baseMessages → messages_defaultSet}/it.js +0 -0
  422. /package/login/i18n/{baseMessages → messages_defaultSet}/ja.d.ts +0 -0
  423. /package/login/i18n/{baseMessages → messages_defaultSet}/ja.js +0 -0
  424. /package/login/i18n/{baseMessages → messages_defaultSet}/lt.d.ts +0 -0
  425. /package/login/i18n/{baseMessages → messages_defaultSet}/lt.js +0 -0
  426. /package/login/i18n/{baseMessages → messages_defaultSet}/lv.d.ts +0 -0
  427. /package/login/i18n/{baseMessages → messages_defaultSet}/lv.js +0 -0
  428. /package/login/i18n/{baseMessages → messages_defaultSet}/nl.d.ts +0 -0
  429. /package/login/i18n/{baseMessages → messages_defaultSet}/nl.js +0 -0
  430. /package/login/i18n/{baseMessages → messages_defaultSet}/no.d.ts +0 -0
  431. /package/login/i18n/{baseMessages → messages_defaultSet}/no.js +0 -0
  432. /package/login/i18n/{baseMessages → messages_defaultSet}/pl.d.ts +0 -0
  433. /package/login/i18n/{baseMessages → messages_defaultSet}/pl.js +0 -0
  434. /package/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.d.ts +0 -0
  435. /package/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.js +0 -0
  436. /package/login/i18n/{baseMessages → messages_defaultSet}/ru.d.ts +0 -0
  437. /package/login/i18n/{baseMessages → messages_defaultSet}/ru.js +0 -0
  438. /package/login/i18n/{baseMessages → messages_defaultSet}/sk.d.ts +0 -0
  439. /package/login/i18n/{baseMessages → messages_defaultSet}/sk.js +0 -0
  440. /package/login/i18n/{baseMessages → messages_defaultSet}/sv.d.ts +0 -0
  441. /package/login/i18n/{baseMessages → messages_defaultSet}/sv.js +0 -0
  442. /package/login/i18n/{baseMessages → messages_defaultSet}/th.d.ts +0 -0
  443. /package/login/i18n/{baseMessages → messages_defaultSet}/th.js +0 -0
  444. /package/login/i18n/{baseMessages → messages_defaultSet}/tr.d.ts +0 -0
  445. /package/login/i18n/{baseMessages → messages_defaultSet}/tr.js +0 -0
  446. /package/login/i18n/{baseMessages → messages_defaultSet}/uk.d.ts +0 -0
  447. /package/login/i18n/{baseMessages → messages_defaultSet}/uk.js +0 -0
  448. /package/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.d.ts +0 -0
  449. /package/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.js +0 -0
  450. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ar.ts +0 -0
  451. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ca.ts +0 -0
  452. /package/src/account/i18n/{baseMessages → messages_defaultSet}/cs.ts +0 -0
  453. /package/src/account/i18n/{baseMessages → messages_defaultSet}/da.ts +0 -0
  454. /package/src/account/i18n/{baseMessages → messages_defaultSet}/de.ts +0 -0
  455. /package/src/account/i18n/{baseMessages → messages_defaultSet}/el.ts +0 -0
  456. /package/src/account/i18n/{baseMessages → messages_defaultSet}/en.ts +0 -0
  457. /package/src/account/i18n/{baseMessages → messages_defaultSet}/es.ts +0 -0
  458. /package/src/account/i18n/{baseMessages → messages_defaultSet}/fa.ts +0 -0
  459. /package/src/account/i18n/{baseMessages → messages_defaultSet}/fi.ts +0 -0
  460. /package/src/account/i18n/{baseMessages → messages_defaultSet}/fr.ts +0 -0
  461. /package/src/account/i18n/{baseMessages → messages_defaultSet}/hu.ts +0 -0
  462. /package/src/account/i18n/{baseMessages → messages_defaultSet}/it.ts +0 -0
  463. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ja.ts +0 -0
  464. /package/src/account/i18n/{baseMessages → messages_defaultSet}/lt.ts +0 -0
  465. /package/src/account/i18n/{baseMessages → messages_defaultSet}/lv.ts +0 -0
  466. /package/src/account/i18n/{baseMessages → messages_defaultSet}/nl.ts +0 -0
  467. /package/src/account/i18n/{baseMessages → messages_defaultSet}/no.ts +0 -0
  468. /package/src/account/i18n/{baseMessages → messages_defaultSet}/pl.ts +0 -0
  469. /package/src/account/i18n/{baseMessages → messages_defaultSet}/pt-BR.ts +0 -0
  470. /package/src/account/i18n/{baseMessages → messages_defaultSet}/ru.ts +0 -0
  471. /package/src/account/i18n/{baseMessages → messages_defaultSet}/sk.ts +0 -0
  472. /package/src/account/i18n/{baseMessages → messages_defaultSet}/sv.ts +0 -0
  473. /package/src/account/i18n/{baseMessages → messages_defaultSet}/th.ts +0 -0
  474. /package/src/account/i18n/{baseMessages → messages_defaultSet}/tr.ts +0 -0
  475. /package/src/account/i18n/{baseMessages → messages_defaultSet}/uk.ts +0 -0
  476. /package/src/account/i18n/{baseMessages → messages_defaultSet}/zh-CN.ts +0 -0
  477. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ar.ts +0 -0
  478. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ca.ts +0 -0
  479. /package/src/login/i18n/{baseMessages → messages_defaultSet}/cs.ts +0 -0
  480. /package/src/login/i18n/{baseMessages → messages_defaultSet}/da.ts +0 -0
  481. /package/src/login/i18n/{baseMessages → messages_defaultSet}/de.ts +0 -0
  482. /package/src/login/i18n/{baseMessages → messages_defaultSet}/el.ts +0 -0
  483. /package/src/login/i18n/{baseMessages → messages_defaultSet}/en.ts +0 -0
  484. /package/src/login/i18n/{baseMessages → messages_defaultSet}/es.ts +0 -0
  485. /package/src/login/i18n/{baseMessages → messages_defaultSet}/fa.ts +0 -0
  486. /package/src/login/i18n/{baseMessages → messages_defaultSet}/fi.ts +0 -0
  487. /package/src/login/i18n/{baseMessages → messages_defaultSet}/fr.ts +0 -0
  488. /package/src/login/i18n/{baseMessages → messages_defaultSet}/hu.ts +0 -0
  489. /package/src/login/i18n/{baseMessages → messages_defaultSet}/it.ts +0 -0
  490. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ja.ts +0 -0
  491. /package/src/login/i18n/{baseMessages → messages_defaultSet}/lt.ts +0 -0
  492. /package/src/login/i18n/{baseMessages → messages_defaultSet}/lv.ts +0 -0
  493. /package/src/login/i18n/{baseMessages → messages_defaultSet}/nl.ts +0 -0
  494. /package/src/login/i18n/{baseMessages → messages_defaultSet}/no.ts +0 -0
  495. /package/src/login/i18n/{baseMessages → messages_defaultSet}/pl.ts +0 -0
  496. /package/src/login/i18n/{baseMessages → messages_defaultSet}/pt-BR.ts +0 -0
  497. /package/src/login/i18n/{baseMessages → messages_defaultSet}/ru.ts +0 -0
  498. /package/src/login/i18n/{baseMessages → messages_defaultSet}/sk.ts +0 -0
  499. /package/src/login/i18n/{baseMessages → messages_defaultSet}/sv.ts +0 -0
  500. /package/src/login/i18n/{baseMessages → messages_defaultSet}/th.ts +0 -0
  501. /package/src/login/i18n/{baseMessages → messages_defaultSet}/tr.ts +0 -0
  502. /package/src/login/i18n/{baseMessages → messages_defaultSet}/uk.ts +0 -0
  503. /package/src/login/i18n/{baseMessages → messages_defaultSet}/zh-CN.ts +0 -0
@@ -1,22 +1,22 @@
1
- export const keycloak_resources = "keycloak-resources";
2
- export const resources_common = "resources-common";
3
- export const lastKeycloakVersionWithAccountV1 = "21.1.2";
4
- export const basenameOfTheKeycloakifyResourcesDir = "dist";
1
+ export const KEYCLOAK_RESOURCES = "keycloak-resources";
2
+ export const RESOURCES_COMMON = "resources-common";
3
+ export const LAST_KEYCLOAK_VERSION_WITH_ACCOUNT_V1 = "21.1.2";
4
+ export const BASENAME_OF_KEYCLOAKIFY_RESOURCES_DIR = "dist";
5
5
 
6
- export const themeTypes = ["login", "account"] as const;
7
- export const accountV1ThemeName = "account-v1";
6
+ export const THEME_TYPES = ["login", "account"] as const;
7
+ export const ACCOUNT_V1_THEME_NAME = "account-v1";
8
8
 
9
- export type ThemeType = (typeof themeTypes)[number];
9
+ export type ThemeType = (typeof THEME_TYPES)[number];
10
10
 
11
- export const vitePluginSubScriptEnvNames = {
12
- runPostBuildScript: "KEYCLOAKIFY_RUN_POST_BUILD_SCRIPT",
13
- resolveViteConfig: "KEYCLOAKIFY_RESOLVE_VITE_CONFIG"
11
+ export const VITE_PLUGIN_SUB_SCRIPTS_ENV_NAMES = {
12
+ RUN_POST_BUILD_SCRIPT: "KEYCLOAKIFY_RUN_POST_BUILD_SCRIPT",
13
+ RESOLVE_VITE_CONFIG: "KEYCLOAKIFY_RESOLVE_VITE_CONFIG"
14
14
  } as const;
15
15
 
16
- export const buildForKeycloakMajorVersionEnvName =
16
+ export const BUILD_FOR_KEYCLOAK_MAJOR_VERSION_ENV_NAME =
17
17
  "KEYCLOAKIFY_BUILD_FOR_KEYCLOAK_MAJOR_VERSION";
18
18
 
19
- export const loginThemePageIds = [
19
+ export const LOGIN_THEME_PAGE_IDS = [
20
20
  "login.ftl",
21
21
  "login-username.ftl",
22
22
  "login-password.ftl",
@@ -53,7 +53,7 @@ export const loginThemePageIds = [
53
53
  "webauthn-error.ftl"
54
54
  ] as const;
55
55
 
56
- export const accountThemePageIds = [
56
+ export const ACCOUNT_THEME_PAGE_IDS = [
57
57
  "password.ftl",
58
58
  "account.ftl",
59
59
  "sessions.ftl",
@@ -63,9 +63,11 @@ export const accountThemePageIds = [
63
63
  "federatedIdentity.ftl"
64
64
  ] as const;
65
65
 
66
- export type LoginThemePageId = (typeof loginThemePageIds)[number];
67
- export type AccountThemePageId = (typeof accountThemePageIds)[number];
66
+ export type LoginThemePageId = (typeof LOGIN_THEME_PAGE_IDS)[number];
67
+ export type AccountThemePageId = (typeof ACCOUNT_THEME_PAGE_IDS)[number];
68
68
 
69
- export const containerName = "keycloak-keycloakify";
69
+ export const CONTAINER_NAME = "keycloak-keycloakify";
70
70
 
71
- export const fallbackLanguageTag = "en";
71
+ export const FALLBACK_LANGUAGE_TAG = "en";
72
+
73
+ export const LOGIN_THEME_RESOURCES_FROMkEYCLOAK_VERSION_DEFAULT = "24.0.4";
@@ -4,9 +4,9 @@ import {
4
4
  } from "./downloadKeycloakStaticResources";
5
5
  import { join as pathJoin, relative as pathRelative } from "path";
6
6
  import {
7
- themeTypes,
8
- keycloak_resources,
9
- lastKeycloakVersionWithAccountV1
7
+ THEME_TYPES,
8
+ KEYCLOAK_RESOURCES,
9
+ LAST_KEYCLOAK_VERSION_WITH_ACCOUNT_V1
10
10
  } from "../shared/constants";
11
11
  import { readThisNpmPackageVersion } from "../tools/readThisNpmPackageVersion";
12
12
  import { assert } from "tsafe/assert";
@@ -26,7 +26,7 @@ export async function copyKeycloakResourcesToPublic(params: {
26
26
  }) {
27
27
  const { buildContext } = params;
28
28
 
29
- const destDirPath = pathJoin(buildContext.publicDirPath, keycloak_resources);
29
+ const destDirPath = pathJoin(buildContext.publicDirPath, KEYCLOAK_RESOURCES);
30
30
 
31
31
  const keycloakifyBuildinfoFilePath = pathJoin(destDirPath, "keycloakify.buildinfo");
32
32
 
@@ -66,14 +66,14 @@ export async function copyKeycloakResourcesToPublic(params: {
66
66
 
67
67
  fs.writeFileSync(pathJoin(destDirPath, ".gitignore"), Buffer.from("*", "utf8"));
68
68
 
69
- for (const themeType of themeTypes) {
69
+ for (const themeType of THEME_TYPES) {
70
70
  await downloadKeycloakStaticResources({
71
71
  keycloakVersion: (() => {
72
72
  switch (themeType) {
73
73
  case "login":
74
74
  return buildContext.loginThemeResourcesFromKeycloakVersion;
75
75
  case "account":
76
- return lastKeycloakVersionWithAccountV1;
76
+ return LAST_KEYCLOAK_VERSION_WITH_ACCOUNT_V1;
77
77
  }
78
78
  })(),
79
79
  themeType,
@@ -1,7 +1,7 @@
1
1
  import { join as pathJoin, relative as pathRelative } from "path";
2
2
  import { type BuildContext } from "./buildContext";
3
3
  import { assert } from "tsafe/assert";
4
- import { lastKeycloakVersionWithAccountV1 } from "./constants";
4
+ import { LAST_KEYCLOAK_VERSION_WITH_ACCOUNT_V1 } from "./constants";
5
5
  import { downloadAndExtractArchive } from "../tools/downloadAndExtractArchive";
6
6
 
7
7
  export type BuildContextLike = {
@@ -17,14 +17,14 @@ export async function downloadKeycloakDefaultTheme(params: {
17
17
  }): Promise<{ defaultThemeDirPath: string }> {
18
18
  const { keycloakVersion, buildContext } = params;
19
19
 
20
- let kcNodeModulesKeepFilePaths: string[] | undefined = undefined;
21
- let kcNodeModulesKeepFilePaths_lastAccountV1: string[] | undefined = undefined;
20
+ let kcNodeModulesKeepFilePaths: Set<string> | undefined = undefined;
21
+ let kcNodeModulesKeepFilePaths_lastAccountV1: Set<string> | undefined = undefined;
22
22
 
23
23
  const { extractedDirPath } = await downloadAndExtractArchive({
24
24
  url: `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`,
25
25
  cacheDirPath: buildContext.cacheDirPath,
26
26
  fetchOptions: buildContext.fetchOptions,
27
- uniqueIdOfOnOnArchiveFile: "downloadKeycloakDefaultTheme",
27
+ uniqueIdOfOnArchiveFile: "downloadKeycloakDefaultTheme",
28
28
  onArchiveFile: async params => {
29
29
  const fileRelativePath = pathRelative("theme", params.fileRelativePath);
30
30
 
@@ -43,7 +43,7 @@ export async function downloadKeycloakDefaultTheme(params: {
43
43
  }
44
44
 
45
45
  last_account_v1_transformations: {
46
- if (lastKeycloakVersionWithAccountV1 !== keycloakVersion) {
46
+ if (LAST_KEYCLOAK_VERSION_WITH_ACCOUNT_V1 !== keycloakVersion) {
47
47
  break last_account_v1_transformations;
48
48
  }
49
49
 
@@ -72,16 +72,19 @@ export async function downloadKeycloakDefaultTheme(params: {
72
72
  }
73
73
 
74
74
  skip_node_modules: {
75
- if (
76
- !fileRelativePath.startsWith(
77
- pathJoin("keycloak", "common", "resources", "node_modules")
78
- )
79
- ) {
75
+ const nodeModulesRelativeDirPath = pathJoin(
76
+ "keycloak",
77
+ "common",
78
+ "resources",
79
+ "node_modules"
80
+ );
81
+
82
+ if (!fileRelativePath.startsWith(nodeModulesRelativeDirPath)) {
80
83
  break skip_node_modules;
81
84
  }
82
85
 
83
86
  if (kcNodeModulesKeepFilePaths_lastAccountV1 === undefined) {
84
- kcNodeModulesKeepFilePaths_lastAccountV1 = [
87
+ kcNodeModulesKeepFilePaths_lastAccountV1 = new Set([
85
88
  pathJoin("patternfly", "dist", "css", "patternfly.min.css"),
86
89
  pathJoin(
87
90
  "patternfly",
@@ -125,13 +128,19 @@ export async function downloadKeycloakDefaultTheme(params: {
125
128
  "fonts",
126
129
  "PatternFlyIcons-webfont.woff"
127
130
  )
128
- ];
131
+ ]);
129
132
  }
130
133
 
131
- for (const keepPath of kcNodeModulesKeepFilePaths_lastAccountV1) {
132
- if (fileRelativePath.endsWith(keepPath)) {
133
- break skip_node_modules;
134
- }
134
+ const fileRelativeToNodeModulesPath = fileRelativePath.substring(
135
+ nodeModulesRelativeDirPath.length + 1
136
+ );
137
+
138
+ if (
139
+ kcNodeModulesKeepFilePaths_lastAccountV1.has(
140
+ fileRelativeToNodeModulesPath
141
+ )
142
+ ) {
143
+ break skip_node_modules;
135
144
  }
136
145
 
137
146
  return;
@@ -165,16 +174,19 @@ export async function downloadKeycloakDefaultTheme(params: {
165
174
  }
166
175
 
167
176
  skip_node_modules: {
168
- if (
169
- !fileRelativePath.startsWith(
170
- pathJoin("keycloak", "common", "resources", "node_modules")
171
- )
172
- ) {
177
+ const nodeModulesRelativeDirPath = pathJoin(
178
+ "keycloak",
179
+ "common",
180
+ "resources",
181
+ "node_modules"
182
+ );
183
+
184
+ if (!fileRelativePath.startsWith(nodeModulesRelativeDirPath)) {
173
185
  break skip_node_modules;
174
186
  }
175
187
 
176
188
  if (kcNodeModulesKeepFilePaths === undefined) {
177
- kcNodeModulesKeepFilePaths = [
189
+ kcNodeModulesKeepFilePaths = new Set([
178
190
  pathJoin("@patternfly", "patternfly", "patternfly.min.css"),
179
191
  pathJoin("patternfly", "dist", "css", "patternfly.min.css"),
180
192
  pathJoin(
@@ -231,14 +243,23 @@ export async function downloadKeycloakDefaultTheme(params: {
231
243
  "fonts",
232
244
  "PatternFlyIcons-webfont.woff"
233
245
  ),
246
+ pathJoin(
247
+ "patternfly",
248
+ "dist",
249
+ "fonts",
250
+ "OpenSans-Semibold-webfont.woff2"
251
+ ),
252
+ pathJoin("patternfly", "dist", "img", "bg-login.jpg"),
234
253
  pathJoin("jquery", "dist", "jquery.min.js")
235
- ];
254
+ ]);
236
255
  }
237
256
 
238
- for (const keepPath of kcNodeModulesKeepFilePaths) {
239
- if (fileRelativePath.endsWith(keepPath)) {
240
- break skip_node_modules;
241
- }
257
+ const fileRelativeToNodeModulesPath = fileRelativePath.substring(
258
+ nodeModulesRelativeDirPath.length + 1
259
+ );
260
+
261
+ if (kcNodeModulesKeepFilePaths.has(fileRelativeToNodeModulesPath)) {
262
+ break skip_node_modules;
242
263
  }
243
264
 
244
265
  return;
@@ -4,7 +4,7 @@ import {
4
4
  downloadKeycloakDefaultTheme,
5
5
  type BuildContextLike as BuildContextLike_downloadKeycloakDefaultTheme
6
6
  } from "./downloadKeycloakDefaultTheme";
7
- import { resources_common, type ThemeType } from "./constants";
7
+ import { RESOURCES_COMMON, type ThemeType } from "./constants";
8
8
  import type { BuildContext } from "./buildContext";
9
9
  import { assert } from "tsafe/assert";
10
10
  import { existsAsync } from "../tools/fs.existsAsync";
@@ -48,6 +48,6 @@ export async function downloadKeycloakStaticResources(params: {
48
48
 
49
49
  transformCodebase({
50
50
  srcDirPath: pathJoin(defaultThemeDirPath, "keycloak", "common", "resources"),
51
- destDirPath: pathJoin(resourcesDirPath, resources_common)
51
+ destDirPath: pathJoin(resourcesDirPath, RESOURCES_COMMON)
52
52
  });
53
53
  }
@@ -1,14 +1,21 @@
1
- import { assert } from "tsafe/assert";
1
+ import { assert, type Equals } from "tsafe/assert";
2
+ import { id } from "tsafe/id";
2
3
  import type { BuildContext } from "./buildContext";
3
4
  import * as fs from "fs/promises";
4
5
  import { join as pathJoin } from "path";
5
6
  import { existsAsync } from "../tools/fs.existsAsync";
7
+ import { z } from "zod";
6
8
 
7
9
  export type BuildContextLike = {
8
10
  projectDirPath: string;
9
11
  themeNames: string[];
10
12
  environmentVariables: { name: string; default: string }[];
11
13
  themeSrcDirPath: string;
14
+ implementedThemeTypes: Pick<
15
+ BuildContext["implementedThemeTypes"],
16
+ "login" | "account"
17
+ >;
18
+ packageJsonFilePath: string;
12
19
  };
13
20
 
14
21
  assert<BuildContext extends BuildContextLike ? true : false>();
@@ -18,12 +25,53 @@ export async function generateKcGenTs(params: {
18
25
  }): Promise<void> {
19
26
  const { buildContext } = params;
20
27
 
21
- const filePath = pathJoin(buildContext.themeSrcDirPath, "kc.gen.ts");
28
+ const isReactProject: boolean = await (async () => {
29
+ const parsedPackageJson = await (async () => {
30
+ type ParsedPackageJson = {
31
+ dependencies?: Record<string, string>;
32
+ devDependencies?: Record<string, string>;
33
+ };
34
+
35
+ const zParsedPackageJson = (() => {
36
+ type TargetType = ParsedPackageJson;
37
+
38
+ const zTargetType = z.object({
39
+ dependencies: z.record(z.string()).optional(),
40
+ devDependencies: z.record(z.string()).optional()
41
+ });
42
+
43
+ assert<Equals<z.infer<typeof zTargetType>, TargetType>>();
44
+
45
+ return id<z.ZodType<TargetType>>(zTargetType);
46
+ })();
47
+
48
+ return zParsedPackageJson.parse(
49
+ JSON.parse(
50
+ (await fs.readFile(buildContext.packageJsonFilePath)).toString("utf8")
51
+ )
52
+ );
53
+ })();
54
+
55
+ return (
56
+ {
57
+ ...parsedPackageJson.dependencies,
58
+ ...parsedPackageJson.devDependencies
59
+ }.react !== undefined
60
+ );
61
+ })();
62
+
63
+ const filePath = pathJoin(
64
+ buildContext.themeSrcDirPath,
65
+ `kc.gen.ts${isReactProject ? "x" : ""}`
66
+ );
22
67
 
23
68
  const currentContent = (await existsAsync(filePath))
24
69
  ? await fs.readFile(filePath)
25
70
  : undefined;
26
71
 
72
+ const hasLoginTheme = buildContext.implementedThemeTypes.login.isImplemented;
73
+ const hasAccountTheme = buildContext.implementedThemeTypes.account.isImplemented;
74
+
27
75
  const newContent = Buffer.from(
28
76
  [
29
77
  `/* prettier-ignore-start */`,
@@ -36,6 +84,8 @@ export async function generateKcGenTs(params: {
36
84
  ``,
37
85
  `// This file is auto-generated by Keycloakify`,
38
86
  ``,
87
+ isReactProject && `import { lazy, Suspense, type ReactNode } from "react";`,
88
+ ``,
39
89
  `export type ThemeName = ${buildContext.themeNames.map(themeName => `"${themeName}"`).join(" | ")};`,
40
90
  ``,
41
91
  `export const themeNames: ThemeName[] = [${buildContext.themeNames.map(themeName => `"${themeName}"`).join(", ")}];`,
@@ -54,9 +104,52 @@ export async function generateKcGenTs(params: {
54
104
  2
55
105
  )};`,
56
106
  ``,
107
+ `export type KcContext =`,
108
+ hasLoginTheme && ` | import("./login/KcContext").KcContext`,
109
+ hasAccountTheme && ` | import("./account/KcContext").KcContext`,
110
+ ` ;`,
111
+ ``,
112
+ `declare global {`,
113
+ ` interface Window {`,
114
+ ` kcContext?: KcContext;`,
115
+ ` }`,
116
+ `}`,
117
+ ``,
118
+ ...(!isReactProject
119
+ ? []
120
+ : [
121
+ hasLoginTheme &&
122
+ `export const KcLoginPage = lazy(() => import("./login/KcPage"));`,
123
+ hasAccountTheme &&
124
+ `export const KcAccountPage = lazy(() => import("./account/KcPage"));`,
125
+ ``,
126
+ `export function KcPage(`,
127
+ ` props: {`,
128
+ ` kcContext: KcContext;`,
129
+ ` fallback?: ReactNode;`,
130
+ ` }`,
131
+ `) {`,
132
+ ` const { kcContext, fallback } = props;`,
133
+ ` return (`,
134
+ ` <Suspense fallback={fallback}>`,
135
+ ` {(() => {`,
136
+ ` switch (kcContext.themeType) {`,
137
+ hasLoginTheme &&
138
+ ` case "login": return <KcLoginPage kcContext={kcContext} />;`,
139
+ hasAccountTheme &&
140
+ ` case "account": return <KcAccountPage kcContext={kcContext} />;`,
141
+ ` }`,
142
+ ` })()}`,
143
+ ` </Suspense>`,
144
+ ` );`,
145
+ `}`
146
+ ]),
147
+ ``,
57
148
  `/* prettier-ignore-end */`,
58
149
  ``
59
- ].join("\n"),
150
+ ]
151
+ .filter(item => typeof item === "string")
152
+ .join("\n"),
60
153
  "utf8"
61
154
  );
62
155
 
@@ -65,4 +158,18 @@ export async function generateKcGenTs(params: {
65
158
  }
66
159
 
67
160
  await fs.writeFile(filePath, newContent);
161
+
162
+ delete_legacy_file: {
163
+ if (!isReactProject) {
164
+ break delete_legacy_file;
165
+ }
166
+
167
+ const legacyFilePath = filePath.replace(/tsx$/, "ts");
168
+
169
+ if (!(await existsAsync(legacyFilePath))) {
170
+ break delete_legacy_file;
171
+ }
172
+
173
+ await fs.unlink(legacyFilePath);
174
+ }
68
175
  }
@@ -0,0 +1,201 @@
1
+ import { getLatestsSemVersionedTagFactory } from "../tools/octokit-addons/getLatestsSemVersionedTag";
2
+ import { Octokit } from "@octokit/rest";
3
+ import type { ReturnType } from "tsafe";
4
+ import type { Param0 } from "tsafe";
5
+ import { join as pathJoin, dirname as pathDirname } from "path";
6
+ import * as fs from "fs";
7
+ import { z } from "zod";
8
+ import { assert, type Equals } from "tsafe/assert";
9
+ import { id } from "tsafe/id";
10
+ import type { SemVer } from "../tools/SemVer";
11
+ import { same } from "evt/tools/inDepth/same";
12
+ import type { BuildContext } from "./buildContext";
13
+ import fetch from "make-fetch-happen";
14
+
15
+ type GetLatestsSemVersionedTag = ReturnType<
16
+ typeof getLatestsSemVersionedTagFactory
17
+ >["getLatestsSemVersionedTag"];
18
+
19
+ type Params = Param0<GetLatestsSemVersionedTag>;
20
+ type R = ReturnType<GetLatestsSemVersionedTag>;
21
+
22
+ let getLatestsSemVersionedTag_stateless: GetLatestsSemVersionedTag | undefined =
23
+ undefined;
24
+
25
+ const CACHE_VERSION = 1;
26
+
27
+ type Cache = {
28
+ version: typeof CACHE_VERSION;
29
+ entries: {
30
+ time: number;
31
+ params: Params;
32
+ result: R;
33
+ }[];
34
+ };
35
+
36
+ export type BuildContextLike = {
37
+ cacheDirPath: string;
38
+ fetchOptions: BuildContext["fetchOptions"];
39
+ };
40
+
41
+ assert<BuildContext extends BuildContextLike ? true : false>();
42
+
43
+ export async function getLatestsSemVersionedTag({
44
+ buildContext,
45
+ ...params
46
+ }: Params & {
47
+ buildContext: BuildContextLike;
48
+ }): Promise<R> {
49
+ const cacheFilePath = pathJoin(
50
+ buildContext.cacheDirPath,
51
+ "latest-sem-versioned-tags.json"
52
+ );
53
+
54
+ const cacheLookupResult = (() => {
55
+ const getResult_currentCache = (currentCacheEntries: Cache["entries"]) => ({
56
+ hasCachedResult: false as const,
57
+ currentCache: {
58
+ version: CACHE_VERSION,
59
+ entries: currentCacheEntries
60
+ }
61
+ });
62
+
63
+ if (!fs.existsSync(cacheFilePath)) {
64
+ return getResult_currentCache([]);
65
+ }
66
+
67
+ let cache_json;
68
+
69
+ try {
70
+ cache_json = fs.readFileSync(cacheFilePath).toString("utf8");
71
+ } catch {
72
+ return getResult_currentCache([]);
73
+ }
74
+
75
+ let cache_json_parsed: unknown;
76
+
77
+ try {
78
+ cache_json_parsed = JSON.parse(cache_json);
79
+ } catch {
80
+ return getResult_currentCache([]);
81
+ }
82
+
83
+ const zSemVer = (() => {
84
+ type TargetType = SemVer;
85
+
86
+ const zTargetType = z.object({
87
+ major: z.number(),
88
+ minor: z.number(),
89
+ patch: z.number(),
90
+ rc: z.number().optional(),
91
+ parsedFrom: z.string()
92
+ });
93
+
94
+ assert<Equals<z.infer<typeof zTargetType>, TargetType>>();
95
+
96
+ return id<z.ZodType<TargetType>>(zTargetType);
97
+ })();
98
+
99
+ const zCache = (() => {
100
+ type TargetType = Cache;
101
+
102
+ const zTargetType = z.object({
103
+ version: z.literal(CACHE_VERSION),
104
+ entries: z.array(
105
+ z.object({
106
+ time: z.number(),
107
+ params: z.object({
108
+ owner: z.string(),
109
+ repo: z.string(),
110
+ count: z.number(),
111
+ doIgnoreReleaseCandidates: z.boolean()
112
+ }),
113
+ result: z.array(
114
+ z.object({
115
+ tag: z.string(),
116
+ version: zSemVer
117
+ })
118
+ )
119
+ })
120
+ )
121
+ });
122
+
123
+ assert<Equals<z.infer<typeof zTargetType>, TargetType>>();
124
+
125
+ return id<z.ZodType<TargetType>>(zTargetType);
126
+ })();
127
+
128
+ let cache: Cache;
129
+
130
+ try {
131
+ cache = zCache.parse(cache_json_parsed);
132
+ } catch {
133
+ return getResult_currentCache([]);
134
+ }
135
+
136
+ const cacheEntry = cache.entries.find(e => same(e.params, params));
137
+
138
+ if (cacheEntry === undefined) {
139
+ return getResult_currentCache(cache.entries);
140
+ }
141
+
142
+ if (Date.now() - cacheEntry.time > 3_600_000) {
143
+ return getResult_currentCache(cache.entries.filter(e => e !== cacheEntry));
144
+ }
145
+ return {
146
+ hasCachedResult: true as const,
147
+ cachedResult: cacheEntry.result
148
+ };
149
+ })();
150
+
151
+ if (cacheLookupResult.hasCachedResult) {
152
+ return cacheLookupResult.cachedResult;
153
+ }
154
+
155
+ const { currentCache } = cacheLookupResult;
156
+
157
+ getLatestsSemVersionedTag_stateless ??= (() => {
158
+ const octokit = (() => {
159
+ const githubToken = process.env.GITHUB_TOKEN;
160
+
161
+ const octokit = new Octokit({
162
+ ...(githubToken === undefined ? {} : { auth: githubToken }),
163
+ request: {
164
+ fetch: (url: string, options?: any) =>
165
+ fetch(url, {
166
+ ...options,
167
+ ...buildContext.fetchOptions
168
+ })
169
+ }
170
+ });
171
+
172
+ return octokit;
173
+ })();
174
+
175
+ const { getLatestsSemVersionedTag } = getLatestsSemVersionedTagFactory({
176
+ octokit
177
+ });
178
+
179
+ return getLatestsSemVersionedTag;
180
+ })();
181
+
182
+ const result = await getLatestsSemVersionedTag_stateless(params);
183
+
184
+ currentCache.entries.push({
185
+ time: Date.now(),
186
+ params,
187
+ result
188
+ });
189
+
190
+ {
191
+ const dirPath = pathDirname(cacheFilePath);
192
+
193
+ if (!fs.existsSync(dirPath)) {
194
+ fs.mkdirSync(dirPath, { recursive: true });
195
+ }
196
+ }
197
+
198
+ fs.writeFileSync(cacheFilePath, JSON.stringify(currentCache, null, 2));
199
+
200
+ return result;
201
+ }