keycloakify 10.0.0-rc.0 → 10.0.0-rc.10

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 (442) 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 +2 -2
  6. package/account/Template.js.map +1 -1
  7. package/account/i18n/baseMessages/index.js.map +1 -1
  8. package/account/i18n/i18n.d.ts +3 -4
  9. package/account/i18n/i18n.js +3 -4
  10. package/account/i18n/i18n.js.map +1 -1
  11. package/account/index.d.ts +1 -1
  12. package/account/kcContext/KcContext.d.ts +62 -59
  13. package/account/kcContext/KcContext.js.map +1 -1
  14. package/account/kcContext/createGetKcContext.d.ts +3 -3
  15. package/account/kcContext/createGetKcContext.js.map +1 -1
  16. package/account/kcContext/getKcContextFromWindow.js +1 -1
  17. package/account/kcContext/getKcContextFromWindow.js.map +1 -1
  18. package/account/kcContext/kcContextMocks.js +22 -14
  19. package/account/kcContext/kcContextMocks.js.map +1 -1
  20. package/account/pages/Account.js +1 -1
  21. package/account/pages/Account.js.map +1 -1
  22. package/account/pages/Applications.js +3 -3
  23. package/account/pages/Applications.js.map +1 -1
  24. package/account/pages/FederatedIdentity.d.ts +7 -0
  25. package/account/pages/FederatedIdentity.js +8 -0
  26. package/account/pages/FederatedIdentity.js.map +1 -0
  27. package/account/pages/Log.js +2 -2
  28. package/account/pages/Log.js.map +1 -1
  29. package/account/pages/Password.js +4 -6
  30. package/account/pages/Password.js.map +1 -1
  31. package/account/pages/Sessions.js +1 -5
  32. package/account/pages/Sessions.js.map +1 -1
  33. package/account/pages/Totp.js +2 -2
  34. package/account/pages/Totp.js.map +1 -1
  35. package/bin/main.js +143109 -0
  36. package/lib/BASE_URL.js.map +1 -1
  37. package/login/Fallback.js.map +1 -1
  38. package/login/Template.js +4 -4
  39. package/login/Template.js.map +1 -1
  40. package/login/UserProfileFormFields.js +17 -19
  41. package/login/UserProfileFormFields.js.map +1 -1
  42. package/login/i18n/baseMessages/index.js.map +1 -1
  43. package/login/i18n/i18n.d.ts +3 -4
  44. package/login/i18n/i18n.js +3 -4
  45. package/login/i18n/i18n.js.map +1 -1
  46. package/login/index.d.ts +1 -1
  47. package/login/kcContext/KcContext.d.ts +1 -0
  48. package/login/kcContext/KcContext.js.map +1 -1
  49. package/login/kcContext/createGetKcContext.d.ts +3 -3
  50. package/login/kcContext/createGetKcContext.js.map +1 -1
  51. package/login/kcContext/getKcContextFromWindow.js +1 -1
  52. package/login/kcContext/getKcContextFromWindow.js.map +1 -1
  53. package/login/kcContext/kcContextMocks.js +3 -2
  54. package/login/kcContext/kcContextMocks.js.map +1 -1
  55. package/login/lib/useDownloadTerms.js.map +1 -1
  56. package/login/lib/useUserProfileForm.js +9 -9
  57. package/login/lib/useUserProfileForm.js.map +1 -1
  58. package/login/pages/Code.js +1 -1
  59. package/login/pages/Code.js.map +1 -1
  60. package/login/pages/DeleteAccountConfirm.js +1 -1
  61. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  62. package/login/pages/DeleteCredential.js +1 -1
  63. package/login/pages/DeleteCredential.js.map +1 -1
  64. package/login/pages/Error.js +1 -1
  65. package/login/pages/Error.js.map +1 -1
  66. package/login/pages/FrontchannelLogout.js +1 -1
  67. package/login/pages/FrontchannelLogout.js.map +1 -1
  68. package/login/pages/IdpReviewUserProfile.js +1 -1
  69. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  70. package/login/pages/Info.js +5 -5
  71. package/login/pages/Info.js.map +1 -1
  72. package/login/pages/Login.js +4 -4
  73. package/login/pages/Login.js.map +1 -1
  74. package/login/pages/LoginConfigTotp.js +2 -10
  75. package/login/pages/LoginConfigTotp.js.map +1 -1
  76. package/login/pages/LoginIdpLinkConfirm.js +1 -1
  77. package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
  78. package/login/pages/LoginIdpLinkEmail.js +1 -1
  79. package/login/pages/LoginIdpLinkEmail.js.map +1 -1
  80. package/login/pages/LoginOauth2DeviceVerifyUserCode.js +1 -1
  81. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
  82. package/login/pages/LoginOauthGrant.js +2 -2
  83. package/login/pages/LoginOauthGrant.js.map +1 -1
  84. package/login/pages/LoginOtp.js +1 -1
  85. package/login/pages/LoginOtp.js.map +1 -1
  86. package/login/pages/LoginPageExpired.js +1 -1
  87. package/login/pages/LoginPageExpired.js.map +1 -1
  88. package/login/pages/LoginPassword.js +3 -3
  89. package/login/pages/LoginPassword.js.map +1 -1
  90. package/login/pages/LoginRecoveryAuthnCodeConfig.js +3 -3
  91. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  92. package/login/pages/LoginRecoveryAuthnCodeInput.js +1 -1
  93. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  94. package/login/pages/LoginResetOtp.js +1 -1
  95. package/login/pages/LoginResetOtp.js.map +1 -1
  96. package/login/pages/LoginResetPassword.js +2 -2
  97. package/login/pages/LoginResetPassword.js.map +1 -1
  98. package/login/pages/LoginUpdatePassword.js +3 -3
  99. package/login/pages/LoginUpdatePassword.js.map +1 -1
  100. package/login/pages/LoginUpdateProfile.js +2 -4
  101. package/login/pages/LoginUpdateProfile.js.map +1 -1
  102. package/login/pages/LoginUsername.js +3 -3
  103. package/login/pages/LoginUsername.js.map +1 -1
  104. package/login/pages/LoginVerifyEmail.js +1 -1
  105. package/login/pages/LoginVerifyEmail.js.map +1 -1
  106. package/login/pages/LoginX509Info.js +1 -1
  107. package/login/pages/LoginX509Info.js.map +1 -1
  108. package/login/pages/LogoutConfirm.js +1 -1
  109. package/login/pages/LogoutConfirm.js.map +1 -1
  110. package/login/pages/Register.js +4 -8
  111. package/login/pages/Register.js.map +1 -1
  112. package/login/pages/SamlPostForm.js +1 -1
  113. package/login/pages/SamlPostForm.js.map +1 -1
  114. package/login/pages/SelectAuthenticator.js +2 -2
  115. package/login/pages/SelectAuthenticator.js.map +1 -1
  116. package/login/pages/Terms.js +1 -1
  117. package/login/pages/Terms.js.map +1 -1
  118. package/login/pages/UpdateEmail.js +3 -5
  119. package/login/pages/UpdateEmail.js.map +1 -1
  120. package/login/pages/WebauthnAuthenticate.js +6 -6
  121. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  122. package/login/pages/WebauthnError.js +2 -2
  123. package/login/pages/WebauthnError.js.map +1 -1
  124. package/login/pages/WebauthnRegister.js +3 -3
  125. package/login/pages/WebauthnRegister.js.map +1 -1
  126. package/package.json +62 -509
  127. package/src/PUBLIC_URL.ts +1 -1
  128. package/src/account/Fallback.tsx +3 -0
  129. package/src/account/Template.tsx +2 -5
  130. package/src/account/i18n/i18n.tsx +5 -8
  131. package/src/account/index.ts +1 -1
  132. package/src/account/kcContext/KcContext.ts +72 -62
  133. package/src/account/kcContext/getKcContextFromWindow.ts +1 -1
  134. package/src/account/kcContext/kcContextMocks.ts +21 -15
  135. package/src/account/pages/Applications.tsx +2 -2
  136. package/src/account/pages/FederatedIdentity.tsx +58 -0
  137. package/src/account/pages/Log.tsx +1 -1
  138. package/src/account/pages/Sessions.tsx +0 -3
  139. package/src/account/pages/Totp.tsx +20 -21
  140. package/src/bin/copy-keycloak-resources-to-public.ts +10 -106
  141. package/src/bin/download-builtin-keycloak-theme.ts +14 -274
  142. package/src/bin/eject-keycloak-page.ts +81 -19
  143. package/src/bin/initialize-email-theme.ts +22 -21
  144. package/src/bin/keycloakify/buildJars/buildJar.ts +27 -20
  145. package/src/bin/keycloakify/buildJars/buildJars.ts +14 -15
  146. package/src/bin/keycloakify/buildJars/generatePom.ts +4 -4
  147. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +45 -18
  148. package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +162 -234
  149. package/src/bin/keycloakify/generateFtl/generateFtl.ts +7 -4
  150. package/src/bin/keycloakify/generateFtl/index.ts +0 -1
  151. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.ts +8 -7
  152. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.ts +1 -1
  153. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +32 -0
  154. package/src/bin/keycloakify/{generateTheme/generateSrcMainResources.ts → generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts} +40 -46
  155. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +56 -0
  156. package/src/bin/keycloakify/generateSrcMainResources/index.ts +1 -0
  157. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts +1 -2
  158. package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.ts +5 -6
  159. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +14 -15
  160. package/src/bin/keycloakify/index.ts +0 -7
  161. package/src/bin/keycloakify/keycloakify.ts +50 -67
  162. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
  163. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +2 -2
  164. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +1 -1
  165. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +2 -2
  166. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +2 -2
  167. package/src/bin/main.ts +175 -0
  168. package/src/bin/shared/KeycloakVersionRange.ts +7 -0
  169. package/src/bin/{keycloakify/buildOptions → shared}/buildOptions.ts +113 -25
  170. package/src/bin/{keycloakify/generateFtl/pageId.ts → shared/constants.ts} +25 -1
  171. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +90 -0
  172. package/src/bin/{downloadAndUnzip.ts → shared/downloadAndUnzip.ts} +6 -6
  173. package/src/bin/shared/downloadBuiltinKeycloakTheme.ts +264 -0
  174. package/src/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.ts +8 -8
  175. package/src/bin/shared/getJarFileBasename.ts +9 -0
  176. package/src/bin/{getThemeSrcDirPath.ts → shared/getThemeSrcDirPath.ts} +1 -1
  177. package/src/bin/shared/metaInfKeycloakThemes.ts +34 -0
  178. package/src/bin/shared/promptKeycloakVersion.ts +106 -0
  179. package/src/bin/start-keycloak.ts +236 -0
  180. package/src/bin/tools/fs.rmSync.ts +4 -4
  181. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +8 -1
  182. package/src/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.ts +1 -23
  183. package/src/bin/tools/{readThisNpmProjectVersion.ts → readThisNpmPackageVersion.ts} +1 -1
  184. package/src/login/Template.tsx +6 -22
  185. package/src/login/UserProfileFormFields.tsx +2 -5
  186. package/src/login/i18n/i18n.tsx +5 -8
  187. package/src/login/index.ts +1 -1
  188. package/src/login/kcContext/KcContext.ts +2 -2
  189. package/src/login/kcContext/getKcContextFromWindow.ts +1 -1
  190. package/src/login/kcContext/kcContextMocks.ts +3 -3
  191. package/src/login/lib/useUserProfileForm.tsx +10 -10
  192. package/src/login/pages/Code.tsx +1 -1
  193. package/src/login/pages/IdpReviewUserProfile.tsx +1 -1
  194. package/src/login/pages/Login.tsx +1 -1
  195. package/src/login/pages/LoginConfigTotp.tsx +1 -9
  196. package/src/login/pages/LoginUpdateProfile.tsx +1 -1
  197. package/src/login/pages/LoginUsername.tsx +1 -1
  198. package/src/login/pages/Register.tsx +2 -2
  199. package/src/login/pages/UpdateEmail.tsx +1 -1
  200. package/src/login/pages/WebauthnRegister.tsx +1 -1
  201. package/src/vite-plugin/tsconfig.json +2 -1
  202. package/src/vite-plugin/vite-plugin.ts +29 -41
  203. package/tools/Array.prototype.every.js.map +1 -1
  204. package/tools/HTMLElement.prototype.prepend.js.map +1 -1
  205. package/tools/clsx.js.map +1 -1
  206. package/tools/deepAssign.js.map +1 -1
  207. package/tools/deepClone.js.map +1 -1
  208. package/tools/formatNumber.js.map +1 -1
  209. package/tools/memoize.js.map +1 -1
  210. package/tools/useInsertLinkTags.js.map +1 -1
  211. package/tools/useInsertScriptTags.js.map +1 -1
  212. package/tools/useSetClassName.js.map +1 -1
  213. package/bin/constants.d.ts +0 -10
  214. package/bin/constants.js +0 -13
  215. package/bin/constants.js.map +0 -1
  216. package/bin/copy-keycloak-resources-to-public.d.ts +0 -14
  217. package/bin/copy-keycloak-resources-to-public.js +0 -216
  218. package/bin/copy-keycloak-resources-to-public.js.map +0 -1
  219. package/bin/download-builtin-keycloak-theme.d.ts +0 -10
  220. package/bin/download-builtin-keycloak-theme.js +0 -352
  221. package/bin/download-builtin-keycloak-theme.js.map +0 -1
  222. package/bin/downloadAndUnzip.d.ts +0 -16
  223. package/bin/downloadAndUnzip.js +0 -255
  224. package/bin/downloadAndUnzip.js.map +0 -1
  225. package/bin/eject-keycloak-page.d.ts +0 -2
  226. package/bin/eject-keycloak-page.js +0 -132
  227. package/bin/eject-keycloak-page.js.map +0 -1
  228. package/bin/getThemeSrcDirPath.d.ts +0 -6
  229. package/bin/getThemeSrcDirPath.js +0 -123
  230. package/bin/getThemeSrcDirPath.js.map +0 -1
  231. package/bin/initialize-email-theme.d.ts +0 -2
  232. package/bin/initialize-email-theme.js +0 -121
  233. package/bin/initialize-email-theme.js.map +0 -1
  234. package/bin/keycloakify/buildJars/buildJar.d.ts +0 -14
  235. package/bin/keycloakify/buildJars/buildJar.js +0 -216
  236. package/bin/keycloakify/buildJars/buildJar.js.map +0 -1
  237. package/bin/keycloakify/buildJars/buildJars.d.ts +0 -10
  238. package/bin/keycloakify/buildJars/buildJars.js +0 -95
  239. package/bin/keycloakify/buildJars/buildJars.js.map +0 -1
  240. package/bin/keycloakify/buildJars/extensionVersions.d.ts +0 -12
  241. package/bin/keycloakify/buildJars/extensionVersions.js +0 -7
  242. package/bin/keycloakify/buildJars/extensionVersions.js.map +0 -1
  243. package/bin/keycloakify/buildJars/generatePom.d.ts +0 -13
  244. package/bin/keycloakify/buildJars/generatePom.js +0 -94
  245. package/bin/keycloakify/buildJars/generatePom.js.map +0 -1
  246. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +0 -6
  247. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +0 -35
  248. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +0 -1
  249. package/bin/keycloakify/buildJars/index.d.ts +0 -1
  250. package/bin/keycloakify/buildJars/index.js +0 -18
  251. package/bin/keycloakify/buildJars/index.js.map +0 -1
  252. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -35
  253. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +0 -14
  254. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +0 -1
  255. package/bin/keycloakify/buildOptions/buildOptions.d.ts +0 -25
  256. package/bin/keycloakify/buildOptions/buildOptions.js +0 -178
  257. package/bin/keycloakify/buildOptions/buildOptions.js.map +0 -1
  258. package/bin/keycloakify/buildOptions/getCacheDirPath.d.ts +0 -5
  259. package/bin/keycloakify/buildOptions/getCacheDirPath.js +0 -22
  260. package/bin/keycloakify/buildOptions/getCacheDirPath.js.map +0 -1
  261. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.d.ts +0 -5
  262. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js +0 -86
  263. package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js.map +0 -1
  264. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.d.ts +0 -5
  265. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js +0 -26
  266. package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js.map +0 -1
  267. package/bin/keycloakify/buildOptions/index.d.ts +0 -1
  268. package/bin/keycloakify/buildOptions/index.js +0 -18
  269. package/bin/keycloakify/buildOptions/index.js.map +0 -1
  270. package/bin/keycloakify/buildOptions/parsedPackageJson.d.ts +0 -10
  271. package/bin/keycloakify/buildOptions/parsedPackageJson.js +0 -49
  272. package/bin/keycloakify/buildOptions/parsedPackageJson.js.map +0 -1
  273. package/bin/keycloakify/buildOptions/resolvedViteConfig.d.ts +0 -13
  274. package/bin/keycloakify/buildOptions/resolvedViteConfig.js +0 -77
  275. package/bin/keycloakify/buildOptions/resolvedViteConfig.js.map +0 -1
  276. package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +0 -593
  277. package/bin/keycloakify/generateFtl/generateFtl.d.ts +0 -23
  278. package/bin/keycloakify/generateFtl/generateFtl.js +0 -169
  279. package/bin/keycloakify/generateFtl/generateFtl.js.map +0 -1
  280. package/bin/keycloakify/generateFtl/index.d.ts +0 -2
  281. package/bin/keycloakify/generateFtl/index.js +0 -19
  282. package/bin/keycloakify/generateFtl/index.js.map +0 -1
  283. package/bin/keycloakify/generateFtl/pageId.d.ts +0 -4
  284. package/bin/keycloakify/generateFtl/pageId.js +0 -41
  285. package/bin/keycloakify/generateFtl/pageId.js.map +0 -1
  286. package/bin/keycloakify/generateStartKeycloakTestingContainer.d.ts +0 -11
  287. package/bin/keycloakify/generateStartKeycloakTestingContainer.js +0 -89
  288. package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +0 -1
  289. package/bin/keycloakify/generateTheme/bringInAccountV1.d.ts +0 -9
  290. package/bin/keycloakify/generateTheme/bringInAccountV1.js +0 -153
  291. package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +0 -1
  292. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.d.ts +0 -11
  293. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js +0 -102
  294. package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js.map +0 -1
  295. package/bin/keycloakify/generateTheme/generateMessageProperties.d.ts +0 -8
  296. package/bin/keycloakify/generateTheme/generateMessageProperties.js +0 -271
  297. package/bin/keycloakify/generateTheme/generateMessageProperties.js.map +0 -1
  298. package/bin/keycloakify/generateTheme/generateSrcMainResources.d.ts +0 -21
  299. package/bin/keycloakify/generateTheme/generateSrcMainResources.js +0 -340
  300. package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +0 -1
  301. package/bin/keycloakify/generateTheme/generateTheme.d.ts +0 -13
  302. package/bin/keycloakify/generateTheme/generateTheme.js +0 -115
  303. package/bin/keycloakify/generateTheme/generateTheme.js.map +0 -1
  304. package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +0 -5
  305. package/bin/keycloakify/generateTheme/generateThemeVariants.js +0 -67
  306. package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +0 -1
  307. package/bin/keycloakify/generateTheme/index.d.ts +0 -1
  308. package/bin/keycloakify/generateTheme/index.js +0 -18
  309. package/bin/keycloakify/generateTheme/index.js.map +0 -1
  310. package/bin/keycloakify/generateTheme/readExtraPageNames.d.ts +0 -5
  311. package/bin/keycloakify/generateTheme/readExtraPageNames.js +0 -105
  312. package/bin/keycloakify/generateTheme/readExtraPageNames.js.map +0 -1
  313. package/bin/keycloakify/generateTheme/readFieldNameUsage.d.ts +0 -7
  314. package/bin/keycloakify/generateTheme/readFieldNameUsage.js +0 -142
  315. package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +0 -1
  316. package/bin/keycloakify/index.d.ts +0 -2
  317. package/bin/keycloakify/index.js +0 -23
  318. package/bin/keycloakify/index.js.map +0 -1
  319. package/bin/keycloakify/keycloakify.d.ts +0 -1
  320. package/bin/keycloakify/keycloakify.js +0 -166
  321. package/bin/keycloakify/keycloakify.js.map +0 -1
  322. package/bin/keycloakify/replacers/replaceImportsInCssCode.d.ts +0 -15
  323. package/bin/keycloakify/replacers/replaceImportsInCssCode.js +0 -88
  324. package/bin/keycloakify/replacers/replaceImportsInCssCode.js.map +0 -1
  325. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.d.ts +0 -9
  326. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js +0 -38
  327. package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js.map +0 -1
  328. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.d.ts +0 -1
  329. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.js +0 -18
  330. package/bin/keycloakify/replacers/replaceImportsInJsCode/index.js.map +0 -1
  331. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.d.ts +0 -12
  332. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js +0 -70
  333. package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js.map +0 -1
  334. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.d.ts +0 -13
  335. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js +0 -95
  336. package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js.map +0 -1
  337. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.d.ts +0 -12
  338. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js +0 -103
  339. package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js.map +0 -1
  340. package/bin/promptKeycloakVersion.d.ts +0 -3
  341. package/bin/promptKeycloakVersion.js +0 -121
  342. package/bin/promptKeycloakVersion.js.map +0 -1
  343. package/bin/tools/OptionalIfCanBeUndefined.d.ts +0 -14
  344. package/bin/tools/OptionalIfCanBeUndefined.js +0 -3
  345. package/bin/tools/OptionalIfCanBeUndefined.js.map +0 -1
  346. package/bin/tools/SemVer.d.ts +0 -26
  347. package/bin/tools/SemVer.js +0 -119
  348. package/bin/tools/SemVer.js.map +0 -1
  349. package/bin/tools/String.prototype.replaceAll.d.ts +0 -1
  350. package/bin/tools/String.prototype.replaceAll.js +0 -29
  351. package/bin/tools/String.prototype.replaceAll.js.map +0 -1
  352. package/bin/tools/crawl.d.ts +0 -5
  353. package/bin/tools/crawl.js +0 -74
  354. package/bin/tools/crawl.js.map +0 -1
  355. package/bin/tools/crc32.d.ts +0 -9
  356. package/bin/tools/crc32.js +0 -64
  357. package/bin/tools/crc32.js.map +0 -1
  358. package/bin/tools/deflate.d.ts +0 -24
  359. package/bin/tools/deflate.js +0 -155
  360. package/bin/tools/deflate.js.map +0 -1
  361. package/bin/tools/fetchProxyOptions.d.ts +0 -5
  362. package/bin/tools/fetchProxyOptions.js +0 -172
  363. package/bin/tools/fetchProxyOptions.js.map +0 -1
  364. package/bin/tools/fs.existsAsync.d.ts +0 -1
  365. package/bin/tools/fs.existsAsync.js +0 -86
  366. package/bin/tools/fs.existsAsync.js.map +0 -1
  367. package/bin/tools/fs.rm.d.ts +0 -8
  368. package/bin/tools/fs.rm.js +0 -151
  369. package/bin/tools/fs.rm.js.map +0 -1
  370. package/bin/tools/fs.rmSync.d.ts +0 -8
  371. package/bin/tools/fs.rmSync.js +0 -58
  372. package/bin/tools/fs.rmSync.js.map +0 -1
  373. package/bin/tools/getAbsoluteAndInOsFormatPath.d.ts +0 -4
  374. package/bin/tools/getAbsoluteAndInOsFormatPath.js +0 -16
  375. package/bin/tools/getAbsoluteAndInOsFormatPath.js.map +0 -1
  376. package/bin/tools/getThisCodebaseRootDirPath.d.ts +0 -1
  377. package/bin/tools/getThisCodebaseRootDirPath.js +0 -43
  378. package/bin/tools/getThisCodebaseRootDirPath.js.map +0 -1
  379. package/bin/tools/grant-exec-perms.d.ts +0 -1
  380. package/bin/tools/grant-exec-perms.js +0 -100
  381. package/bin/tools/grant-exec-perms.js.map +0 -1
  382. package/bin/tools/isInside.d.ts +0 -4
  383. package/bin/tools/isInside.js +0 -10
  384. package/bin/tools/isInside.js.map +0 -1
  385. package/bin/tools/kebabCaseToSnakeCase.d.ts +0 -1
  386. package/bin/tools/kebabCaseToSnakeCase.js +0 -35
  387. package/bin/tools/kebabCaseToSnakeCase.js.map +0 -1
  388. package/bin/tools/logger.d.ts +0 -12
  389. package/bin/tools/logger.js +0 -23
  390. package/bin/tools/logger.js.map +0 -1
  391. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.d.ts +0 -14
  392. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +0 -119
  393. package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +0 -1
  394. package/bin/tools/octokit-addons/listTags.d.ts +0 -13
  395. package/bin/tools/octokit-addons/listTags.js +0 -154
  396. package/bin/tools/octokit-addons/listTags.js.map +0 -1
  397. package/bin/tools/partitionPromiseSettledResults.d.ts +0 -2
  398. package/bin/tools/partitionPromiseSettledResults.js +0 -41
  399. package/bin/tools/partitionPromiseSettledResults.js.map +0 -1
  400. package/bin/tools/readThisNpmProjectVersion.d.ts +0 -1
  401. package/bin/tools/readThisNpmProjectVersion.js +0 -37
  402. package/bin/tools/readThisNpmProjectVersion.js.map +0 -1
  403. package/bin/tools/tee.d.ts +0 -3
  404. package/bin/tools/tee.js +0 -37
  405. package/bin/tools/tee.js.map +0 -1
  406. package/bin/tools/transformCodebase.d.ts +0 -20
  407. package/bin/tools/transformCodebase.js +0 -97
  408. package/bin/tools/transformCodebase.js.map +0 -1
  409. package/bin/tools/trimIndent.d.ts +0 -5
  410. package/bin/tools/trimIndent.js +0 -82
  411. package/bin/tools/trimIndent.js.map +0 -1
  412. package/bin/tools/unzip.d.ts +0 -2
  413. package/bin/tools/unzip.js +0 -274
  414. package/bin/tools/unzip.js.map +0 -1
  415. package/index.d.ts +0 -1
  416. package/index.js +0 -2
  417. package/index.js.map +0 -1
  418. package/lib/keycloakJsAdapter.d.ts +0 -51
  419. package/lib/keycloakJsAdapter.js +0 -74
  420. package/lib/keycloakJsAdapter.js.map +0 -1
  421. package/src/bin/constants.ts +0 -13
  422. package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +0 -21
  423. package/src/bin/keycloakify/buildOptions/getCacheDirPath.ts +0 -25
  424. package/src/bin/keycloakify/buildOptions/getReactAppRootDirPath.ts +0 -23
  425. package/src/bin/keycloakify/buildOptions/index.ts +0 -1
  426. package/src/bin/keycloakify/buildOptions/parsedPackageJson.ts +0 -32
  427. package/src/bin/keycloakify/buildOptions/resolvedViteConfig.ts +0 -74
  428. package/src/bin/keycloakify/generateTheme/generateTheme.ts +0 -44
  429. package/src/bin/keycloakify/generateTheme/generateThemeVariants.ts +0 -50
  430. package/src/bin/keycloakify/generateTheme/index.ts +0 -1
  431. package/src/bin/promptKeycloakVersion.ts +0 -49
  432. package/src/bin/tools/grant-exec-perms.ts +0 -19
  433. package/src/bin/tools/logger.ts +0 -27
  434. package/src/index.ts +0 -1
  435. package/src/lib/keycloakJsAdapter.ts +0 -118
  436. package/vite-plugin/index.d.ts +0 -1
  437. package/vite-plugin/index.js +0 -18
  438. package/vite-plugin/index.js.map +0 -1
  439. package/vite-plugin/tsconfig.tsbuildinfo +0 -1
  440. package/vite-plugin/vite-plugin.d.ts +0 -6
  441. package/vite-plugin/vite-plugin.js +0 -158
  442. package/vite-plugin/vite-plugin.js.map +0 -1
@@ -1,25 +1,31 @@
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
7
  import {
8
8
  type ThemeType,
9
9
  lastKeycloakVersionWithAccountV1,
10
10
  keycloak_resources,
11
11
  accountV1ThemeName,
12
- basenameOfTheKeycloakifyResourcesDir
13
- } from "../../constants";
12
+ basenameOfTheKeycloakifyResourcesDir,
13
+ loginThemePageIds,
14
+ accountThemePageIds
15
+ } from "../../shared/constants";
14
16
  import { isInside } from "../../tools/isInside";
15
- import type { BuildOptions } from "../buildOptions";
17
+ import type { BuildOptions } from "../../shared/buildOptions";
16
18
  import { assert, type Equals } from "tsafe/assert";
17
- import { downloadKeycloakStaticResources } from "./downloadKeycloakStaticResources";
19
+ import { downloadKeycloakStaticResources } from "../../shared/downloadKeycloakStaticResources";
18
20
  import { readFieldNameUsage } from "./readFieldNameUsage";
19
21
  import { readExtraPagesNames } from "./readExtraPageNames";
20
22
  import { generateMessageProperties } from "./generateMessageProperties";
21
23
  import { bringInAccountV1 } from "./bringInAccountV1";
24
+ import { getThemeSrcDirPath } from "../../shared/getThemeSrcDirPath";
22
25
  import { rmSync } from "../../tools/fs.rmSync";
26
+ import { readThisNpmPackageVersion } from "../../tools/readThisNpmPackageVersion";
27
+ import { writeMetaInfKeycloakThemes, type MetaInfKeycloakTheme } from "../../shared/metaInfKeycloakThemes";
28
+ import { objectEntries } from "tsafe/objectEntries";
23
29
 
24
30
  export type BuildOptionsLike = {
25
31
  bundler: "vite" | "webpack";
@@ -31,23 +37,20 @@ export type BuildOptionsLike = {
31
37
  assetsDirPath: string;
32
38
  urlPathname: string | undefined;
33
39
  npmWorkspaceRootDirPath: string;
40
+ reactAppRootDirPath: string;
41
+ keycloakifyBuildDirPath: string;
34
42
  };
35
43
 
36
44
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
37
45
 
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;
46
+ export async function generateSrcMainResourcesForMainTheme(params: { themeName: string; buildOptions: BuildOptionsLike }): Promise<void> {
47
+ const { themeName, buildOptions } = params;
48
+
49
+ const { themeSrcDirPath } = getThemeSrcDirPath({ "reactAppRootDirPath": buildOptions.reactAppRootDirPath });
47
50
 
48
51
  const getThemeTypeDirPath = (params: { themeType: ThemeType | "email" }) => {
49
52
  const { themeType } = params;
50
- return pathJoin(srcMainResourcesDirPath, "theme", themeName, themeType);
53
+ return pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources", "theme", themeName, themeType);
51
54
  };
52
55
 
53
56
  const cssGlobalsToDefine: Record<string, string> = {};
@@ -74,7 +77,7 @@ export async function generateSrcMainResources(params: {
74
77
  rmSync(destDirPath, { "recursive": true, "force": true });
75
78
 
76
79
  if (themeType === "account" && implementedThemeTypes.login) {
77
- // NOTE: We prevend doing it twice, it has been done for the login theme.
80
+ // NOTE: We prevent doing it twice, it has been done for the login theme.
78
81
 
79
82
  transformCodebase({
80
83
  "srcDirPath": pathJoin(
@@ -136,10 +139,9 @@ export async function generateSrcMainResources(params: {
136
139
  "indexHtmlCode": fs.readFileSync(pathJoin(buildOptions.reactAppBuildDirPath, "index.html")).toString("utf8"),
137
140
  cssGlobalsToDefine,
138
141
  buildOptions,
139
- keycloakifyVersion,
142
+ "keycloakifyVersion": readThisNpmPackageVersion(),
140
143
  themeType,
141
144
  "fieldNames": readFieldNameUsage({
142
- keycloakifySrcDirPath,
143
145
  themeSrcDirPath,
144
146
  themeType
145
147
  })
@@ -228,40 +230,32 @@ export async function generateSrcMainResources(params: {
228
230
  });
229
231
  }
230
232
 
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
-
233
+ if (implementedThemeTypes.account) {
245
234
  await bringInAccountV1({
246
- srcMainResourcesDirPath,
247
235
  buildOptions
248
236
  });
249
-
250
- parsedKeycloakThemeJson.themes.push({
251
- "name": accountV1ThemeName,
252
- "types": ["account"]
253
- });
254
237
  }
255
238
 
256
239
  {
257
- const keycloakThemeJsonFilePath = pathJoin(srcMainResourcesDirPath, "META-INF", "keycloak-themes.json");
240
+ const metaInfKeycloakThemes: MetaInfKeycloakTheme = { "themes": [] };
258
241
 
259
- try {
260
- fs.mkdirSync(pathDirname(keycloakThemeJsonFilePath));
261
- } catch {}
242
+ metaInfKeycloakThemes.themes.push({
243
+ "name": themeName,
244
+ "types": objectEntries(implementedThemeTypes)
245
+ .filter(([, isImplemented]) => isImplemented)
246
+ .map(([themeType]) => themeType)
247
+ });
262
248
 
263
- fs.writeFileSync(keycloakThemeJsonFilePath, Buffer.from(JSON.stringify(parsedKeycloakThemeJson, null, 2), "utf8"));
264
- }
249
+ if (implementedThemeTypes.account) {
250
+ metaInfKeycloakThemes.themes.push({
251
+ "name": accountV1ThemeName,
252
+ "types": ["account"]
253
+ });
254
+ }
265
255
 
266
- return { "doesImplementAccountTheme": implementedThemeTypes.account };
256
+ writeMetaInfKeycloakThemes({
257
+ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath,
258
+ metaInfKeycloakThemes
259
+ });
260
+ }
267
261
  }
@@ -0,0 +1,56 @@
1
+ import { join as pathJoin, extname as pathExtname, sep as pathSep } from "path";
2
+ import { transformCodebase } from "../../tools/transformCodebase";
3
+ import type { BuildOptions } from "../../shared/buildOptions";
4
+ import { readMetaInfKeycloakThemes, writeMetaInfKeycloakThemes } from "../../shared/metaInfKeycloakThemes";
5
+ import { assert } from "tsafe/assert";
6
+
7
+ export type BuildOptionsLike = {
8
+ keycloakifyBuildDirPath: string;
9
+ };
10
+
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);
17
+
18
+ transformCodebase({
19
+ "srcDirPath": mainThemeDirPath,
20
+ "destDirPath": pathJoin(mainThemeDirPath, "..", themeVariantName),
21
+ "transformSourceCode": ({ fileRelativePath, sourceCode }) => {
22
+ if (pathExtname(fileRelativePath) === ".ftl" && fileRelativePath.split(pathSep).length === 2) {
23
+ const modifiedSourceCode = Buffer.from(
24
+ Buffer.from(sourceCode)
25
+ .toString("utf-8")
26
+ .replace(`out["themeName"] = "${themeName}";`, `out["themeName"] = "${themeVariantName}";`),
27
+ "utf8"
28
+ );
29
+
30
+ assert(Buffer.compare(modifiedSourceCode, sourceCode) !== 0);
31
+
32
+ return { modifiedSourceCode };
33
+ }
34
+
35
+ return { "modifiedSourceCode": sourceCode };
36
+ }
37
+ });
38
+
39
+ {
40
+ const updatedMetaInfKeycloakThemes = readMetaInfKeycloakThemes({ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath });
41
+
42
+ updatedMetaInfKeycloakThemes.themes.push({
43
+ "name": themeVariantName,
44
+ "types": (() => {
45
+ const theme = updatedMetaInfKeycloakThemes.themes.find(({ name }) => name === themeName);
46
+ assert(theme !== undefined);
47
+ return theme.types;
48
+ })()
49
+ });
50
+
51
+ writeMetaInfKeycloakThemes({
52
+ "keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath,
53
+ "metaInfKeycloakThemes": updatedMetaInfKeycloakThemes
54
+ });
55
+ }
56
+ }
@@ -0,0 +1 @@
1
+ export * from "./generateSrcMainResources";
@@ -1,10 +1,9 @@
1
1
  import { crawl } from "../../tools/crawl";
2
- import { accountThemePageIds, loginThemePageIds } from "../generateFtl";
3
2
  import { id } from "tsafe/id";
4
3
  import { removeDuplicates } from "evt/tools/reducers/removeDuplicates";
5
4
  import * as fs from "fs";
6
5
  import { join as pathJoin } from "path";
7
- import type { ThemeType } from "../../constants";
6
+ import { type ThemeType, accountThemePageIds, loginThemePageIds } from "../../shared/constants";
8
7
 
9
8
  export function readExtraPagesNames(params: { themeSrcDirPath: string; themeType: ThemeType }): string[] {
10
9
  const { themeSrcDirPath, themeType } = params;
@@ -1,15 +1,16 @@
1
1
  import { crawl } from "../../tools/crawl";
2
2
  import { join as pathJoin } from "path";
3
3
  import * as fs from "fs";
4
- import type { ThemeType } from "../../constants";
4
+ import type { ThemeType } from "../../shared/constants";
5
+ import { getThisCodebaseRootDirPath } from "../../tools/getThisCodebaseRootDirPath";
5
6
 
6
7
  /** Assumes the theme type exists */
7
- export function readFieldNameUsage(params: { keycloakifySrcDirPath: string; themeSrcDirPath: string; themeType: ThemeType }): string[] {
8
- const { keycloakifySrcDirPath, themeSrcDirPath, themeType } = params;
8
+ export function readFieldNameUsage(params: { themeSrcDirPath: string; themeType: ThemeType }): string[] {
9
+ const { themeSrcDirPath, themeType } = params;
9
10
 
10
11
  const fieldNames = new Set<string>();
11
12
 
12
- for (const srcDirPath of [pathJoin(keycloakifySrcDirPath, themeType), pathJoin(themeSrcDirPath, themeType)]) {
13
+ for (const srcDirPath of [pathJoin(getThisCodebaseRootDirPath(), "src", themeType), pathJoin(themeSrcDirPath, themeType)]) {
13
14
  const filePaths = crawl({ "dirPath": srcDirPath, "returnedPathsType": "absolute" }).filter(filePath => /\.(ts|tsx|js|jsx)$/.test(filePath));
14
15
 
15
16
  for (const filePath of filePaths) {
@@ -36,8 +37,6 @@ export function readFieldNameUsage(params: { keycloakifySrcDirPath: string; them
36
37
  return p1;
37
38
  })
38
39
  .map(part => {
39
- console.log(part);
40
-
41
40
  return part
42
41
  .split(",")
43
42
  .map(a => a.trim())
@@ -1,10 +1,12 @@
1
1
  import * as fs from "fs";
2
2
  import { join as pathJoin, relative as pathRelative, basename as pathBasename } from "path";
3
3
  import { assert } from "tsafe/assert";
4
- import type { BuildOptions } from "./buildOptions";
4
+ import type { BuildOptions } from "../shared/buildOptions";
5
+ import { accountV1ThemeName } from "../shared/constants";
5
6
 
6
7
  export type BuildOptionsLike = {
7
8
  keycloakifyBuildDirPath: string;
9
+ themeNames: string[];
8
10
  };
9
11
 
10
12
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
@@ -15,11 +17,14 @@ const containerName = "keycloak-testing-container";
15
17
  const keycloakVersion = "24.0.4";
16
18
 
17
19
  /** Files for being able to run a hot reload keycloak container */
18
- export function generateStartKeycloakTestingContainer(params: { jarFilePath: string; buildOptions: BuildOptionsLike }) {
19
- const { jarFilePath, buildOptions } = params;
20
+ export function generateStartKeycloakTestingContainer(params: {
21
+ jarFilePath: string;
22
+ doesImplementAccountTheme: boolean;
23
+ buildOptions: BuildOptionsLike;
24
+ }) {
25
+ const { jarFilePath, doesImplementAccountTheme, buildOptions } = params;
20
26
 
21
27
  const themeRelativeDirPath = pathJoin("src", "main", "resources", "theme");
22
- const themeDirPath = pathJoin(buildOptions.keycloakifyBuildDirPath, themeRelativeDirPath);
23
28
 
24
29
  fs.writeFileSync(
25
30
  pathJoin(buildOptions.keycloakifyBuildDirPath, generateStartKeycloakTestingContainer.basename),
@@ -40,18 +45,12 @@ export function generateStartKeycloakTestingContainer(params: { jarFilePath: str
40
45
  "$(pwd)",
41
46
  pathRelative(buildOptions.keycloakifyBuildDirPath, jarFilePath)
42
47
  )}":"/opt/keycloak/providers/${pathBasename(jarFilePath)}" \\`,
43
- ...fs
44
- .readdirSync(themeDirPath)
45
- .filter(name => fs.lstatSync(pathJoin(themeDirPath, name)).isDirectory())
46
- .map(
47
- themeName =>
48
- ` -v "${pathJoin("$(pwd)", themeRelativeDirPath, themeName).replace(
49
- /\\/g,
50
- "/"
51
- )}":"/opt/keycloak/themes/${themeName}":rw \\`
52
- ),
48
+ [...(doesImplementAccountTheme ? [accountV1ThemeName] : []), ...buildOptions.themeNames].map(
49
+ themeName =>
50
+ ` -v "${pathJoin("$(pwd)", themeRelativeDirPath, themeName).replace(/\\/g, "/")}":"/opt/keycloak/themes/${themeName}":rw \\`
51
+ ),
53
52
  ` -it quay.io/keycloak/keycloak:${keycloakVersion} \\`,
54
- ` start-dev --features=declarative-user-profile`,
53
+ ` start-dev`,
55
54
  ""
56
55
  ].join("\n"),
57
56
  "utf8"
@@ -1,8 +1 @@
1
- #!/usr/bin/env node
2
-
3
1
  export * from "./keycloakify";
4
- import { main } from "./keycloakify";
5
-
6
- if (require.main === module) {
7
- main();
8
- }
@@ -1,25 +1,56 @@
1
- import { generateTheme } from "./generateTheme";
1
+ import { generateSrcMainResources } from "./generateSrcMainResources";
2
2
  import { join as pathJoin, relative as pathRelative, sep as pathSep } from "path";
3
3
  import * as child_process from "child_process";
4
- import { generateStartKeycloakTestingContainer } from "./generateStartKeycloakTestingContainer";
5
4
  import * as fs from "fs";
6
- import { readBuildOptions } from "./buildOptions";
7
- import { getLogger } from "../tools/logger";
8
- import { getThemeSrcDirPath } from "../getThemeSrcDirPath";
9
- import { getThisCodebaseRootDirPath } from "../tools/getThisCodebaseRootDirPath";
10
- import { readThisNpmProjectVersion } from "../tools/readThisNpmProjectVersion";
11
- import { keycloakifyBuildOptionsForPostPostBuildScriptEnvName } from "../constants";
5
+ import { readBuildOptions } from "../shared/buildOptions";
6
+ import { vitePluginSubScriptEnvNames } from "../shared/constants";
12
7
  import { buildJars } from "./buildJars";
8
+ import type { CliCommandOptions } from "../main";
9
+ import chalk from "chalk";
10
+ import { readThisNpmPackageVersion } from "../tools/readThisNpmPackageVersion";
11
+ import * as os from "os";
13
12
 
14
- export async function main() {
15
- const buildOptions = readBuildOptions({
16
- "processArgv": process.argv.slice(2)
17
- });
13
+ export async function command(params: { cliCommandOptions: CliCommandOptions }) {
14
+ exit_if_maven_not_installed: {
15
+ let commandOutput: Buffer | undefined = undefined;
18
16
 
19
- const logger = getLogger({ "isSilent": buildOptions.isSilent });
20
- logger.log("🔏 Building the keycloak theme...⌚");
17
+ try {
18
+ commandOutput = child_process.execSync("mvn --version", { "stdio": ["ignore", "pipe", "ignore"] });
19
+ } catch {}
21
20
 
22
- const { themeSrcDirPath } = getThemeSrcDirPath({ "reactAppRootDirPath": buildOptions.reactAppRootDirPath });
21
+ if (commandOutput?.toString("utf8").includes("Apache Maven")) {
22
+ break exit_if_maven_not_installed;
23
+ }
24
+
25
+ const installationCommand = (() => {
26
+ switch (os.platform()) {
27
+ case "darwin":
28
+ return "brew install mvn";
29
+ case "win32":
30
+ return "choco install mvn";
31
+ case "linux":
32
+ default:
33
+ return "sudo apt-get install mvn";
34
+ }
35
+ })();
36
+
37
+ console.log(`${chalk.red("Apache Maven required.")} Install it with \`${chalk.bold(installationCommand)}\` (for example)`);
38
+
39
+ process.exit(1);
40
+ }
41
+
42
+ const { cliCommandOptions } = params;
43
+
44
+ const buildOptions = readBuildOptions({ cliCommandOptions });
45
+
46
+ console.log(
47
+ [
48
+ chalk.cyan(`keycloakify v${readThisNpmPackageVersion()}`),
49
+ chalk.green(`Building the keycloak theme in .${pathSep}${pathRelative(process.cwd(), buildOptions.keycloakifyBuildDirPath)} ...`)
50
+ ].join(" ")
51
+ );
52
+
53
+ const startTime = Date.now();
23
54
 
24
55
  {
25
56
  if (!fs.existsSync(buildOptions.keycloakifyBuildDirPath)) {
@@ -29,12 +60,7 @@ export async function main() {
29
60
  fs.writeFileSync(pathJoin(buildOptions.keycloakifyBuildDirPath, ".gitignore"), Buffer.from("*", "utf8"));
30
61
  }
31
62
 
32
- const { doesImplementAccountTheme } = await generateTheme({
33
- themeSrcDirPath,
34
- "keycloakifySrcDirPath": pathJoin(getThisCodebaseRootDirPath(), "src"),
35
- "keycloakifyVersion": readThisNpmProjectVersion(),
36
- buildOptions
37
- });
63
+ await generateSrcMainResources({ buildOptions });
38
64
 
39
65
  run_post_build_script: {
40
66
  if (buildOptions.bundler !== "vite") {
@@ -45,55 +71,12 @@ export async function main() {
45
71
  "cwd": buildOptions.reactAppRootDirPath,
46
72
  "env": {
47
73
  ...process.env,
48
- [keycloakifyBuildOptionsForPostPostBuildScriptEnvName]: JSON.stringify(buildOptions)
74
+ [vitePluginSubScriptEnvNames.runPostBuildScript]: JSON.stringify(buildOptions)
49
75
  }
50
76
  });
51
77
  }
52
78
 
53
- const { lastJarFileBasename } = await buildJars({
54
- doesImplementAccountTheme,
55
- buildOptions
56
- });
79
+ await buildJars({ buildOptions });
57
80
 
58
- generateStartKeycloakTestingContainer({
59
- "jarFilePath": pathJoin(buildOptions.keycloakifyBuildDirPath, lastJarFileBasename),
60
- buildOptions
61
- });
62
-
63
- logger.log(
64
- [
65
- `✅ Your keycloak theme has been generated and bundled into .${pathSep}${pathJoin(
66
- pathRelative(buildOptions.reactAppRootDirPath, buildOptions.keycloakifyBuildDirPath),
67
- "keycloak-theme-for-kc-*.jar"
68
- )}`,
69
- "",
70
- `To test your theme locally you can spin up a Keycloak container image with the theme pre loaded by running:`,
71
- "",
72
- `👉 $ .${pathSep}${pathRelative(
73
- buildOptions.reactAppRootDirPath,
74
- pathJoin(buildOptions.keycloakifyBuildDirPath, generateStartKeycloakTestingContainer.basename)
75
- )} 👈`,
76
- ``,
77
- `Once your container is up and running: `,
78
- "- Log into the admin console 👉 http://localhost:8080/admin username: admin, password: admin 👈",
79
- `- Create a realm: Master -> AddRealm -> Name: myrealm`,
80
- `- Enable registration: Realm settings -> Login tab -> User registration: on`,
81
- `- Enable the Account theme (optional): Realm settings -> Themes tab -> Account theme: ${buildOptions.themeNames[0]}`,
82
- ` Clients -> account -> Login theme: ${buildOptions.themeNames[0]}`,
83
- `- Enable the email theme (optional): Realm settings -> Themes tab -> Email theme: ${buildOptions.themeNames[0]} (option will appear only if you have ran npx initialize-email-theme)`,
84
- `- Create a client Clients -> Create -> Client ID: myclient`,
85
- ` Root URL: https://www.keycloak.org/app/`,
86
- ` Valid redirect URIs: https://www.keycloak.org/app* http://localhost* (localhost is optional)`,
87
- ` Valid post logout redirect URIs: https://www.keycloak.org/app* http://localhost*`,
88
- ` Web origins: *`,
89
- ` Login Theme: ${buildOptions.themeNames[0]}`,
90
- ` Save (button at the bottom of the page)`,
91
- ``,
92
- `- Go to 👉 https://www.keycloak.org/app/ 👈 Click "Save" then "Sign in". You should see your login page`,
93
- `- Got to 👉 http://localhost:8080/realms/myrealm/account 👈 to see your account theme`,
94
- ``,
95
- `Video tutorial: https://youtu.be/WMyGZNHQkjU`,
96
- ``
97
- ].join("\n")
98
- );
81
+ console.log(chalk.green(`✓ built in ${((Date.now() - startTime) / 1000).toFixed(2)}s`));
99
82
  }
@@ -1,7 +1,7 @@
1
1
  import * as crypto from "crypto";
2
- import type { BuildOptions } from "../buildOptions";
2
+ import type { BuildOptions } from "../../shared/buildOptions";
3
3
  import { assert } from "tsafe/assert";
4
- import { basenameOfTheKeycloakifyResourcesDir } from "../../constants";
4
+ import { basenameOfTheKeycloakifyResourcesDir } from "../../shared/constants";
5
5
 
6
6
  export type BuildOptionsLike = {
7
7
  urlPathname: string | undefined;
@@ -1,6 +1,6 @@
1
- import type { BuildOptions } from "../buildOptions";
1
+ import type { BuildOptions } from "../../shared/buildOptions";
2
2
  import { assert } from "tsafe/assert";
3
- import { basenameOfTheKeycloakifyResourcesDir } from "../../constants";
3
+ import { basenameOfTheKeycloakifyResourcesDir } from "../../shared/constants";
4
4
 
5
5
  export type BuildOptionsLike = {
6
6
  urlPathname: string | undefined;
@@ -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 { replaceImportsInJsCode_vite } from "./vite";
4
4
  import { replaceImportsInJsCode_webpack } from "./webpack";
5
5
  import * as fs from "fs";
@@ -1,6 +1,6 @@
1
- import { nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "../../../constants";
1
+ import { nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "../../../shared/constants";
2
2
  import { assert } from "tsafe/assert";
3
- import type { BuildOptions } from "../../buildOptions";
3
+ import type { BuildOptions } from "../../../shared/buildOptions";
4
4
  import * as nodePath from "path";
5
5
  import { replaceAll } from "../../../tools/String.prototype.replaceAll";
6
6
 
@@ -1,6 +1,6 @@
1
- import { nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "../../../constants";
1
+ import { nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "../../../shared/constants";
2
2
  import { assert } from "tsafe/assert";
3
- import type { BuildOptions } from "../../buildOptions";
3
+ import type { BuildOptions } from "../../../shared/buildOptions";
4
4
  import * as nodePath from "path";
5
5
  import { replaceAll } from "../../../tools/String.prototype.replaceAll";
6
6