keycloakify 10.0.0-rc.1 → 10.0.0-rc.12
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 +2 -2
- package/account/Template.js.map +1 -1
- package/account/i18n/baseMessages/index.js.map +1 -1
- package/account/i18n/i18n.d.ts +3 -4
- package/account/i18n/i18n.js +3 -4
- package/account/i18n/i18n.js.map +1 -1
- package/account/index.d.ts +1 -1
- package/account/kcContext/KcContext.d.ts +62 -59
- 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/246.index.js +466 -0
- package/bin/420.index.js +508 -0
- package/bin/509.index.js +438 -0
- package/bin/772.index.js +1524 -0
- 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 +16 -292
- 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 +125 -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 +23 -23
- 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 +4 -3
- 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} +53 -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/{generateTheme → 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.d.ts +2 -0
- package/bin/keycloakify/generateStartKeycloakTestingContainer.js +9 -12
- 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 +49 -63
- 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 +4 -0
- package/bin/main.js +145466 -0
- package/bin/main.js.map +1 -0
- package/bin/main.original.js +287 -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 -2
- package/bin/{keycloakify/buildOptions → shared}/buildOptions.js +71 -35
- package/bin/shared/buildOptions.js.map +1 -0
- package/bin/{keycloakify/generateFtl/pageId.d.ts → shared/constants.d.ts} +13 -1
- package/bin/{keycloakify/generateFtl/pageId.js → shared/constants.js} +22 -3
- package/bin/shared/constants.js.map +1 -0
- package/bin/shared/copyKeycloakResourcesToPublic.d.ts +8 -0
- package/bin/shared/copyKeycloakResourcesToPublic.js +177 -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/shared/promptKeycloakVersion.d.ts +6 -0
- package/bin/shared/promptKeycloakVersion.js +159 -0
- package/bin/shared/promptKeycloakVersion.js.map +1 -0
- package/bin/start-keycloak.d.ts +8 -0
- package/bin/start-keycloak.js +287 -0
- package/bin/start-keycloak.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 +28 -0
- 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/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/readThisNpmPackageVersion.d.ts +1 -0
- package/bin/tools/{readThisNpmProjectVersion.js → readThisNpmPackageVersion.js} +4 -4
- package/bin/tools/{readThisNpmProjectVersion.js.map → readThisNpmPackageVersion.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/bin/tsconfig.tsbuildinfo +1 -0
- package/lib/BASE_URL.js.map +1 -1
- package/login/Fallback.js.map +1 -1
- package/login/Template.js +4 -4
- package/login/Template.js.map +1 -1
- package/login/UserProfileFormFields.js +17 -19
- package/login/UserProfileFormFields.js.map +1 -1
- package/login/i18n/baseMessages/index.js.map +1 -1
- package/login/i18n/i18n.d.ts +3 -4
- package/login/i18n/i18n.js +3 -4
- package/login/i18n/i18n.js.map +1 -1
- package/login/index.d.ts +1 -1
- package/login/kcContext/KcContext.d.ts +1 -0
- 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 +3 -2
- package/login/kcContext/kcContextMocks.js.map +1 -1
- package/login/lib/useDownloadTerms.js.map +1 -1
- package/login/lib/useUserProfileForm.js +9 -9
- 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 -10
- 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 +9760 -1155
- package/src/PUBLIC_URL.ts +1 -1
- package/src/account/Fallback.tsx +3 -0
- package/src/account/Template.tsx +2 -5
- package/src/account/i18n/i18n.tsx +5 -8
- package/src/account/index.ts +1 -1
- package/src/account/kcContext/KcContext.ts +72 -62
- 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 +14 -274
- package/src/bin/eject-keycloak-page.ts +81 -19
- package/src/bin/initialize-email-theme.ts +22 -21
- 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/ftl_object_to_js_code_declaring_an_object.ftl +160 -232
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +7 -4
- 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} +40 -46
- package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +56 -0
- package/src/bin/keycloakify/generateSrcMainResources/index.ts +1 -0
- package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts +1 -2
- package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.ts +5 -4
- package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +14 -15
- package/src/bin/keycloakify/index.ts +0 -7
- package/src/bin/keycloakify/keycloakify.ts +50 -67
- 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 +175 -0
- package/src/bin/shared/KeycloakVersionRange.ts +7 -0
- package/src/bin/{keycloakify/buildOptions → shared}/buildOptions.ts +113 -25
- package/src/bin/{keycloakify/generateFtl/pageId.ts → shared/constants.ts} +25 -1
- package/src/bin/shared/copyKeycloakResourcesToPublic.ts +90 -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/shared/promptKeycloakVersion.ts +106 -0
- package/src/bin/start-keycloak.ts +236 -0
- package/src/bin/tools/fs.rmSync.ts +4 -4
- package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +8 -1
- package/src/bin/{keycloakify/buildOptions → tools}/getNpmWorkspaceRootDirPath.ts +1 -23
- package/src/bin/tools/{readThisNpmProjectVersion.ts → readThisNpmPackageVersion.ts} +1 -1
- package/src/login/Template.tsx +6 -22
- package/src/login/UserProfileFormFields.tsx +2 -5
- package/src/login/i18n/i18n.tsx +5 -8
- 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 +3 -3
- package/src/login/lib/useUserProfileForm.tsx +10 -10
- package/src/login/pages/Code.tsx +1 -1
- package/src/login/pages/IdpReviewUserProfile.tsx +1 -1
- package/src/login/pages/Login.tsx +1 -1
- package/src/login/pages/LoginConfigTotp.tsx +1 -9
- package/src/login/pages/LoginUpdateProfile.tsx +1 -1
- package/src/login/pages/LoginUsername.tsx +1 -1
- package/src/login/pages/Register.tsx +1 -1
- package/src/login/pages/UpdateEmail.tsx +1 -1
- package/src/login/pages/WebauthnRegister.tsx +1 -1
- package/src/vite-plugin/tsconfig.json +2 -1
- package/src/vite-plugin/vite-plugin.ts +29 -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/tsconfig.tsbuildinfo +1 -0
- package/vite-plugin/index.js +50851 -3
- package/{bin/keycloakify/buildOptions/index.js → vite-plugin/index.original.js} +1 -2
- package/vite-plugin/tsconfig.tsbuildinfo +1 -1
- package/vite-plugin/vite-plugin.d.ts +1 -2
- package/vite-plugin/vite-plugin.js +30 -52
- package/bin/constants.d.ts +0 -10
- 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/ftl_object_to_js_code_declaring_an_object.ftl +0 -593
- 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.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 +0 -121
- package/bin/promptKeycloakVersion.js.map +0 -1
- package/bin/tools/grant-exec-perms.d.ts +0 -1
- package/bin/tools/grant-exec-perms.js +0 -100
- package/bin/tools/grant-exec-perms.js.map +0 -1
- package/bin/tools/logger.d.ts +0 -12
- package/bin/tools/logger.js +0 -23
- package/bin/tools/logger.js.map +0 -1
- package/bin/tools/readThisNpmProjectVersion.d.ts +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -2
- package/index.js.map +0 -1
- package/lib/keycloakJsAdapter.d.ts +0 -51
- package/lib/keycloakJsAdapter.js +0 -74
- package/lib/keycloakJsAdapter.js.map +0 -1
- package/src/bin/constants.ts +0 -13
- 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/generateThemeVariants.ts +0 -50
- package/src/bin/keycloakify/generateTheme/index.ts +0 -1
- package/src/bin/promptKeycloakVersion.ts +0 -49
- package/src/bin/tools/grant-exec-perms.ts +0 -19
- package/src/bin/tools/logger.ts +0 -27
- package/src/index.ts +0 -1
- package/src/lib/keycloakJsAdapter.ts +0 -118
- package/vite-plugin/index.js.map +0 -1
- package/vite-plugin/vite-plugin.js.map +0 -1
- /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
@@ -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
|
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
7
|
import {
|
8
8
|
type ThemeType,
|
9
9
|
lastKeycloakVersionWithAccountV1,
|
10
10
|
keycloak_resources,
|
11
11
|
accountV1ThemeName,
|
12
|
-
basenameOfTheKeycloakifyResourcesDir
|
13
|
-
|
12
|
+
basenameOfTheKeycloakifyResourcesDir,
|
13
|
+
loginThemePageIds,
|
14
|
+
accountThemePageIds
|
15
|
+
} from "../../shared/constants";
|
14
16
|
import { isInside } from "../../tools/isInside";
|
15
|
-
import type { BuildOptions } from "
|
17
|
+
import type { BuildOptions } from "../../shared/buildOptions";
|
16
18
|
import { assert, type Equals } from "tsafe/assert";
|
17
|
-
import { downloadKeycloakStaticResources } from "
|
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
|
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;
|
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(
|
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
|
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
|
-
|
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
|
240
|
+
const metaInfKeycloakThemes: MetaInfKeycloakTheme = { "themes": [] };
|
258
241
|
|
259
|
-
|
260
|
-
|
261
|
-
|
242
|
+
metaInfKeycloakThemes.themes.push({
|
243
|
+
"name": themeName,
|
244
|
+
"types": objectEntries(implementedThemeTypes)
|
245
|
+
.filter(([, isImplemented]) => isImplemented)
|
246
|
+
.map(([themeType]) => themeType)
|
247
|
+
});
|
262
248
|
|
263
|
-
|
264
|
-
|
249
|
+
if (implementedThemeTypes.account) {
|
250
|
+
metaInfKeycloakThemes.themes.push({
|
251
|
+
"name": accountV1ThemeName,
|
252
|
+
"types": ["account"]
|
253
|
+
});
|
254
|
+
}
|
265
255
|
|
266
|
-
|
256
|
+
writeMetaInfKeycloakThemes({
|
257
|
+
"keycloakifyBuildDirPath": buildOptions.keycloakifyBuildDirPath,
|
258
|
+
metaInfKeycloakThemes
|
259
|
+
});
|
260
|
+
}
|
267
261
|
}
|
package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts
ADDED
@@ -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";
|
package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readExtraPageNames.ts
RENAMED
@@ -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
|
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;
|
package/src/bin/keycloakify/{generateTheme → generateSrcMainResources}/readFieldNameUsage.ts
RENAMED
@@ -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: {
|
8
|
-
const {
|
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(
|
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) {
|
@@ -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 "
|
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: {
|
19
|
-
|
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
|
-
...
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
53
|
+
` start-dev`,
|
55
54
|
""
|
56
55
|
].join("\n"),
|
57
56
|
"utf8"
|
@@ -1,25 +1,56 @@
|
|
1
|
-
import {
|
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 "
|
7
|
-
import {
|
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
|
15
|
-
|
16
|
-
|
17
|
-
});
|
13
|
+
export async function command(params: { cliCommandOptions: CliCommandOptions }) {
|
14
|
+
exit_if_maven_not_installed: {
|
15
|
+
let commandOutput: Buffer | undefined = undefined;
|
18
16
|
|
19
|
-
|
20
|
-
|
17
|
+
try {
|
18
|
+
commandOutput = child_process.execSync("mvn --version", { "stdio": ["ignore", "pipe", "ignore"] });
|
19
|
+
} catch {}
|
21
20
|
|
22
|
-
|
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
|
-
|
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
|
-
[
|
74
|
+
[vitePluginSubScriptEnvNames.runPostBuildScript]: JSON.stringify(buildOptions)
|
49
75
|
}
|
50
76
|
});
|
51
77
|
}
|
52
78
|
|
53
|
-
|
54
|
-
doesImplementAccountTheme,
|
55
|
-
buildOptions
|
56
|
-
});
|
79
|
+
await buildJars({ buildOptions });
|
57
80
|
|
58
|
-
|
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 "
|
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 "
|
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 "
|
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 "
|
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 "
|
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
|
|