keycloakify 10.0.0-rc.4 → 10.0.0-rc.6
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.
- package/PUBLIC_URL.js +1 -1
- package/PUBLIC_URL.js.map +1 -1
- package/account/Fallback.js +3 -0
- package/account/Fallback.js.map +1 -1
- package/account/Template.js +1 -1
- package/account/Template.js.map +1 -1
- package/account/i18n/baseMessages/index.js.map +1 -1
- package/account/i18n/i18n.js +1 -1
- package/account/i18n/i18n.js.map +1 -1
- package/account/index.d.ts +1 -1
- package/account/kcContext/KcContext.d.ts +62 -44
- package/account/kcContext/KcContext.js.map +1 -1
- package/account/kcContext/createGetKcContext.d.ts +3 -3
- package/account/kcContext/createGetKcContext.js.map +1 -1
- package/account/kcContext/getKcContextFromWindow.js +1 -1
- package/account/kcContext/getKcContextFromWindow.js.map +1 -1
- package/account/kcContext/kcContextMocks.js +22 -14
- package/account/kcContext/kcContextMocks.js.map +1 -1
- package/account/pages/Account.js +1 -1
- package/account/pages/Account.js.map +1 -1
- package/account/pages/Applications.js +3 -3
- package/account/pages/Applications.js.map +1 -1
- package/account/pages/FederatedIdentity.d.ts +7 -0
- package/account/pages/FederatedIdentity.js +8 -0
- package/account/pages/FederatedIdentity.js.map +1 -0
- package/account/pages/Log.js +2 -2
- package/account/pages/Log.js.map +1 -1
- package/account/pages/Password.js +4 -6
- package/account/pages/Password.js.map +1 -1
- package/account/pages/Sessions.js +1 -5
- package/account/pages/Sessions.js.map +1 -1
- package/account/pages/Totp.js +2 -2
- package/account/pages/Totp.js.map +1 -1
- package/bin/copy-keycloak-resources-to-public.d.ts +3 -13
- package/bin/copy-keycloak-resources-to-public.js +22 -166
- package/bin/copy-keycloak-resources-to-public.js.map +1 -1
- package/bin/download-builtin-keycloak-theme.d.ts +3 -9
- package/bin/download-builtin-keycloak-theme.js +15 -291
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/eject-keycloak-page.d.ts +4 -1
- package/bin/eject-keycloak-page.js +126 -56
- package/bin/eject-keycloak-page.js.map +1 -1
- package/bin/initialize-email-theme.d.ts +4 -2
- package/bin/initialize-email-theme.js +17 -19
- package/bin/initialize-email-theme.js.map +1 -1
- package/bin/keycloakify/buildJars/buildJar.d.ts +1 -0
- package/bin/keycloakify/buildJars/buildJar.js +14 -25
- package/bin/keycloakify/buildJars/buildJar.js.map +1 -1
- package/bin/keycloakify/buildJars/buildJars.d.ts +1 -4
- package/bin/keycloakify/buildJars/buildJars.js +17 -8
- package/bin/keycloakify/buildJars/buildJars.js.map +1 -1
- package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +2 -1
- package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +39 -17
- package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +1 -1
- package/bin/keycloakify/generateFtl/generateFtl.d.ts +1 -1
- package/bin/keycloakify/generateFtl/generateFtl.js +1 -1
- package/bin/keycloakify/generateFtl/generateFtl.js.map +1 -1
- package/bin/keycloakify/generateFtl/index.d.ts +0 -1
- package/bin/keycloakify/generateFtl/index.js +0 -1
- package/bin/keycloakify/generateFtl/index.js.map +1 -1
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.d.ts +1 -1
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.js +7 -7
- package/bin/keycloakify/generateSrcMainResources/bringInAccountV1.js.map +1 -0
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.d.ts +1 -1
- package/bin/keycloakify/generateSrcMainResources/generateMessageProperties.js.map +1 -0
- package/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.d.ts +7 -0
- package/bin/keycloakify/{generateTheme/generateTheme.js → generateSrcMainResources/generateSrcMainResources.js} +13 -19
- package/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.js.map +1 -0
- package/bin/keycloakify/{generateTheme/generateSrcMainResources.d.ts → generateSrcMainResources/generateSrcMainResourcesForMainTheme.d.ts} +4 -8
- package/bin/keycloakify/{generateTheme/generateSrcMainResources.js → generateSrcMainResources/generateSrcMainResourcesForMainTheme.js} +54 -52
- package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.js.map +1 -0
- package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.d.ts +8 -0
- package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.js +47 -0
- package/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.js.map +1 -0
- package/bin/keycloakify/generateSrcMainResources/index.d.ts +1 -0
- package/bin/keycloakify/{buildOptions → generateSrcMainResources}/index.js +1 -1
- package/bin/keycloakify/generateSrcMainResources/index.js.map +1 -0
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.d.ts +1 -1
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.js +3 -3
- package/bin/keycloakify/generateSrcMainResources/readExtraPageNames.js.map +1 -0
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.d.ts +1 -2
- package/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.js +3 -2
- package/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.js.map +1 -0
- package/bin/keycloakify/generateStartKeycloakTestingContainer.js +1 -1
- package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +1 -1
- package/bin/keycloakify/index.d.ts +0 -1
- package/bin/keycloakify/index.js +0 -5
- package/bin/keycloakify/index.js.map +1 -1
- package/bin/keycloakify/keycloakify.d.ts +4 -1
- package/bin/keycloakify/keycloakify.js +15 -61
- package/bin/keycloakify/keycloakify.js.map +1 -1
- package/bin/keycloakify/replacers/replaceImportsInCssCode.js +1 -1
- package/bin/keycloakify/replacers/replaceImportsInCssCode.js.map +1 -1
- package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js +1 -1
- package/bin/keycloakify/replacers/replaceImportsInInlineCssCode.js.map +1 -1
- package/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.js.map +1 -1
- package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js +1 -1
- package/bin/keycloakify/replacers/replaceImportsInJsCode/vite.js.map +1 -1
- package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js +1 -1
- package/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.js.map +1 -1
- package/bin/main.d.ts +5 -0
- package/bin/main.js +285 -0
- package/bin/main.js.map +1 -0
- package/bin/shared/KeycloakVersionRange.d.ts +5 -0
- package/bin/shared/KeycloakVersionRange.js +3 -0
- package/bin/shared/KeycloakVersionRange.js.map +1 -0
- package/bin/{keycloakify/buildOptions → shared}/buildOptions.d.ts +17 -1
- package/bin/{keycloakify/buildOptions → shared}/buildOptions.js +72 -35
- package/bin/shared/buildOptions.js.map +1 -0
- package/bin/{constants.d.ts → shared/constants.d.ts} +4 -2
- package/bin/shared/constants.js +15 -0
- package/bin/shared/constants.js.map +1 -0
- package/bin/shared/copyKeycloakResourcesToPublic.d.ts +8 -0
- package/bin/shared/copyKeycloakResourcesToPublic.js +175 -0
- package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -0
- package/bin/{downloadAndUnzip.js → shared/downloadAndUnzip.js} +11 -11
- package/bin/shared/downloadAndUnzip.js.map +1 -0
- package/bin/shared/downloadBuiltinKeycloakTheme.d.ts +9 -0
- package/bin/shared/downloadBuiltinKeycloakTheme.js +316 -0
- package/bin/shared/downloadBuiltinKeycloakTheme.js.map +1 -0
- package/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.d.ts +1 -1
- package/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.js +7 -7
- package/bin/shared/downloadKeycloakStaticResources.js.map +1 -0
- package/bin/shared/getJarFileBasename.d.ts +6 -0
- package/bin/shared/getJarFileBasename.js +10 -0
- package/bin/shared/getJarFileBasename.js.map +1 -0
- package/bin/{getThemeSrcDirPath.js → shared/getThemeSrcDirPath.js} +1 -1
- package/bin/shared/getThemeSrcDirPath.js.map +1 -0
- package/bin/shared/metaInfKeycloakThemes.d.ts +17 -0
- package/bin/shared/metaInfKeycloakThemes.js +51 -0
- package/bin/shared/metaInfKeycloakThemes.js.map +1 -0
- package/bin/{keycloakify/generateFtl/pageId.d.ts → shared/pageIds.d.ts} +1 -1
- package/bin/{keycloakify/generateFtl/pageId.js → shared/pageIds.js} +10 -2
- package/bin/shared/pageIds.js.map +1 -0
- package/bin/shared/promptKeycloakVersion.d.ts +5 -0
- package/bin/{promptKeycloakVersion.js → shared/promptKeycloakVersion.js} +32 -48
- package/bin/shared/promptKeycloakVersion.js.map +1 -0
- package/bin/start-keycloak-container.d.ts +4 -0
- package/bin/start-keycloak-container.js +209 -0
- package/bin/start-keycloak-container.js.map +1 -0
- package/bin/tools/SemVer.js +1 -1
- package/bin/tools/SemVer.js.map +1 -1
- package/bin/tools/String.prototype.replaceAll.js.map +1 -1
- package/bin/tools/crawl.js.map +1 -1
- package/bin/tools/crc32.js.map +1 -1
- package/bin/tools/deflate.js +10 -1
- package/bin/tools/deflate.js.map +1 -1
- package/bin/tools/fetchProxyOptions.js +9 -9
- package/bin/tools/fetchProxyOptions.js.map +1 -1
- package/bin/tools/fs.rm.js.map +1 -1
- package/bin/tools/fs.rmSync.js +4 -4
- package/bin/tools/fs.rmSync.js.map +1 -1
- package/bin/tools/getAbsoluteAndInOsFormatPath.js.map +1 -1
- package/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.js +1 -13
- package/bin/tools/getNpmWorkspaceRootDirPath.js.map +1 -0
- package/bin/tools/getThisCodebaseRootDirPath.js.map +1 -1
- package/bin/tools/logger.d.ts +1 -1
- package/bin/tools/logger.js.map +1 -1
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +21 -24
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +1 -1
- package/bin/tools/octokit-addons/listTags.js +3 -2
- package/bin/tools/octokit-addons/listTags.js.map +1 -1
- package/bin/tools/transformCodebase.js.map +1 -1
- package/bin/tools/trimIndent.js.map +1 -1
- package/bin/tools/unzip.js.map +1 -1
- package/lib/BASE_URL.js.map +1 -1
- package/lib/keycloakJsAdapter.js.map +1 -1
- package/login/Fallback.js.map +1 -1
- package/login/Template.js +3 -3
- package/login/Template.js.map +1 -1
- package/login/UserProfileFormFields.js +17 -17
- package/login/UserProfileFormFields.js.map +1 -1
- package/login/i18n/baseMessages/index.js.map +1 -1
- package/login/i18n/i18n.js +1 -1
- package/login/i18n/i18n.js.map +1 -1
- package/login/index.d.ts +1 -1
- package/login/kcContext/KcContext.js.map +1 -1
- package/login/kcContext/createGetKcContext.d.ts +3 -3
- package/login/kcContext/createGetKcContext.js.map +1 -1
- package/login/kcContext/getKcContextFromWindow.js +1 -1
- package/login/kcContext/getKcContextFromWindow.js.map +1 -1
- package/login/kcContext/kcContextMocks.js +1 -1
- package/login/kcContext/kcContextMocks.js.map +1 -1
- package/login/lib/useDownloadTerms.js.map +1 -1
- package/login/lib/useUserProfileForm.js.map +1 -1
- package/login/pages/Code.js +1 -1
- package/login/pages/Code.js.map +1 -1
- package/login/pages/DeleteAccountConfirm.js +1 -1
- package/login/pages/DeleteAccountConfirm.js.map +1 -1
- package/login/pages/DeleteCredential.js +1 -1
- package/login/pages/DeleteCredential.js.map +1 -1
- package/login/pages/Error.js +1 -1
- package/login/pages/Error.js.map +1 -1
- package/login/pages/FrontchannelLogout.js +1 -1
- package/login/pages/FrontchannelLogout.js.map +1 -1
- package/login/pages/IdpReviewUserProfile.js +1 -1
- package/login/pages/IdpReviewUserProfile.js.map +1 -1
- package/login/pages/Info.js +5 -5
- package/login/pages/Info.js.map +1 -1
- package/login/pages/Login.js +4 -4
- package/login/pages/Login.js.map +1 -1
- package/login/pages/LoginConfigTotp.js +2 -2
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/LoginIdpLinkConfirm.js +1 -1
- package/login/pages/LoginIdpLinkConfirm.js.map +1 -1
- package/login/pages/LoginIdpLinkEmail.js +1 -1
- package/login/pages/LoginIdpLinkEmail.js.map +1 -1
- package/login/pages/LoginOauth2DeviceVerifyUserCode.js +1 -1
- package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -1
- package/login/pages/LoginOauthGrant.js +2 -2
- package/login/pages/LoginOauthGrant.js.map +1 -1
- package/login/pages/LoginOtp.js +1 -1
- package/login/pages/LoginOtp.js.map +1 -1
- package/login/pages/LoginPageExpired.js +1 -1
- package/login/pages/LoginPageExpired.js.map +1 -1
- package/login/pages/LoginPassword.js +3 -3
- package/login/pages/LoginPassword.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeConfig.js +3 -3
- package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeInput.js +1 -1
- package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
- package/login/pages/LoginResetOtp.js +1 -1
- package/login/pages/LoginResetOtp.js.map +1 -1
- package/login/pages/LoginResetPassword.js +2 -2
- package/login/pages/LoginResetPassword.js.map +1 -1
- package/login/pages/LoginUpdatePassword.js +3 -3
- package/login/pages/LoginUpdatePassword.js.map +1 -1
- package/login/pages/LoginUpdateProfile.js +2 -4
- package/login/pages/LoginUpdateProfile.js.map +1 -1
- package/login/pages/LoginUsername.js +3 -3
- package/login/pages/LoginUsername.js.map +1 -1
- package/login/pages/LoginVerifyEmail.js +1 -1
- package/login/pages/LoginVerifyEmail.js.map +1 -1
- package/login/pages/LoginX509Info.js +1 -1
- package/login/pages/LoginX509Info.js.map +1 -1
- package/login/pages/LogoutConfirm.js +1 -1
- package/login/pages/LogoutConfirm.js.map +1 -1
- package/login/pages/Register.js +4 -8
- package/login/pages/Register.js.map +1 -1
- package/login/pages/SamlPostForm.js +1 -1
- package/login/pages/SamlPostForm.js.map +1 -1
- package/login/pages/SelectAuthenticator.js +2 -2
- package/login/pages/SelectAuthenticator.js.map +1 -1
- package/login/pages/Terms.js +1 -1
- package/login/pages/Terms.js.map +1 -1
- package/login/pages/UpdateEmail.js +3 -5
- package/login/pages/UpdateEmail.js.map +1 -1
- package/login/pages/WebauthnAuthenticate.js +6 -6
- package/login/pages/WebauthnAuthenticate.js.map +1 -1
- package/login/pages/WebauthnError.js +2 -2
- package/login/pages/WebauthnError.js.map +1 -1
- package/login/pages/WebauthnRegister.js +3 -3
- package/login/pages/WebauthnRegister.js.map +1 -1
- package/package.json +129 -121
- package/src/PUBLIC_URL.ts +1 -1
- package/src/account/Fallback.tsx +3 -0
- package/src/account/index.ts +1 -1
- package/src/account/kcContext/KcContext.ts +73 -47
- package/src/account/kcContext/getKcContextFromWindow.ts +1 -1
- package/src/account/kcContext/kcContextMocks.ts +21 -15
- package/src/account/pages/Applications.tsx +2 -2
- package/src/account/pages/FederatedIdentity.tsx +58 -0
- package/src/account/pages/Log.tsx +1 -1
- package/src/account/pages/Sessions.tsx +0 -3
- package/src/account/pages/Totp.tsx +20 -21
- package/src/bin/copy-keycloak-resources-to-public.ts +10 -106
- package/src/bin/download-builtin-keycloak-theme.ts +13 -273
- package/src/bin/eject-keycloak-page.ts +75 -19
- package/src/bin/initialize-email-theme.ts +16 -17
- package/src/bin/keycloakify/buildJars/buildJar.ts +13 -17
- package/src/bin/keycloakify/buildJars/buildJars.ts +14 -15
- package/src/bin/keycloakify/buildJars/generatePom.ts +1 -1
- package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +45 -18
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +2 -2
- package/src/bin/keycloakify/generateFtl/index.ts +0 -1
- package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/bringInAccountV1.ts +8 -7
- package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.ts +1 -1
- package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +32 -0
- package/src/bin/keycloakify/{generateTheme/generateSrcMainResources.ts → generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts} +38 -45
- package/src/bin/keycloakify/{generateTheme/generateThemeVariants.ts → generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts} +18 -12
- package/src/bin/keycloakify/generateSrcMainResources/index.ts +1 -0
- package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts +2 -2
- package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.ts +5 -4
- package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +2 -2
- package/src/bin/keycloakify/index.ts +0 -7
- package/src/bin/keycloakify/keycloakify.ts +16 -64
- package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
- package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +2 -2
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +1 -1
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +2 -2
- package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +2 -2
- package/src/bin/main.ts +151 -0
- package/src/bin/shared/KeycloakVersionRange.ts +7 -0
- package/src/bin/{keycloakify/buildOptions → shared}/buildOptions.ts +114 -24
- package/src/bin/{constants.ts → shared/constants.ts} +4 -2
- package/src/bin/shared/copyKeycloakResourcesToPublic.ts +87 -0
- package/src/bin/{downloadAndUnzip.ts → shared/downloadAndUnzip.ts} +6 -6
- package/src/bin/shared/downloadBuiltinKeycloakTheme.ts +264 -0
- package/src/bin/{keycloakify/generateTheme → shared}/downloadKeycloakStaticResources.ts +8 -8
- package/src/bin/shared/getJarFileBasename.ts +9 -0
- package/src/bin/{getThemeSrcDirPath.ts → shared/getThemeSrcDirPath.ts} +1 -1
- package/src/bin/shared/metaInfKeycloakThemes.ts +34 -0
- package/src/bin/{keycloakify/generateFtl/pageId.ts → shared/pageIds.ts} +9 -1
- package/src/bin/shared/promptKeycloakVersion.ts +69 -0
- package/src/bin/start-keycloak-container.ts +141 -0
- package/src/bin/tools/fs.rmSync.ts +4 -4
- package/src/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.ts +1 -23
- package/src/login/index.ts +1 -1
- package/src/login/kcContext/KcContext.ts +2 -2
- package/src/login/kcContext/getKcContextFromWindow.ts +1 -1
- package/src/login/kcContext/kcContextMocks.ts +2 -2
- package/src/vite-plugin/vite-plugin.ts +30 -41
- package/tools/Array.prototype.every.js.map +1 -1
- package/tools/HTMLElement.prototype.prepend.js.map +1 -1
- package/tools/clsx.js.map +1 -1
- package/tools/deepAssign.js.map +1 -1
- package/tools/deepClone.js.map +1 -1
- package/tools/formatNumber.js.map +1 -1
- package/tools/memoize.js.map +1 -1
- package/tools/useInsertLinkTags.js.map +1 -1
- package/tools/useInsertScriptTags.js.map +1 -1
- package/tools/useSetClassName.js.map +1 -1
- package/vite-plugin/tsconfig.tsbuildinfo +1 -1
- package/vite-plugin/vite-plugin.d.ts +1 -2
- package/vite-plugin/vite-plugin.js +31 -51
- package/vite-plugin/vite-plugin.js.map +1 -1
- package/bin/constants.js +0 -13
- package/bin/constants.js.map +0 -1
- package/bin/downloadAndUnzip.js.map +0 -1
- package/bin/getThemeSrcDirPath.js.map +0 -1
- package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -35
- package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +0 -14
- package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +0 -1
- package/bin/keycloakify/buildOptions/buildOptions.js.map +0 -1
- package/bin/keycloakify/buildOptions/getCacheDirPath.d.ts +0 -5
- package/bin/keycloakify/buildOptions/getCacheDirPath.js +0 -22
- package/bin/keycloakify/buildOptions/getCacheDirPath.js.map +0 -1
- package/bin/keycloakify/buildOptions/getNpmWorkspaceRootDirPath.js.map +0 -1
- package/bin/keycloakify/buildOptions/getReactAppRootDirPath.d.ts +0 -5
- package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js +0 -26
- package/bin/keycloakify/buildOptions/getReactAppRootDirPath.js.map +0 -1
- package/bin/keycloakify/buildOptions/index.d.ts +0 -1
- package/bin/keycloakify/buildOptions/index.js.map +0 -1
- package/bin/keycloakify/buildOptions/parsedPackageJson.d.ts +0 -10
- package/bin/keycloakify/buildOptions/parsedPackageJson.js +0 -49
- package/bin/keycloakify/buildOptions/parsedPackageJson.js.map +0 -1
- package/bin/keycloakify/buildOptions/resolvedViteConfig.d.ts +0 -13
- package/bin/keycloakify/buildOptions/resolvedViteConfig.js +0 -77
- package/bin/keycloakify/buildOptions/resolvedViteConfig.js.map +0 -1
- package/bin/keycloakify/generateFtl/pageId.js.map +0 -1
- package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +0 -1
- package/bin/keycloakify/generateTheme/downloadKeycloakStaticResources.js.map +0 -1
- package/bin/keycloakify/generateTheme/generateMessageProperties.js.map +0 -1
- package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +0 -1
- package/bin/keycloakify/generateTheme/generateTheme.d.ts +0 -13
- package/bin/keycloakify/generateTheme/generateTheme.js.map +0 -1
- package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +0 -5
- package/bin/keycloakify/generateTheme/generateThemeVariants.js +0 -67
- package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +0 -1
- package/bin/keycloakify/generateTheme/index.d.ts +0 -1
- package/bin/keycloakify/generateTheme/index.js +0 -18
- package/bin/keycloakify/generateTheme/index.js.map +0 -1
- package/bin/keycloakify/generateTheme/readExtraPageNames.js.map +0 -1
- package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +0 -1
- package/bin/promptKeycloakVersion.d.ts +0 -3
- package/bin/promptKeycloakVersion.js.map +0 -1
- package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +0 -21
- package/src/bin/keycloakify/buildOptions/getCacheDirPath.ts +0 -25
- package/src/bin/keycloakify/buildOptions/getReactAppRootDirPath.ts +0 -23
- package/src/bin/keycloakify/buildOptions/index.ts +0 -1
- package/src/bin/keycloakify/buildOptions/parsedPackageJson.ts +0 -32
- package/src/bin/keycloakify/buildOptions/resolvedViteConfig.ts +0 -74
- package/src/bin/keycloakify/generateTheme/generateTheme.ts +0 -44
- package/src/bin/keycloakify/generateTheme/index.ts +0 -1
- package/src/bin/promptKeycloakVersion.ts +0 -49
- /package/bin/keycloakify/{generateTheme → generateSrcMainResources}/generateMessageProperties.js +0 -0
- /package/bin/{downloadAndUnzip.d.ts → shared/downloadAndUnzip.d.ts} +0 -0
- /package/bin/{getThemeSrcDirPath.d.ts → shared/getThemeSrcDirPath.d.ts} +0 -0
- /package/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.d.ts +0 -0
@@ -2,24 +2,26 @@
|
|
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 "./
|
5
|
+
import { loginThemePageIds, accountThemePageIds, type LoginThemePageId, type AccountThemePageId } from "./shared/pageIds";
|
6
6
|
import { capitalize } from "tsafe/capitalize";
|
7
|
-
import
|
8
|
-
import {
|
9
|
-
import { join as pathJoin, relative as pathRelative } from "path";
|
7
|
+
import * as fs from "fs";
|
8
|
+
import { join as pathJoin, relative as pathRelative, dirname as pathDirname } from "path";
|
10
9
|
import { kebabCaseToCamelCase } from "./tools/kebabCaseToSnakeCase";
|
11
10
|
import { assert, Equals } from "tsafe/assert";
|
12
|
-
import { getThemeSrcDirPath } from "./getThemeSrcDirPath";
|
13
|
-
import { themeTypes, type ThemeType } from "./constants";
|
14
|
-
import {
|
11
|
+
import { getThemeSrcDirPath } from "./shared/getThemeSrcDirPath";
|
12
|
+
import { themeTypes, type ThemeType } from "./shared/constants";
|
13
|
+
import type { CliCommandOptions } from "./main";
|
14
|
+
import { readBuildOptions } from "./shared/buildOptions";
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
export async function command(params: { cliCommandOptions: CliCommandOptions }) {
|
17
|
+
const { cliCommandOptions } = params;
|
18
18
|
|
19
|
-
const
|
20
|
-
|
19
|
+
const buildOptions = readBuildOptions({
|
20
|
+
cliCommandOptions
|
21
21
|
});
|
22
22
|
|
23
|
+
console.log("Theme type:");
|
24
|
+
|
23
25
|
const { value: themeType } = await cliSelect<ThemeType>({
|
24
26
|
"values": [...themeTypes]
|
25
27
|
}).catch(() => {
|
@@ -28,7 +30,7 @@ import { getReactAppRootDirPath } from "./keycloakify/buildOptions/getReactAppRo
|
|
28
30
|
process.exit(-1);
|
29
31
|
});
|
30
32
|
|
31
|
-
console.log("Select
|
33
|
+
console.log("Select the page you want to customize:");
|
32
34
|
|
33
35
|
const { value: pageId } = await cliSelect<LoginThemePageId | AccountThemePageId>({
|
34
36
|
"values": (() => {
|
@@ -46,19 +48,73 @@ import { getReactAppRootDirPath } from "./keycloakify/buildOptions/getReactAppRo
|
|
46
48
|
process.exit(-1);
|
47
49
|
});
|
48
50
|
|
49
|
-
const
|
51
|
+
const componentPageBasename = capitalize(kebabCaseToCamelCase(pageId)).replace(/ftl$/, "tsx");
|
50
52
|
|
51
|
-
const { themeSrcDirPath } = getThemeSrcDirPath({ reactAppRootDirPath });
|
53
|
+
const { themeSrcDirPath } = getThemeSrcDirPath({ "reactAppRootDirPath": buildOptions.reactAppRootDirPath });
|
52
54
|
|
53
|
-
const targetFilePath = pathJoin(themeSrcDirPath, themeType, "pages",
|
55
|
+
const targetFilePath = pathJoin(themeSrcDirPath, themeType, "pages", componentPageBasename);
|
54
56
|
|
55
|
-
if (existsSync(targetFilePath)) {
|
57
|
+
if (fs.existsSync(targetFilePath)) {
|
56
58
|
console.log(`${pageId} is already ejected, ${pathRelative(process.cwd(), targetFilePath)} already exists`);
|
57
59
|
|
58
60
|
process.exit(-1);
|
59
61
|
}
|
60
62
|
|
61
|
-
|
63
|
+
{
|
64
|
+
const targetDirPath = pathDirname(targetFilePath);
|
65
|
+
|
66
|
+
if (!fs.existsSync(targetDirPath)) {
|
67
|
+
fs.mkdirSync(targetDirPath, { "recursive": true });
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
const componentPageContent = fs
|
72
|
+
.readFileSync(pathJoin(getThisCodebaseRootDirPath(), "src", themeType, "pages", componentPageBasename))
|
73
|
+
.toString("utf8");
|
74
|
+
|
75
|
+
fs.writeFileSync(targetFilePath, Buffer.from(componentPageContent, "utf8"));
|
76
|
+
|
77
|
+
const userProfileFormFieldComponentName = "UserProfileFormFields";
|
62
78
|
|
63
|
-
console.log(
|
64
|
-
|
79
|
+
console.log(
|
80
|
+
[
|
81
|
+
``,
|
82
|
+
`\`${pathJoin(".", pathRelative(process.cwd(), targetFilePath))}\` copy pasted from the Keycloakify source code into your project.`,
|
83
|
+
``,
|
84
|
+
`You now need to update your page router:`,
|
85
|
+
``,
|
86
|
+
`\`${pathJoin(".", pathRelative(process.cwd(), themeSrcDirPath), themeType, "KcApp.tsx")}\`:`,
|
87
|
+
"```",
|
88
|
+
`// ...`,
|
89
|
+
``,
|
90
|
+
`+const ${componentPageBasename.replace(/.tsx$/, "")} = lazy(() => import("./pages/${componentPageBasename}"));`,
|
91
|
+
``,
|
92
|
+
` export default function KcApp(props: { kcContext: KcContext; }) {`,
|
93
|
+
``,
|
94
|
+
` // ...`,
|
95
|
+
``,
|
96
|
+
` return (`,
|
97
|
+
` <Suspense>`,
|
98
|
+
` {(() => {`,
|
99
|
+
` switch (kcContext.pageId) {`,
|
100
|
+
` // ...`,
|
101
|
+
` case "${pageId}": return (`,
|
102
|
+
`+ <Login`,
|
103
|
+
`+ {...{ kcContext, i18n, classes }}`,
|
104
|
+
`+ Template={Template}`,
|
105
|
+
...(!componentPageContent.includes(userProfileFormFieldComponentName)
|
106
|
+
? []
|
107
|
+
: [`+ ${userProfileFormFieldComponentName}={${userProfileFormFieldComponentName}}`]),
|
108
|
+
`+ doUseDefaultCss={true}`,
|
109
|
+
`+ />`,
|
110
|
+
`+ );`,
|
111
|
+
` default: return <Fallback /* .. */ />;`,
|
112
|
+
` }`,
|
113
|
+
` })()}`,
|
114
|
+
` </Suspense>`,
|
115
|
+
` );`,
|
116
|
+
` }`,
|
117
|
+
"```"
|
118
|
+
].join("\n")
|
119
|
+
);
|
120
|
+
}
|
@@ -1,19 +1,18 @@
|
|
1
|
-
|
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 "./
|
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
|
14
|
-
const
|
15
|
-
|
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(
|
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
|
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 "
|
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 {
|
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.
|
33
|
+
const keycloakifyBuildTmpDirPath = pathJoin(buildOptions.cacheDirPath, jarFileBasename.replace(".jar", ""));
|
31
34
|
|
32
|
-
|
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 =
|
38
|
+
const keycloakThemesJsonFilePath = getMetaInfKeycloakThemesJsonPath({ "keycloakifyBuildDirPath": "" });
|
43
39
|
|
44
40
|
const themePropertiesFilePathSet = new Set(
|
45
|
-
...buildOptions.themeNames.map(themeName => pathJoin(
|
41
|
+
...buildOptions.themeNames.map(themeName => pathJoin("src", "main", "resources", "theme", themeName, "account", "theme.properties"))
|
46
42
|
);
|
47
43
|
|
48
|
-
const accountV1RelativeDirPath = pathJoin(
|
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,
|
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
|
-
|
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 "
|
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
|
-
|
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
|
-
|
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 =
|
43
|
+
const { jarFileBasename } = getJarFileBasename({ keycloakVersionRange });
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
-
|
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 "
|
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
|
-
}):
|
9
|
+
}): KeycloakVersionRange | undefined {
|
9
10
|
const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, doesImplementAccountTheme } = params;
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
switch (
|
12
|
+
if (doesImplementAccountTheme) {
|
13
|
+
const keycloakVersionRange = (() => {
|
14
|
+
switch (keycloakAccountV1Version) {
|
14
15
|
case null:
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
-
|
28
|
-
case "0.4":
|
50
|
+
|
29
51
|
switch (keycloakThemeAdditionalInfoExtensionVersion) {
|
30
52
|
case null:
|
31
|
-
return
|
53
|
+
return "21-and-below";
|
32
54
|
case "1.1.5":
|
33
|
-
return
|
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 "
|
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,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 "
|
5
|
-
import { resources_common, lastKeycloakVersionWithAccountV1, accountV1ThemeName } from "../../constants";
|
6
|
-
import { downloadBuiltinKeycloakTheme } from "../../
|
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
|
18
|
-
const { buildOptions
|
18
|
+
export async function bringInAccountV1(params: { buildOptions: BuildOptionsLike }) {
|
19
|
+
const { buildOptions } = params;
|
19
20
|
|
20
|
-
const builtinKeycloakThemeTmpDirPath = pathJoin(
|
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(
|
29
|
+
const accountV1DirPath = pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources", "theme", accountV1ThemeName, "account");
|
29
30
|
|
30
31
|
transformCodebase({
|
31
32
|
"srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "account"),
|
@@ -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
|
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
|
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 "
|
16
|
+
import type { BuildOptions } from "../../shared/buildOptions";
|
16
17
|
import { assert, type Equals } from "tsafe/assert";
|
17
|
-
import { downloadKeycloakStaticResources } from "
|
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
|
39
|
-
themeName
|
40
|
-
|
41
|
-
|
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(
|
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
|
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
|
-
|
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
|
239
|
+
const metaInfKeycloakThemes: MetaInfKeycloakTheme = { "themes": [] };
|
258
240
|
|
259
|
-
|
260
|
-
|
261
|
-
|
241
|
+
metaInfKeycloakThemes.themes.push({
|
242
|
+
"name": themeName,
|
243
|
+
"types": objectEntries(implementedThemeTypes)
|
244
|
+
.filter(([, isImplemented]) => isImplemented)
|
245
|
+
.map(([themeType]) => themeType)
|
246
|
+
});
|
262
247
|
|
263
|
-
|
264
|
-
|
248
|
+
if (implementedThemeTypes.account) {
|
249
|
+
metaInfKeycloakThemes.themes.push({
|
250
|
+
"name": accountV1ThemeName,
|
251
|
+
"types": ["account"]
|
252
|
+
});
|
253
|
+
}
|
265
254
|
|
266
|
-
|
255
|
+
writeMetaInfKeycloakThemes({
|
256
|
+
"keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath,
|
257
|
+
metaInfKeycloakThemes
|
258
|
+
});
|
259
|
+
}
|
267
260
|
}
|