keycloakify 10.0.0-rc.3 → 10.0.0-rc.5

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 (382) 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 +1 -1
  6. package/account/Template.js.map +1 -1
  7. package/account/i18n/baseMessages/index.js.map +1 -1
  8. package/account/i18n/i18n.js +1 -1
  9. package/account/i18n/i18n.js.map +1 -1
  10. package/account/index.d.ts +1 -1
  11. package/account/kcContext/KcContext.d.ts +62 -44
  12. package/account/kcContext/KcContext.js.map +1 -1
  13. package/account/kcContext/createGetKcContext.d.ts +3 -3
  14. package/account/kcContext/createGetKcContext.js.map +1 -1
  15. package/account/kcContext/getKcContextFromWindow.js +1 -1
  16. package/account/kcContext/getKcContextFromWindow.js.map +1 -1
  17. package/account/kcContext/kcContextMocks.js +22 -14
  18. package/account/kcContext/kcContextMocks.js.map +1 -1
  19. package/account/pages/Account.js +1 -1
  20. package/account/pages/Account.js.map +1 -1
  21. package/account/pages/Applications.js +3 -3
  22. package/account/pages/Applications.js.map +1 -1
  23. package/account/pages/FederatedIdentity.d.ts +7 -0
  24. package/account/pages/FederatedIdentity.js +8 -0
  25. package/account/pages/FederatedIdentity.js.map +1 -0
  26. package/account/pages/Log.js +2 -2
  27. package/account/pages/Log.js.map +1 -1
  28. package/account/pages/Password.js +4 -6
  29. package/account/pages/Password.js.map +1 -1
  30. package/account/pages/Sessions.js +1 -5
  31. package/account/pages/Sessions.js.map +1 -1
  32. package/account/pages/Totp.js +2 -2
  33. package/account/pages/Totp.js.map +1 -1
  34. package/bin/copy-keycloak-resources-to-public.d.ts +3 -13
  35. package/bin/copy-keycloak-resources-to-public.js +22 -166
  36. package/bin/copy-keycloak-resources-to-public.js.map +1 -1
  37. package/bin/download-builtin-keycloak-theme.d.ts +3 -9
  38. package/bin/download-builtin-keycloak-theme.js +15 -291
  39. package/bin/download-builtin-keycloak-theme.js.map +1 -1
  40. package/bin/eject-keycloak-page.d.ts +4 -1
  41. package/bin/eject-keycloak-page.js +59 -54
  42. package/bin/eject-keycloak-page.js.map +1 -1
  43. package/bin/initialize-email-theme.d.ts +4 -2
  44. package/bin/initialize-email-theme.js +17 -19
  45. package/bin/initialize-email-theme.js.map +1 -1
  46. package/bin/keycloakify/buildJars/buildJar.d.ts +1 -0
  47. package/bin/keycloakify/buildJars/buildJar.js +14 -25
  48. package/bin/keycloakify/buildJars/buildJar.js.map +1 -1
  49. package/bin/keycloakify/buildJars/buildJars.d.ts +1 -4
  50. package/bin/keycloakify/buildJars/buildJars.js +17 -8
  51. package/bin/keycloakify/buildJars/buildJars.js.map +1 -1
  52. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +2 -1
  53. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +39 -17
  54. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +1 -1
  55. package/bin/keycloakify/generateFtl/generateFtl.d.ts +1 -1
  56. package/bin/keycloakify/generateFtl/generateFtl.js +1 -1
  57. package/bin/keycloakify/generateFtl/generateFtl.js.map +1 -1
  58. package/bin/keycloakify/generateFtl/index.d.ts +0 -1
  59. package/bin/keycloakify/generateFtl/index.js +0 -1
  60. package/bin/keycloakify/generateFtl/index.js.map +1 -1
  61. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.d.ts +1 -1
  62. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.js +7 -7
  63. package/bin/keycloakify/generateSrcMainResources/bringInAccountV1.js.map +1 -0
  64. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.d.ts +1 -1
  65. package/bin/keycloakify/generateSrcMainResources/generateMessageProperties.js.map +1 -0
  66. package/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.d.ts +7 -0
  67. package/bin/keycloakify/{generateTheme/generateTheme.js → generateSrcMainResources/generateSrcMainResources.js} +13 -19
  68. package/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.js.map +1 -0
  69. package/bin/keycloakify/{generateTheme/generateSrcMainResources.d.ts → generateSrcMainResources/generateSrcMainResourcesForMainTheme.d.ts} +4 -8
  70. package/bin/keycloakify/{generateTheme/generateSrcMainResources.js → generateSrcMainResources/generateSrcMainResourcesForMainTheme.js} +54 -52
  71. package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.js.map +1 -0
  72. package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.d.ts +8 -0
  73. package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.js +47 -0
  74. package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.js.map +1 -0
  75. package/bin/keycloakify/generateSrcMainResources/index.d.ts +1 -0
  76. package/bin/keycloakify/{buildOptions → generateSrcMainResources}/index.js +1 -1
  77. package/bin/keycloakify/generateSrcMainResources/index.js.map +1 -0
  78. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.d.ts +1 -1
  79. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.js +3 -3
  80. package/bin/keycloakify/generateSrcMainResources/readExtraPageNames.js.map +1 -0
  81. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.d.ts +1 -2
  82. package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.js +3 -2
  83. package/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.js.map +1 -0
  84. package/bin/keycloakify/generateStartKeycloakTestingContainer.js +1 -1
  85. package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +1 -1
  86. package/bin/keycloakify/index.d.ts +0 -1
  87. package/bin/keycloakify/index.js +0 -5
  88. package/bin/keycloakify/index.js.map +1 -1
  89. package/bin/keycloakify/keycloakify.d.ts +4 -1
  90. package/bin/keycloakify/keycloakify.js +15 -61
  91. package/bin/keycloakify/keycloakify.js.map +1 -1
  92. package/bin/keycloakify/replacers/replaceImportsInCssCode.js +1 -1
  93. package/bin/keycloakify/replacers/replaceImportsInCssCode.js.map +1 -1
  94. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js +1 -1
  95. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js.map +1 -1
  96. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js.map +1 -1
  97. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js +1 -1
  98. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js.map +1 -1
  99. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js +1 -1
  100. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js.map +1 -1
  101. package/bin/main.d.ts +5 -0
  102. package/bin/main.js +224 -0
  103. package/bin/main.js.map +1 -0
  104. package/bin/shared/KeycloakVersionRange.d.ts +5 -0
  105. package/bin/shared/KeycloakVersionRange.js +3 -0
  106. package/bin/shared/KeycloakVersionRange.js.map +1 -0
  107. package/bin/{keycloakify/buildOptions → shared}/buildOptions.d.ts +17 -1
  108. package/bin/{keycloakify/buildOptions → shared}/buildOptions.js +72 -35
  109. package/bin/shared/buildOptions.js.map +1 -0
  110. package/bin/{constants.d.ts → shared/constants.d.ts} +4 -2
  111. package/bin/shared/constants.js +15 -0
  112. package/bin/shared/constants.js.map +1 -0
  113. package/bin/shared/copyKeycloakResourcesToPublic.d.ts +8 -0
  114. package/bin/shared/copyKeycloakResourcesToPublic.js +175 -0
  115. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -0
  116. package/bin/{downloadAndUnzip.js → shared/downloadAndUnzip.js} +11 -11
  117. package/bin/shared/downloadAndUnzip.js.map +1 -0
  118. package/bin/shared/downloadBuiltinKeycloakTheme.d.ts +9 -0
  119. package/bin/shared/downloadBuiltinKeycloakTheme.js +316 -0
  120. package/bin/shared/downloadBuiltinKeycloakTheme.js.map +1 -0
  121. package/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.d.ts +1 -1
  122. package/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.js +7 -7
  123. package/bin/shared/downloadKeycloakStaticResources.js.map +1 -0
  124. package/bin/shared/getJarFileBasename.d.ts +6 -0
  125. package/bin/shared/getJarFileBasename.js +10 -0
  126. package/bin/shared/getJarFileBasename.js.map +1 -0
  127. package/bin/{getThemeSrcDirPath.js → shared/getThemeSrcDirPath.js} +1 -1
  128. package/bin/shared/getThemeSrcDirPath.js.map +1 -0
  129. package/bin/shared/metaInfKeycloakThemes.d.ts +17 -0
  130. package/bin/shared/metaInfKeycloakThemes.js +51 -0
  131. package/bin/shared/metaInfKeycloakThemes.js.map +1 -0
  132. package/bin/{keycloakify/generateFtl/pageId.d.ts → shared/pageIds.d.ts} +1 -1
  133. package/bin/{keycloakify/generateFtl/pageId.js → shared/pageIds.js} +10 -2
  134. package/bin/shared/pageIds.js.map +1 -0
  135. package/bin/shared/promptKeycloakVersion.d.ts +5 -0
  136. package/bin/{promptKeycloakVersion.js → shared/promptKeycloakVersion.js} +32 -48
  137. package/bin/shared/promptKeycloakVersion.js.map +1 -0
  138. package/bin/start-keycloak-container.d.ts +4 -0
  139. package/bin/start-keycloak-container.js +209 -0
  140. package/bin/start-keycloak-container.js.map +1 -0
  141. package/bin/tools/SemVer.js +1 -1
  142. package/bin/tools/SemVer.js.map +1 -1
  143. package/bin/tools/String.prototype.replaceAll.js.map +1 -1
  144. package/bin/tools/crawl.js.map +1 -1
  145. package/bin/tools/crc32.js.map +1 -1
  146. package/bin/tools/deflate.js +10 -1
  147. package/bin/tools/deflate.js.map +1 -1
  148. package/bin/tools/fetchProxyOptions.js +9 -9
  149. package/bin/tools/fetchProxyOptions.js.map +1 -1
  150. package/bin/tools/fs.rm.js.map +1 -1
  151. package/bin/tools/fs.rmSync.js +4 -4
  152. package/bin/tools/fs.rmSync.js.map +1 -1
  153. package/bin/tools/getAbsoluteAndInOsFormatPath.js.map +1 -1
  154. package/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.js +1 -13
  155. package/bin/tools/getNpmWorkspaceRootDirPath.js.map +1 -0
  156. package/bin/tools/getThisCodebaseRootDirPath.js.map +1 -1
  157. package/bin/tools/logger.d.ts +1 -1
  158. package/bin/tools/logger.js.map +1 -1
  159. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +21 -24
  160. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +1 -1
  161. package/bin/tools/octokit-addons/listTags.js +3 -2
  162. package/bin/tools/octokit-addons/listTags.js.map +1 -1
  163. package/bin/tools/transformCodebase.js.map +1 -1
  164. package/bin/tools/trimIndent.js.map +1 -1
  165. package/bin/tools/unzip.js.map +1 -1
  166. package/lib/BASE_URL.js.map +1 -1
  167. package/lib/keycloakJsAdapter.js.map +1 -1
  168. package/login/Fallback.js.map +1 -1
  169. package/login/Template.js +3 -3
  170. package/login/Template.js.map +1 -1
  171. package/login/UserProfileFormFields.js +17 -19
  172. package/login/UserProfileFormFields.js.map +1 -1
  173. package/login/i18n/baseMessages/index.js.map +1 -1
  174. package/login/i18n/i18n.js +1 -1
  175. package/login/i18n/i18n.js.map +1 -1
  176. package/login/index.d.ts +1 -1
  177. package/login/kcContext/KcContext.js.map +1 -1
  178. package/login/kcContext/createGetKcContext.d.ts +3 -3
  179. package/login/kcContext/createGetKcContext.js.map +1 -1
  180. package/login/kcContext/getKcContextFromWindow.js +1 -1
  181. package/login/kcContext/getKcContextFromWindow.js.map +1 -1
  182. package/login/kcContext/kcContextMocks.js +1 -1
  183. package/login/kcContext/kcContextMocks.js.map +1 -1
  184. package/login/lib/useDownloadTerms.js.map +1 -1
  185. package/login/lib/useUserProfileForm.js +9 -9
  186. package/login/lib/useUserProfileForm.js.map +1 -1
  187. package/login/pages/Code.js +1 -1
  188. package/login/pages/Code.js.map +1 -1
  189. package/login/pages/DeleteAccountConfirm.js +1 -1
  190. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  191. package/login/pages/DeleteCredential.js +1 -1
  192. package/login/pages/DeleteCredential.js.map +1 -1
  193. package/login/pages/Error.js +1 -1
  194. package/login/pages/Error.js.map +1 -1
  195. package/login/pages/FrontchannelLogout.js +1 -1
  196. package/login/pages/FrontchannelLogout.js.map +1 -1
  197. package/login/pages/IdpReviewUserProfile.js +1 -1
  198. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  199. package/login/pages/Info.js +5 -5
  200. package/login/pages/Info.js.map +1 -1
  201. package/login/pages/Login.js +4 -4
  202. package/login/pages/Login.js.map +1 -1
  203. package/login/pages/LoginConfigTotp.js +2 -2
  204. package/login/pages/LoginConfigTotp.js.map +1 -1
  205. package/login/pages/LoginIdpLinkConfirm.js +1 -1
  206. package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
  207. package/login/pages/LoginIdpLinkEmail.js +1 -1
  208. package/login/pages/LoginIdpLinkEmail.js.map +1 -1
  209. package/login/pages/LoginOauth2DeviceVerifyUserCode.js +1 -1
  210. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
  211. package/login/pages/LoginOauthGrant.js +2 -2
  212. package/login/pages/LoginOauthGrant.js.map +1 -1
  213. package/login/pages/LoginOtp.js +1 -1
  214. package/login/pages/LoginOtp.js.map +1 -1
  215. package/login/pages/LoginPageExpired.js +1 -1
  216. package/login/pages/LoginPageExpired.js.map +1 -1
  217. package/login/pages/LoginPassword.js +3 -3
  218. package/login/pages/LoginPassword.js.map +1 -1
  219. package/login/pages/LoginRecoveryAuthnCodeConfig.js +3 -3
  220. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  221. package/login/pages/LoginRecoveryAuthnCodeInput.js +1 -1
  222. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  223. package/login/pages/LoginResetOtp.js +1 -1
  224. package/login/pages/LoginResetOtp.js.map +1 -1
  225. package/login/pages/LoginResetPassword.js +2 -2
  226. package/login/pages/LoginResetPassword.js.map +1 -1
  227. package/login/pages/LoginUpdatePassword.js +3 -3
  228. package/login/pages/LoginUpdatePassword.js.map +1 -1
  229. package/login/pages/LoginUpdateProfile.js +2 -4
  230. package/login/pages/LoginUpdateProfile.js.map +1 -1
  231. package/login/pages/LoginUsername.js +3 -3
  232. package/login/pages/LoginUsername.js.map +1 -1
  233. package/login/pages/LoginVerifyEmail.js +1 -1
  234. package/login/pages/LoginVerifyEmail.js.map +1 -1
  235. package/login/pages/LoginX509Info.js +1 -1
  236. package/login/pages/LoginX509Info.js.map +1 -1
  237. package/login/pages/LogoutConfirm.js +1 -1
  238. package/login/pages/LogoutConfirm.js.map +1 -1
  239. package/login/pages/Register.js +4 -8
  240. package/login/pages/Register.js.map +1 -1
  241. package/login/pages/SamlPostForm.js +1 -1
  242. package/login/pages/SamlPostForm.js.map +1 -1
  243. package/login/pages/SelectAuthenticator.js +2 -2
  244. package/login/pages/SelectAuthenticator.js.map +1 -1
  245. package/login/pages/Terms.js +1 -1
  246. package/login/pages/Terms.js.map +1 -1
  247. package/login/pages/UpdateEmail.js +3 -5
  248. package/login/pages/UpdateEmail.js.map +1 -1
  249. package/login/pages/WebauthnAuthenticate.js +6 -6
  250. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  251. package/login/pages/WebauthnError.js +2 -2
  252. package/login/pages/WebauthnError.js.map +1 -1
  253. package/login/pages/WebauthnRegister.js +3 -3
  254. package/login/pages/WebauthnRegister.js.map +1 -1
  255. package/package.json +125 -118
  256. package/src/PUBLIC_URL.ts +1 -1
  257. package/src/account/Fallback.tsx +3 -0
  258. package/src/account/index.ts +1 -1
  259. package/src/account/kcContext/KcContext.ts +73 -47
  260. package/src/account/kcContext/getKcContextFromWindow.ts +1 -1
  261. package/src/account/kcContext/kcContextMocks.ts +21 -15
  262. package/src/account/pages/Applications.tsx +2 -2
  263. package/src/account/pages/FederatedIdentity.tsx +58 -0
  264. package/src/account/pages/Log.tsx +1 -1
  265. package/src/account/pages/Sessions.tsx +0 -3
  266. package/src/account/pages/Totp.tsx +20 -21
  267. package/src/bin/copy-keycloak-resources-to-public.ts +10 -106
  268. package/src/bin/download-builtin-keycloak-theme.ts +13 -273
  269. package/src/bin/eject-keycloak-page.ts +13 -10
  270. package/src/bin/initialize-email-theme.ts +16 -17
  271. package/src/bin/keycloakify/buildJars/buildJar.ts +13 -17
  272. package/src/bin/keycloakify/buildJars/buildJars.ts +14 -15
  273. package/src/bin/keycloakify/buildJars/generatePom.ts +1 -1
  274. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +45 -18
  275. package/src/bin/keycloakify/generateFtl/generateFtl.ts +2 -2
  276. package/src/bin/keycloakify/generateFtl/index.ts +0 -1
  277. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.ts +8 -7
  278. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.ts +1 -1
  279. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +32 -0
  280. package/src/bin/keycloakify/{generateTheme/generateSrcMainResources.ts → generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts} +38 -45
  281. package/src/bin/keycloakify/{generateTheme/generateThemeVariants.ts → generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts} +18 -12
  282. package/src/bin/keycloakify/generateSrcMainResources/index.ts +1 -0
  283. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts +2 -2
  284. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.ts +5 -4
  285. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +2 -2
  286. package/src/bin/keycloakify/index.ts +0 -7
  287. package/src/bin/keycloakify/keycloakify.ts +16 -64
  288. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
  289. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +2 -2
  290. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +1 -1
  291. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +2 -2
  292. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +2 -2
  293. package/src/bin/main.ts +111 -0
  294. package/src/bin/shared/KeycloakVersionRange.ts +7 -0
  295. package/src/bin/{keycloakify/buildOptions → shared}/buildOptions.ts +114 -24
  296. package/src/bin/{constants.ts → shared/constants.ts} +4 -2
  297. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +87 -0
  298. package/src/bin/{downloadAndUnzip.ts → shared/downloadAndUnzip.ts} +6 -6
  299. package/src/bin/shared/downloadBuiltinKeycloakTheme.ts +264 -0
  300. package/src/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.ts +8 -8
  301. package/src/bin/shared/getJarFileBasename.ts +9 -0
  302. package/src/bin/{getThemeSrcDirPath.ts → shared/getThemeSrcDirPath.ts} +1 -1
  303. package/src/bin/shared/metaInfKeycloakThemes.ts +34 -0
  304. package/src/bin/{keycloakify/generateFtl/pageId.ts → shared/pageIds.ts} +9 -1
  305. package/src/bin/shared/promptKeycloakVersion.ts +69 -0
  306. package/src/bin/start-keycloak-container.ts +141 -0
  307. package/src/bin/tools/fs.rmSync.ts +4 -4
  308. package/src/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.ts +1 -23
  309. package/src/login/UserProfileFormFields.tsx +2 -5
  310. package/src/login/index.ts +1 -1
  311. package/src/login/kcContext/KcContext.ts +2 -2
  312. package/src/login/kcContext/getKcContextFromWindow.ts +1 -1
  313. package/src/login/kcContext/kcContextMocks.ts +2 -2
  314. package/src/login/lib/useUserProfileForm.tsx +10 -10
  315. package/src/vite-plugin/vite-plugin.ts +30 -41
  316. package/tools/Array.prototype.every.js.map +1 -1
  317. package/tools/HTMLElement.prototype.prepend.js.map +1 -1
  318. package/tools/clsx.js.map +1 -1
  319. package/tools/deepAssign.js.map +1 -1
  320. package/tools/deepClone.js.map +1 -1
  321. package/tools/formatNumber.js.map +1 -1
  322. package/tools/memoize.js.map +1 -1
  323. package/tools/useInsertLinkTags.js.map +1 -1
  324. package/tools/useInsertScriptTags.js.map +1 -1
  325. package/tools/useSetClassName.js.map +1 -1
  326. package/vite-plugin/tsconfig.tsbuildinfo +1 -1
  327. package/vite-plugin/vite-plugin.d.ts +1 -2
  328. package/vite-plugin/vite-plugin.js +31 -51
  329. package/vite-plugin/vite-plugin.js.map +1 -1
  330. package/bin/constants.js +0 -13
  331. package/bin/constants.js.map +0 -1
  332. package/bin/downloadAndUnzip.js.map +0 -1
  333. package/bin/getThemeSrcDirPath.js.map +0 -1
  334. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -35
  335. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +0 -14
  336. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +0 -1
  337. package/bin/keycloakify/buildOptions/buildOptions.js.map +0 -1
  338. package/bin/keycloakify/buildOptions/getCacheDirPath.d.ts +0 -5
  339. package/bin/keycloakify/buildOptions/getCacheDirPath.js +0 -22
  340. package/bin/keycloakify/buildOptions/getCacheDirPath.js.map +0 -1
  341. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js.map +0 -1
  342. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.d.ts +0 -5
  343. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js +0 -26
  344. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js.map +0 -1
  345. package/bin/keycloakify/buildOptions/index.d.ts +0 -1
  346. package/bin/keycloakify/buildOptions/index.js.map +0 -1
  347. package/bin/keycloakify/buildOptions/parsedPackageJson.d.ts +0 -10
  348. package/bin/keycloakify/buildOptions/parsedPackageJson.js +0 -49
  349. package/bin/keycloakify/buildOptions/parsedPackageJson.js.map +0 -1
  350. package/bin/keycloakify/buildOptions/resolvedViteConfig.d.ts +0 -13
  351. package/bin/keycloakify/buildOptions/resolvedViteConfig.js +0 -77
  352. package/bin/keycloakify/buildOptions/resolvedViteConfig.js.map +0 -1
  353. package/bin/keycloakify/generateFtl/pageId.js.map +0 -1
  354. package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +0 -1
  355. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js.map +0 -1
  356. package/bin/keycloakify/generateTheme/generateMessageProperties.js.map +0 -1
  357. package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +0 -1
  358. package/bin/keycloakify/generateTheme/generateTheme.d.ts +0 -13
  359. package/bin/keycloakify/generateTheme/generateTheme.js.map +0 -1
  360. package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +0 -5
  361. package/bin/keycloakify/generateTheme/generateThemeVariants.js +0 -67
  362. package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +0 -1
  363. package/bin/keycloakify/generateTheme/index.d.ts +0 -1
  364. package/bin/keycloakify/generateTheme/index.js +0 -18
  365. package/bin/keycloakify/generateTheme/index.js.map +0 -1
  366. package/bin/keycloakify/generateTheme/readExtraPageNames.js.map +0 -1
  367. package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +0 -1
  368. package/bin/promptKeycloakVersion.d.ts +0 -3
  369. package/bin/promptKeycloakVersion.js.map +0 -1
  370. package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +0 -21
  371. package/src/bin/keycloakify/buildOptions/getCacheDirPath.ts +0 -25
  372. package/src/bin/keycloakify/buildOptions/getReactAppRootDirPath.ts +0 -23
  373. package/src/bin/keycloakify/buildOptions/index.ts +0 -1
  374. package/src/bin/keycloakify/buildOptions/parsedPackageJson.ts +0 -32
  375. package/src/bin/keycloakify/buildOptions/resolvedViteConfig.ts +0 -74
  376. package/src/bin/keycloakify/generateTheme/generateTheme.ts +0 -44
  377. package/src/bin/keycloakify/generateTheme/index.ts +0 -1
  378. package/src/bin/promptKeycloakVersion.ts +0 -49
  379. /package/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.js +0 -0
  380. /package/bin/{downloadAndUnzip.d.ts → shared/downloadAndUnzip.d.ts} +0 -0
  381. /package/bin/{getThemeSrcDirPath.d.ts → shared/getThemeSrcDirPath.d.ts} +0 -0
  382. /package/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.d.ts +0 -0
@@ -2,24 +2,27 @@
2
2
 
3
3
  import { getThisCodebaseRootDirPath } from "./tools/getThisCodebaseRootDirPath";
4
4
  import cliSelect from "cli-select";
5
- import { loginThemePageIds, accountThemePageIds, type LoginThemePageId, type AccountThemePageId } from "./keycloakify/generateFtl";
5
+ import { loginThemePageIds, accountThemePageIds, type LoginThemePageId, type AccountThemePageId } from "./shared/pageIds";
6
6
  import { capitalize } from "tsafe/capitalize";
7
7
  import { readFile, writeFile } from "fs/promises";
8
8
  import { existsSync } from "fs";
9
9
  import { join as pathJoin, relative as pathRelative } from "path";
10
10
  import { kebabCaseToCamelCase } from "./tools/kebabCaseToSnakeCase";
11
11
  import { assert, Equals } from "tsafe/assert";
12
- import { getThemeSrcDirPath } from "./getThemeSrcDirPath";
13
- import { themeTypes, type ThemeType } from "./constants";
14
- import { getReactAppRootDirPath } from "./keycloakify/buildOptions/getReactAppRootDirPath";
12
+ import { getThemeSrcDirPath } from "./shared/getThemeSrcDirPath";
13
+ import { themeTypes, type ThemeType } from "./shared/constants";
14
+ import type { CliCommandOptions } from "./main";
15
+ import { readBuildOptions } from "./shared/buildOptions";
15
16
 
16
- (async () => {
17
- console.log("Select a theme type");
17
+ export async function command(params: { cliCommandOptions: CliCommandOptions }) {
18
+ const { cliCommandOptions } = params;
18
19
 
19
- const { reactAppRootDirPath } = getReactAppRootDirPath({
20
- "processArgv": process.argv.slice(2)
20
+ const buildOptions = readBuildOptions({
21
+ cliCommandOptions
21
22
  });
22
23
 
24
+ console.log("Select a theme type");
25
+
23
26
  const { value: themeType } = await cliSelect<ThemeType>({
24
27
  "values": [...themeTypes]
25
28
  }).catch(() => {
@@ -48,7 +51,7 @@ import { getReactAppRootDirPath } from "./keycloakify/buildOptions/getReactAppRo
48
51
 
49
52
  const pageBasename = capitalize(kebabCaseToCamelCase(pageId)).replace(/ftl$/, "tsx");
50
53
 
51
- const { themeSrcDirPath } = getThemeSrcDirPath({ reactAppRootDirPath });
54
+ const { themeSrcDirPath } = getThemeSrcDirPath({ "reactAppRootDirPath": buildOptions.reactAppRootDirPath });
52
55
 
53
56
  const targetFilePath = pathJoin(themeSrcDirPath, themeType, "pages", pageBasename);
54
57
 
@@ -61,4 +64,4 @@ import { getReactAppRootDirPath } from "./keycloakify/buildOptions/getReactAppRo
61
64
  await writeFile(targetFilePath, await readFile(pathJoin(getThisCodebaseRootDirPath(), "src", themeType, "pages", pageBasename)));
62
65
 
63
66
  console.log(`${pathRelative(process.cwd(), targetFilePath)} created`);
64
- })();
67
+ }
@@ -1,19 +1,18 @@
1
- #!/usr/bin/env node
2
-
3
- import { downloadBuiltinKeycloakTheme } from "./download-builtin-keycloak-theme";
1
+ import { downloadBuiltinKeycloakTheme } from "./shared/downloadBuiltinKeycloakTheme";
4
2
  import { join as pathJoin, relative as pathRelative } from "path";
5
3
  import { transformCodebase } from "./tools/transformCodebase";
6
- import { promptKeycloakVersion } from "./promptKeycloakVersion";
7
- import { readBuildOptions } from "./keycloakify/buildOptions";
4
+ import { promptKeycloakVersion } from "./shared/promptKeycloakVersion";
5
+ import { readBuildOptions } from "./shared/buildOptions";
8
6
  import * as fs from "fs";
9
7
  import { getLogger } from "./tools/logger";
10
- import { getThemeSrcDirPath } from "./getThemeSrcDirPath";
8
+ import { getThemeSrcDirPath } from "./shared/getThemeSrcDirPath";
11
9
  import { rmSync } from "./tools/fs.rmSync";
10
+ import type { CliCommandOptions } from "./main";
12
11
 
13
- export async function main() {
14
- const buildOptions = readBuildOptions({
15
- "processArgv": process.argv.slice(2)
16
- });
12
+ export async function command(params: { cliCommandOptions: CliCommandOptions }) {
13
+ const { cliCommandOptions } = params;
14
+
15
+ const buildOptions = readBuildOptions({ cliCommandOptions });
17
16
 
18
17
  const logger = getLogger({ "isSilent": buildOptions.isSilent });
19
18
 
@@ -29,9 +28,13 @@ export async function main() {
29
28
  process.exit(-1);
30
29
  }
31
30
 
32
- const { keycloakVersion } = await promptKeycloakVersion();
31
+ const { keycloakVersion } = await promptKeycloakVersion({
32
+ "startingFromMajor": 17
33
+ });
33
34
 
34
- const builtinKeycloakThemeTmpDirPath = pathJoin(emailThemeSrcDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
35
+ const builtinKeycloakThemeTmpDirPath = pathJoin(buildOptions.cacheDirPath, "initialize-email-theme_tmp");
36
+
37
+ rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
35
38
 
36
39
  await downloadBuiltinKeycloakTheme({
37
40
  keycloakVersion,
@@ -52,9 +55,5 @@ export async function main() {
52
55
 
53
56
  logger.log(`${pathRelative(process.cwd(), emailThemeSrcDirPath)} ready to be customized, feel free to remove every file you do not customize`);
54
57
 
55
- rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
56
- }
57
-
58
- if (require.main === module) {
59
- main();
58
+ rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true });
60
59
  }
@@ -2,19 +2,22 @@ import { assert, type Equals } from "tsafe/assert";
2
2
  import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
3
3
  import { join as pathJoin, dirname as pathDirname } from "path";
4
4
  import { transformCodebase } from "../../tools/transformCodebase";
5
- import type { BuildOptions } from "../buildOptions";
5
+ import type { BuildOptions } from "../../shared/buildOptions";
6
6
  import * as fs from "fs/promises";
7
- import { accountV1ThemeName } from "../../constants";
7
+ import { accountV1ThemeName } from "../../shared/constants";
8
8
  import { generatePom, BuildOptionsLike as BuildOptionsLike_generatePom } from "./generatePom";
9
- import { existsSync, readFileSync } from "fs";
9
+ import { readFileSync } from "fs";
10
10
  import { isInside } from "../../tools/isInside";
11
11
  import child_process from "child_process";
12
+ import { rmSync } from "../../tools/fs.rmSync";
13
+ import { getMetaInfKeycloakThemesJsonPath } from "../../shared/metaInfKeycloakThemes";
12
14
 
13
15
  export type BuildOptionsLike = BuildOptionsLike_generatePom & {
14
16
  keycloakifyBuildDirPath: string;
15
17
  themeNames: string[];
16
18
  artifactId: string;
17
19
  themeVersion: string;
20
+ cacheDirPath: string;
18
21
  };
19
22
 
20
23
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
@@ -27,25 +30,18 @@ export async function buildJar(params: {
27
30
  }): Promise<void> {
28
31
  const { jarFileBasename, keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, buildOptions } = params;
29
32
 
30
- const keycloakifyBuildTmpDirPath = pathJoin(buildOptions.keycloakifyBuildDirPath, "..", jarFileBasename.replace(".jar", ""));
33
+ const keycloakifyBuildTmpDirPath = pathJoin(buildOptions.cacheDirPath, jarFileBasename.replace(".jar", ""));
31
34
 
32
- if (existsSync(keycloakifyBuildTmpDirPath)) {
33
- await fs.rm(keycloakifyBuildTmpDirPath, { "recursive": true });
34
- }
35
-
36
- await fs.mkdir(keycloakifyBuildTmpDirPath, { "recursive": true });
37
- await fs.writeFile(pathJoin(keycloakifyBuildTmpDirPath, ".gitignore"), Buffer.from("*", "utf8"));
38
-
39
- const srcMainResourcesRelativeDirPath = pathJoin("src", "main", "resources");
35
+ rmSync(keycloakifyBuildTmpDirPath, { "recursive": true, "force": true });
40
36
 
41
37
  {
42
- const keycloakThemesJsonFilePath = pathJoin(srcMainResourcesRelativeDirPath, "META-INF", "keycloak-themes.json");
38
+ const keycloakThemesJsonFilePath = getMetaInfKeycloakThemesJsonPath({ "keycloakifyBuildDirPath": "" });
43
39
 
44
40
  const themePropertiesFilePathSet = new Set(
45
- ...buildOptions.themeNames.map(themeName => pathJoin(srcMainResourcesRelativeDirPath, "theme", themeName, "account", "theme.properties"))
41
+ ...buildOptions.themeNames.map(themeName => pathJoin("src", "main", "resources", "theme", themeName, "account", "theme.properties"))
46
42
  );
47
43
 
48
- const accountV1RelativeDirPath = pathJoin(srcMainResourcesRelativeDirPath, "theme", accountV1ThemeName);
44
+ const accountV1RelativeDirPath = pathJoin("src", "main", "resources", "theme", accountV1ThemeName);
49
45
 
50
46
  transformCodebase({
51
47
  "srcDirPath": buildOptions.keycloakifyBuildDirPath,
@@ -107,7 +103,7 @@ export async function buildJar(params: {
107
103
 
108
104
  (["register.ftl", "login-update-profile.ftl"] as const).forEach(pageId =>
109
105
  buildOptions.themeNames.map(themeName => {
110
- const ftlFilePath = pathJoin(keycloakifyBuildTmpDirPath, srcMainResourcesRelativeDirPath, "theme", themeName, "login", pageId);
106
+ const ftlFilePath = pathJoin(keycloakifyBuildTmpDirPath, "src", "main", "resources", "theme", themeName, "login", pageId);
111
107
 
112
108
  const ftlFileContent = readFileSync(ftlFilePath).toString("utf8");
113
109
 
@@ -170,5 +166,5 @@ export async function buildJar(params: {
170
166
  pathJoin(buildOptions.keycloakifyBuildDirPath, jarFileBasename)
171
167
  );
172
168
 
173
- await fs.rm(keycloakifyBuildTmpDirPath, { "recursive": true });
169
+ rmSync(keycloakifyBuildTmpDirPath, { "recursive": true });
174
170
  }
@@ -3,7 +3,10 @@ import { exclude } from "tsafe/exclude";
3
3
  import { keycloakAccountV1Versions, keycloakThemeAdditionalInfoExtensionVersions } from "./extensionVersions";
4
4
  import { getKeycloakVersionRangeForJar } from "./getKeycloakVersionRangeForJar";
5
5
  import { buildJar, BuildOptionsLike as BuildOptionsLike_buildJar } from "./buildJar";
6
- import type { BuildOptions } from "../buildOptions";
6
+ import type { BuildOptions } from "../../shared/buildOptions";
7
+ import { getJarFileBasename } from "../../shared/getJarFileBasename";
8
+ import { readMetaInfKeycloakThemes } from "../../shared/metaInfKeycloakThemes";
9
+ import { accountV1ThemeName } from "../../shared/constants";
7
10
 
8
11
  export type BuildOptionsLike = BuildOptionsLike_buildJar & {
9
12
  keycloakifyBuildDirPath: string;
@@ -11,13 +14,12 @@ export type BuildOptionsLike = BuildOptionsLike_buildJar & {
11
14
 
12
15
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
13
16
 
14
- export async function buildJars(params: {
15
- doesImplementAccountTheme: boolean;
16
- buildOptions: BuildOptionsLike;
17
- }): Promise<{ lastJarFileBasename: string }> {
18
- const { doesImplementAccountTheme, buildOptions } = params;
17
+ export async function buildJars(params: { buildOptions: BuildOptionsLike }): Promise<void> {
18
+ const { buildOptions } = params;
19
19
 
20
- let lastJarFileBasename: string | undefined = undefined;
20
+ const doesImplementAccountTheme = readMetaInfKeycloakThemes({
21
+ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath
22
+ }).themes.some(({ name }) => name === accountV1ThemeName);
21
23
 
22
24
  await Promise.all(
23
25
  keycloakAccountV1Versions
@@ -38,11 +40,12 @@ export async function buildJars(params: {
38
40
  })
39
41
  .filter(exclude(undefined))
40
42
  .map(({ keycloakThemeAdditionalInfoExtensionVersion, keycloakVersionRange }) => {
41
- const jarFileBasename = `keycloak-theme-for-kc-${keycloakVersionRange}.jar`;
43
+ const { jarFileBasename } = getJarFileBasename({ keycloakVersionRange });
42
44
 
43
- lastJarFileBasename = jarFileBasename;
44
-
45
- return { keycloakThemeAdditionalInfoExtensionVersion, jarFileBasename };
45
+ return {
46
+ keycloakThemeAdditionalInfoExtensionVersion,
47
+ jarFileBasename
48
+ };
46
49
  })
47
50
  .map(({ keycloakThemeAdditionalInfoExtensionVersion, jarFileBasename }) =>
48
51
  buildJar({
@@ -55,8 +58,4 @@ export async function buildJars(params: {
55
58
  )
56
59
  .flat()
57
60
  );
58
-
59
- assert(lastJarFileBasename !== undefined);
60
-
61
- return { lastJarFileBasename };
62
61
  }
@@ -1,5 +1,5 @@
1
1
  import { assert } from "tsafe/assert";
2
- import type { BuildOptions } from "../buildOptions";
2
+ import type { BuildOptions } from "../../shared/buildOptions";
3
3
  import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
4
4
 
5
5
  export type BuildOptionsLike = {
@@ -1,37 +1,64 @@
1
1
  import { assert, type Equals } from "tsafe/assert";
2
2
  import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
3
+ import type { KeycloakVersionRange } from "../../shared/KeycloakVersionRange";
3
4
 
4
5
  export function getKeycloakVersionRangeForJar(params: {
5
6
  doesImplementAccountTheme: boolean;
6
7
  keycloakAccountV1Version: KeycloakAccountV1Version;
7
8
  keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
8
- }): string | undefined {
9
+ }): KeycloakVersionRange | undefined {
9
10
  const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, doesImplementAccountTheme } = params;
10
11
 
11
- switch (keycloakAccountV1Version) {
12
- case null:
13
- switch (keycloakThemeAdditionalInfoExtensionVersion) {
12
+ if (doesImplementAccountTheme) {
13
+ const keycloakVersionRange = (() => {
14
+ switch (keycloakAccountV1Version) {
14
15
  case null:
15
- return doesImplementAccountTheme ? "21-and-below" : "21-and-below";
16
- case "1.1.5":
17
- return doesImplementAccountTheme ? undefined : "22-and-above";
16
+ switch (keycloakThemeAdditionalInfoExtensionVersion) {
17
+ case null:
18
+ return "21-and-below" as const;
19
+ case "1.1.5":
20
+ return undefined;
21
+ }
22
+ assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
23
+ case "0.3":
24
+ switch (keycloakThemeAdditionalInfoExtensionVersion) {
25
+ case null:
26
+ return undefined;
27
+ case "1.1.5":
28
+ return "23" as const;
29
+ }
30
+ assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
31
+ case "0.4":
32
+ switch (keycloakThemeAdditionalInfoExtensionVersion) {
33
+ case null:
34
+ return undefined;
35
+ case "1.1.5":
36
+ return "24-and-above" as const;
37
+ }
38
+ assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
18
39
  }
19
- assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
20
- case "0.3":
21
- switch (keycloakThemeAdditionalInfoExtensionVersion) {
22
- case null:
23
- return doesImplementAccountTheme ? undefined : undefined;
24
- case "1.1.5":
25
- return doesImplementAccountTheme ? "23" : undefined;
40
+ })();
41
+
42
+ assert<Equals<typeof keycloakVersionRange, KeycloakVersionRange.WithAccountTheme | undefined>>();
43
+
44
+ return keycloakVersionRange;
45
+ } else {
46
+ const keycloakVersionRange = (() => {
47
+ if (keycloakAccountV1Version !== null) {
48
+ return undefined;
26
49
  }
27
- assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
28
- case "0.4":
50
+
29
51
  switch (keycloakThemeAdditionalInfoExtensionVersion) {
30
52
  case null:
31
- return doesImplementAccountTheme ? undefined : undefined;
53
+ return "21-and-below";
32
54
  case "1.1.5":
33
- return doesImplementAccountTheme ? "24-and-above" : undefined;
55
+ return "22-and-above";
34
56
  }
35
57
  assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
58
+ })();
59
+
60
+ assert<Equals<typeof keycloakVersionRange, KeycloakVersionRange.WithoutAccountTheme | undefined>>();
61
+
62
+ return keycloakVersionRange;
36
63
  }
37
64
  }
@@ -4,9 +4,9 @@ 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 { type ThemeType, nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir, resources_common } from "../../shared/constants";
10
10
 
11
11
  export type BuildOptionsLike = {
12
12
  bundler: "vite" | "webpack";
@@ -1,2 +1 @@
1
1
  export * from "./generateFtl";
2
- export * from "./pageId";
@@ -1,23 +1,24 @@
1
1
  import * as fs from "fs";
2
2
  import { join as pathJoin } from "path";
3
3
  import { assert } from "tsafe/assert";
4
- import type { BuildOptions } from "../buildOptions";
5
- import { resources_common, lastKeycloakVersionWithAccountV1, accountV1ThemeName } from "../../constants";
6
- import { downloadBuiltinKeycloakTheme } from "../../download-builtin-keycloak-theme";
4
+ import type { BuildOptions } from "../../shared/buildOptions";
5
+ import { resources_common, lastKeycloakVersionWithAccountV1, accountV1ThemeName } from "../../shared/constants";
6
+ import { downloadBuiltinKeycloakTheme } from "../../shared/downloadBuiltinKeycloakTheme";
7
7
  import { transformCodebase } from "../../tools/transformCodebase";
8
8
  import { rmSync } from "../../tools/fs.rmSync";
9
9
 
10
10
  type BuildOptionsLike = {
11
11
  cacheDirPath: string;
12
12
  npmWorkspaceRootDirPath: string;
13
+ keycloakifyBuildDirPath: string;
13
14
  };
14
15
 
15
16
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
16
17
 
17
- export async function bringInAccountV1(params: { buildOptions: BuildOptionsLike; srcMainResourcesDirPath: string }) {
18
- const { buildOptions, srcMainResourcesDirPath } = params;
18
+ export async function bringInAccountV1(params: { buildOptions: BuildOptionsLike }) {
19
+ const { buildOptions } = params;
19
20
 
20
- const builtinKeycloakThemeTmpDirPath = pathJoin(srcMainResourcesDirPath, "..", "tmp_yxdE2_builtin_keycloak_theme");
21
+ const builtinKeycloakThemeTmpDirPath = pathJoin(buildOptions.cacheDirPath, "bringInAccountV1_tmp");
21
22
 
22
23
  await downloadBuiltinKeycloakTheme({
23
24
  "destDirPath": builtinKeycloakThemeTmpDirPath,
@@ -25,7 +26,7 @@ export async function bringInAccountV1(params: { buildOptions: BuildOptionsLike;
25
26
  buildOptions
26
27
  });
27
28
 
28
- const accountV1DirPath = pathJoin(srcMainResourcesDirPath, "theme", accountV1ThemeName, "account");
29
+ const accountV1DirPath = pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources", "theme", accountV1ThemeName, "account");
29
30
 
30
31
  transformCodebase({
31
32
  "srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "account"),
@@ -1,4 +1,4 @@
1
- import type { ThemeType } from "../../constants";
1
+ import type { ThemeType } from "../../shared/constants";
2
2
  import { crawl } from "../../tools/crawl";
3
3
  import { join as pathJoin } from "path";
4
4
  import { readFileSync } from "fs";
@@ -0,0 +1,32 @@
1
+ import type { BuildOptions } from "../../shared/buildOptions";
2
+ import { assert } from "tsafe/assert";
3
+ import {
4
+ generateSrcMainResourcesForMainTheme,
5
+ type BuildOptionsLike as BuildOptionsLike_generateSrcMainResourcesForMainTheme
6
+ } from "./generateSrcMainResourcesForMainTheme";
7
+ import { generateSrcMainResourcesForThemeVariant } from "./generateSrcMainResourcesForThemeVariant";
8
+
9
+ export type BuildOptionsLike = BuildOptionsLike_generateSrcMainResourcesForMainTheme & {
10
+ themeNames: string[];
11
+ };
12
+
13
+ assert<BuildOptions extends BuildOptionsLike ? true : false>();
14
+
15
+ export async function generateSrcMainResources(params: { buildOptions: BuildOptionsLike }): Promise<void> {
16
+ const { buildOptions } = params;
17
+
18
+ const [themeName, ...themeVariantNames] = buildOptions.themeNames;
19
+
20
+ await generateSrcMainResourcesForMainTheme({
21
+ themeName,
22
+ buildOptions
23
+ });
24
+
25
+ for (const themeVariantName of themeVariantNames) {
26
+ generateSrcMainResourcesForThemeVariant({
27
+ themeName,
28
+ themeVariantName,
29
+ buildOptions
30
+ });
31
+ }
32
+ }
@@ -1,25 +1,30 @@
1
1
  import { transformCodebase } from "../../tools/transformCodebase";
2
2
  import * as fs from "fs";
3
- import { join as pathJoin, resolve as pathResolve, dirname as pathDirname } from "path";
3
+ import { join as pathJoin, resolve as pathResolve } from "path";
4
4
  import { replaceImportsInJsCode } from "../replacers/replaceImportsInJsCode";
5
5
  import { replaceImportsInCssCode } from "../replacers/replaceImportsInCssCode";
6
- import { generateFtlFilesCodeFactory, loginThemePageIds, accountThemePageIds } from "../generateFtl";
6
+ import { generateFtlFilesCodeFactory } from "../generateFtl";
7
+ import { loginThemePageIds, accountThemePageIds } from "../../shared/pageIds";
7
8
  import {
8
9
  type ThemeType,
9
10
  lastKeycloakVersionWithAccountV1,
10
11
  keycloak_resources,
11
12
  accountV1ThemeName,
12
13
  basenameOfTheKeycloakifyResourcesDir
13
- } from "../../constants";
14
+ } from "../../shared/constants";
14
15
  import { isInside } from "../../tools/isInside";
15
- import type { BuildOptions } from "../buildOptions";
16
+ import type { BuildOptions } from "../../shared/buildOptions";
16
17
  import { assert, type Equals } from "tsafe/assert";
17
- import { downloadKeycloakStaticResources } from "./downloadKeycloakStaticResources";
18
+ import { downloadKeycloakStaticResources } from "../../shared/downloadKeycloakStaticResources";
18
19
  import { readFieldNameUsage } from "./readFieldNameUsage";
19
20
  import { readExtraPagesNames } from "./readExtraPageNames";
20
21
  import { generateMessageProperties } from "./generateMessageProperties";
21
22
  import { bringInAccountV1 } from "./bringInAccountV1";
23
+ import { getThemeSrcDirPath } from "../../shared/getThemeSrcDirPath";
22
24
  import { rmSync } from "../../tools/fs.rmSync";
25
+ import { readThisNpmProjectVersion } from "../../tools/readThisNpmProjectVersion";
26
+ import { writeMetaInfKeycloakThemes, type MetaInfKeycloakTheme } from "../../shared/metaInfKeycloakThemes";
27
+ import { objectEntries } from "tsafe/objectEntries";
23
28
 
24
29
  export type BuildOptionsLike = {
25
30
  bundler: "vite" | "webpack";
@@ -31,23 +36,20 @@ export type BuildOptionsLike = {
31
36
  assetsDirPath: string;
32
37
  urlPathname: string | undefined;
33
38
  npmWorkspaceRootDirPath: string;
39
+ reactAppRootDirPath: string;
40
+ keycloakifyBuildDirPath: string;
34
41
  };
35
42
 
36
43
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
37
44
 
38
- export async function generateSrcMainResources(params: {
39
- themeName: string;
40
- themeSrcDirPath: string;
41
- keycloakifySrcDirPath: string;
42
- buildOptions: BuildOptionsLike;
43
- keycloakifyVersion: string;
44
- srcMainResourcesDirPath: string;
45
- }): Promise<{ doesImplementAccountTheme: boolean }> {
46
- const { themeName, themeSrcDirPath, keycloakifySrcDirPath, buildOptions, keycloakifyVersion, srcMainResourcesDirPath } = params;
45
+ export async function generateSrcMainResourcesForMainTheme(params: { themeName: string; buildOptions: BuildOptionsLike }): Promise<void> {
46
+ const { themeName, buildOptions } = params;
47
+
48
+ const { themeSrcDirPath } = getThemeSrcDirPath({ "reactAppRootDirPath": buildOptions.reactAppRootDirPath });
47
49
 
48
50
  const getThemeTypeDirPath = (params: { themeType: ThemeType | "email" }) => {
49
51
  const { themeType } = params;
50
- return pathJoin(srcMainResourcesDirPath, "theme", themeName, themeType);
52
+ return pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources", "theme", themeName, themeType);
51
53
  };
52
54
 
53
55
  const cssGlobalsToDefine: Record<string, string> = {};
@@ -74,7 +76,7 @@ export async function generateSrcMainResources(params: {
74
76
  rmSync(destDirPath, { "recursive": true, "force": true });
75
77
 
76
78
  if (themeType === "account" && implementedThemeTypes.login) {
77
- // NOTE: We prevend doing it twice, it has been done for the login theme.
79
+ // NOTE: We prevent doing it twice, it has been done for the login theme.
78
80
 
79
81
  transformCodebase({
80
82
  "srcDirPath": pathJoin(
@@ -136,10 +138,9 @@ export async function generateSrcMainResources(params: {
136
138
  "indexHtmlCode": fs.readFileSync(pathJoin(buildOptions.reactAppBuildDirPath, "index.html")).toString("utf8"),
137
139
  cssGlobalsToDefine,
138
140
  buildOptions,
139
- keycloakifyVersion,
141
+ "keycloakifyVersion": readThisNpmProjectVersion(),
140
142
  themeType,
141
143
  "fieldNames": readFieldNameUsage({
142
- keycloakifySrcDirPath,
143
144
  themeSrcDirPath,
144
145
  themeType
145
146
  })
@@ -228,40 +229,32 @@ export async function generateSrcMainResources(params: {
228
229
  });
229
230
  }
230
231
 
231
- const parsedKeycloakThemeJson: { themes: { name: string; types: string[] }[] } = { "themes": [] };
232
-
233
- parsedKeycloakThemeJson.themes.push({
234
- "name": themeName,
235
- "types": Object.entries(implementedThemeTypes)
236
- .filter(([, isImplemented]) => isImplemented)
237
- .map(([themeType]) => themeType)
238
- });
239
-
240
- account_specific_extra_work: {
241
- if (!implementedThemeTypes.account) {
242
- break account_specific_extra_work;
243
- }
244
-
232
+ if (implementedThemeTypes.account) {
245
233
  await bringInAccountV1({
246
- srcMainResourcesDirPath,
247
234
  buildOptions
248
235
  });
249
-
250
- parsedKeycloakThemeJson.themes.push({
251
- "name": accountV1ThemeName,
252
- "types": ["account"]
253
- });
254
236
  }
255
237
 
256
238
  {
257
- const keycloakThemeJsonFilePath = pathJoin(srcMainResourcesDirPath, "META-INF", "keycloak-themes.json");
239
+ const metaInfKeycloakThemes: MetaInfKeycloakTheme = { "themes": [] };
258
240
 
259
- try {
260
- fs.mkdirSync(pathDirname(keycloakThemeJsonFilePath));
261
- } catch {}
241
+ metaInfKeycloakThemes.themes.push({
242
+ "name": themeName,
243
+ "types": objectEntries(implementedThemeTypes)
244
+ .filter(([, isImplemented]) => isImplemented)
245
+ .map(([themeType]) => themeType)
246
+ });
262
247
 
263
- fs.writeFileSync(keycloakThemeJsonFilePath, Buffer.from(JSON.stringify(parsedKeycloakThemeJson, null, 2), "utf8"));
264
- }
248
+ if (implementedThemeTypes.account) {
249
+ metaInfKeycloakThemes.themes.push({
250
+ "name": accountV1ThemeName,
251
+ "types": ["account"]
252
+ });
253
+ }
265
254
 
266
- return { "doesImplementAccountTheme": implementedThemeTypes.account };
255
+ writeMetaInfKeycloakThemes({
256
+ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath,
257
+ metaInfKeycloakThemes
258
+ });
259
+ }
267
260
  }
@@ -1,12 +1,19 @@
1
1
  import { join as pathJoin, extname as pathExtname, sep as pathSep } from "path";
2
2
  import { transformCodebase } from "../../tools/transformCodebase";
3
+ import type { BuildOptions } from "../../shared/buildOptions";
4
+ import { readMetaInfKeycloakThemes, writeMetaInfKeycloakThemes } from "../../shared/metaInfKeycloakThemes";
3
5
  import { assert } from "tsafe/assert";
4
- import * as fs from "fs";
5
6
 
6
- export function generateThemeVariations(params: { themeName: string; themeVariantName: string; srcMainResourcesDirPath: string }) {
7
- const { themeName, themeVariantName, srcMainResourcesDirPath } = params;
7
+ export type BuildOptionsLike = {
8
+ keycloakifyBuildDirPath: string;
9
+ };
8
10
 
9
- const mainThemeDirPath = pathJoin(srcMainResourcesDirPath, "theme", themeName);
11
+ assert<BuildOptions extends BuildOptionsLike ? true : false>();
12
+
13
+ export function generateSrcMainResourcesForThemeVariant(params: { themeName: string; themeVariantName: string; buildOptions: BuildOptionsLike }) {
14
+ const { themeName, themeVariantName, buildOptions } = params;
15
+
16
+ const mainThemeDirPath = pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources", "theme", themeName);
10
17
 
11
18
  transformCodebase({
12
19
  "srcDirPath": mainThemeDirPath,
@@ -30,21 +37,20 @@ export function generateThemeVariations(params: { themeName: string; themeVarian
30
37
  });
31
38
 
32
39
  {
33
- const keycloakThemeJsonFilePath = pathJoin(srcMainResourcesDirPath, "META-INF", "keycloak-themes.json");
40
+ const updatedMetaInfKeycloakThemes = readMetaInfKeycloakThemes({ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath });
34
41
 
35
- const modifiedParsedJson = JSON.parse(fs.readFileSync(keycloakThemeJsonFilePath).toString("utf8")) as {
36
- themes: { name: string; types: string[] }[];
37
- };
38
-
39
- modifiedParsedJson.themes.push({
42
+ updatedMetaInfKeycloakThemes.themes.push({
40
43
  "name": themeVariantName,
41
44
  "types": (() => {
42
- const theme = modifiedParsedJson.themes.find(({ name }) => name === themeName);
45
+ const theme = updatedMetaInfKeycloakThemes.themes.find(({ name }) => name === themeName);
43
46
  assert(theme !== undefined);
44
47
  return theme.types;
45
48
  })()
46
49
  });
47
50
 
48
- fs.writeFileSync(keycloakThemeJsonFilePath, Buffer.from(JSON.stringify(modifiedParsedJson, null, 2), "utf8"));
51
+ writeMetaInfKeycloakThemes({
52
+ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath,
53
+ "metaInfKeycloakThemes": updatedMetaInfKeycloakThemes
54
+ });
49
55
  }
50
56
  }
@@ -0,0 +1 @@
1
+ export * from "./generateSrcMainResources";
@@ -1,10 +1,10 @@
1
1
  import { crawl } from "../../tools/crawl";
2
- import { accountThemePageIds, loginThemePageIds } from "../generateFtl";
2
+ import { accountThemePageIds, loginThemePageIds } from "../../shared/pageIds";
3
3
  import { id } from "tsafe/id";
4
4
  import { removeDuplicates } from "evt/tools/reducers/removeDuplicates";
5
5
  import * as fs from "fs";
6
6
  import { join as pathJoin } from "path";
7
- import type { ThemeType } from "../../constants";
7
+ import type { ThemeType } from "../../shared/constants";
8
8
 
9
9
  export function readExtraPagesNames(params: { themeSrcDirPath: string; themeType: ThemeType }): string[] {
10
10
  const { themeSrcDirPath, themeType } = params;