From 68dab459317eb74a6a0962b1ffdd8b2c8b90dadf Mon Sep 17 00:00:00 2001 From: garronej Date: Mon, 3 Apr 2023 20:10:06 +0200 Subject: [PATCH 1/5] Refactor Terms.tsx --- src/login/pages/Terms.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/login/pages/Terms.tsx b/src/login/pages/Terms.tsx index 2333a3af..fe0149a5 100644 --- a/src/login/pages/Terms.tsx +++ b/src/login/pages/Terms.tsx @@ -21,13 +21,17 @@ export default function Terms(props: PageProps -
{evtTermMarkdown.state && {evtTermMarkdown.state}}
+
+ {termMarkdown} +
Date: Mon, 3 Apr 2023 20:10:40 +0200 Subject: [PATCH 2/5] Fix type error in useDownloadTerms --- src/login/lib/useDownloadTerms.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/login/lib/useDownloadTerms.ts b/src/login/lib/useDownloadTerms.ts index 8a472c08..a2736708 100644 --- a/src/login/lib/useDownloadTerms.ts +++ b/src/login/lib/useDownloadTerms.ts @@ -10,7 +10,7 @@ import { KcContext } from "../kcContext"; export const evtTermMarkdown = Evt.create(undefined); export type KcContextLike = { - pageId: KcContext["pageId"]; + pageId: string; locale?: { currentLanguageTag: string; }; From 32f66b3eaa0dd49420328f9d4237e2aa353d08ea Mon Sep 17 00:00:00 2001 From: garronej Date: Mon, 3 Apr 2023 20:16:38 +0200 Subject: [PATCH 3/5] #297 --- src/account/kcContext/getKcContext.ts | 4 ++- src/bin/eject-keycloak-page.ts | 2 +- .../keycloakify/generateFtl/generateFtl.ts | 31 ------------------- src/bin/keycloakify/generateFtl/index.ts | 1 + src/bin/keycloakify/generateFtl/pageId.ts | 30 ++++++++++++++++++ src/login/kcContext/getKcContext.ts | 3 +- 6 files changed, 37 insertions(+), 34 deletions(-) create mode 100644 src/bin/keycloakify/generateFtl/pageId.ts diff --git a/src/account/kcContext/getKcContext.ts b/src/account/kcContext/getKcContext.ts index 76dce92d..eab7d508 100644 --- a/src/account/kcContext/getKcContext.ts +++ b/src/account/kcContext/getKcContext.ts @@ -7,6 +7,8 @@ import { pathBasename } from "keycloakify/tools/pathBasename"; import { mockTestingResourcesCommonPath } from "keycloakify/bin/mockTestingResourcesPath"; import { symToStr } from "tsafe/symToStr"; import { kcContextMocks, kcContextCommonMock } from "keycloakify/account/kcContext/kcContextMocks"; +import { id } from "tsafe/id"; +import { accountThemePageIds } from "keycloakify/bin/keycloakify/generateFtl/pageId"; export function getKcContext(params?: { mockPageId?: ExtendKcContext["pageId"]; @@ -62,7 +64,7 @@ export function getKcContext(accountThemePageIds).indexOf(realKcContext.pageId) < 0 && !("account" in realKcContext)) { return { "kcContext": undefined }; } diff --git a/src/bin/eject-keycloak-page.ts b/src/bin/eject-keycloak-page.ts index e60737bb..3c3e5e9b 100644 --- a/src/bin/eject-keycloak-page.ts +++ b/src/bin/eject-keycloak-page.ts @@ -9,7 +9,7 @@ import { type AccountThemePageId, themeTypes, type ThemeType -} from "./keycloakify/generateFtl/generateFtl"; +} from "./keycloakify/generateFtl"; import { capitalize } from "tsafe/capitalize"; import { readFile, writeFile } from "fs/promises"; import { existsSync } from "fs"; diff --git a/src/bin/keycloakify/generateFtl/generateFtl.ts b/src/bin/keycloakify/generateFtl/generateFtl.ts index bd17bb48..0689d212 100644 --- a/src/bin/keycloakify/generateFtl/generateFtl.ts +++ b/src/bin/keycloakify/generateFtl/generateFtl.ts @@ -13,37 +13,6 @@ export const themeTypes = ["login", "account"] as const; export type ThemeType = (typeof themeTypes)[number]; -export const loginThemePageIds = [ - "login.ftl", - "login-username.ftl", - "login-password.ftl", - "webauthn-authenticate.ftl", - "register.ftl", - "register-user-profile.ftl", - "info.ftl", - "error.ftl", - "login-reset-password.ftl", - "login-verify-email.ftl", - "terms.ftl", - "login-otp.ftl", - "login-update-profile.ftl", - "login-update-password.ftl", - "login-idp-link-confirm.ftl", - "login-idp-link-email.ftl", - "login-page-expired.ftl", - "login-config-totp.ftl", - "logout-confirm.ftl", - "update-user-profile.ftl", - "idp-review-user-profile.ftl", - "update-email.ftl", - "select-authenticator.ftl" -] as const; - -export const accountThemePageIds = ["password.ftl", "account.ftl"] as const; - -export type LoginThemePageId = (typeof loginThemePageIds)[number]; -export type AccountThemePageId = (typeof accountThemePageIds)[number]; - export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.ExternalAssets; export namespace BuildOptionsLike { diff --git a/src/bin/keycloakify/generateFtl/index.ts b/src/bin/keycloakify/generateFtl/index.ts index 3a6d8e56..2d57d5e4 100644 --- a/src/bin/keycloakify/generateFtl/index.ts +++ b/src/bin/keycloakify/generateFtl/index.ts @@ -1 +1,2 @@ export * from "./generateFtl"; +export * from "./pageId"; diff --git a/src/bin/keycloakify/generateFtl/pageId.ts b/src/bin/keycloakify/generateFtl/pageId.ts new file mode 100644 index 00000000..a9504723 --- /dev/null +++ b/src/bin/keycloakify/generateFtl/pageId.ts @@ -0,0 +1,30 @@ +export const loginThemePageIds = [ + "login.ftl", + "login-username.ftl", + "login-password.ftl", + "webauthn-authenticate.ftl", + "register.ftl", + "register-user-profile.ftl", + "info.ftl", + "error.ftl", + "login-reset-password.ftl", + "login-verify-email.ftl", + "terms.ftl", + "login-otp.ftl", + "login-update-profile.ftl", + "login-update-password.ftl", + "login-idp-link-confirm.ftl", + "login-idp-link-email.ftl", + "login-page-expired.ftl", + "login-config-totp.ftl", + "logout-confirm.ftl", + "update-user-profile.ftl", + "idp-review-user-profile.ftl", + "update-email.ftl", + "select-authenticator.ftl" +] as const; + +export const accountThemePageIds = ["password.ftl", "account.ftl"] as const; + +export type LoginThemePageId = (typeof loginThemePageIds)[number]; +export type AccountThemePageId = (typeof accountThemePageIds)[number]; diff --git a/src/login/kcContext/getKcContext.ts b/src/login/kcContext/getKcContext.ts index 0bd877e5..82d01789 100644 --- a/src/login/kcContext/getKcContext.ts +++ b/src/login/kcContext/getKcContext.ts @@ -11,6 +11,7 @@ import { pathJoin } from "keycloakify/bin/tools/pathJoin"; import { pathBasename } from "keycloakify/tools/pathBasename"; import { mockTestingResourcesCommonPath } from "keycloakify/bin/mockTestingResourcesPath"; import { symToStr } from "tsafe/symToStr"; +import { loginThemePageIds } from "keycloakify/bin/keycloakify/generateFtl/pageId"; export function getKcContext(params?: { mockPageId?: ExtendKcContext["pageId"]; @@ -121,7 +122,7 @@ export function getKcContext(loginThemePageIds).indexOf(realKcContext.pageId) < 0 && !("login" in realKcContext)) { return { "kcContext": undefined }; } From ffa8440d1b6c74bf54288e571e6089c307e65cc0 Mon Sep 17 00:00:00 2001 From: garronej Date: Mon, 3 Apr 2023 20:19:43 +0200 Subject: [PATCH 4/5] Bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 994f20af..8485e6f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "keycloakify", - "version": "7.6.2", + "version": "7.6.3", "description": "Create Keycloak themes using React", "repository": { "type": "git", From b2c1b41981d8bbc470c1cacfae43f0b14ac09b6a Mon Sep 17 00:00:00 2001 From: garronej Date: Mon, 3 Apr 2023 20:24:58 +0200 Subject: [PATCH 5/5] Update CI --- .github/workflows/ci.yaml | 54 +++++++++++++++------------------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 23dcb184..7419b4cf 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -17,44 +17,32 @@ jobs: - uses: actions/setup-node@v3 - uses: bahmutov/npm-install@v1 - name: If this step fails run 'yarn format' then commit again. - run: | - PACKAGE_MANAGER=npm - if [ -f "./yarn.lock" ]; then - PACKAGE_MANAGER=yarn - fi - $PACKAGE_MANAGER run format:check + run: yarn format:check test: runs-on: ${{ matrix.os }} needs: test_lint strategy: matrix: - node: [ '16' ] + node: [ '17' ] os: [ ubuntu-latest ] name: Test with Node v${{ matrix.node }} on ${{ matrix.os }} steps: - - name: Tell if project is using npm or yarn - id: step1 - uses: garronej/ts-ci@v2.0.2 - with: - action_name: tell_if_project_uses_npm_or_yarn - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - uses: bahmutov/npm-install@v1 - - if: steps.step1.outputs.npm_or_yarn == 'yarn' - run: | - yarn build - yarn test - - if: steps.step1.outputs.npm_or_yarn == 'npm' - run: | - npm run build - npm test + - run: yarn build + - run: yarn test + - run: yarn test:keycloakify-starter + check_if_version_upgraded: name: Check if version upgrade - # We run this only if it's a push on the default branch or if it's a PR from a - # branch (meaning not a PR from a fork). It would be more straightforward to test if secrets.NPM_TOKEN is - # defined but GitHub Action don't allow it yet. + # When someone forks the repo and opens a PR we want to enables the tests to be run (the previous jobs) + # but obviously only us should be allowed to release. + # In the following check we make sure that we own the branch this CI workflow is running on before continuing. + # Without this check, trying to release would fail anyway because only us have the correct secret.NPM_TOKEN but + # it's cleaner to stop the execution instead of letting the CI crash. if: | github.event_name == 'push' || github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login @@ -66,7 +54,7 @@ jobs: is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }} is_pre_release: ${{steps.step1.outputs.is_pre_release }} steps: - - uses: garronej/ts-ci@v2.0.2 + - uses: garronej/ts-ci@v2.1.0 id: step1 with: action_name: is_package_json_version_upgraded @@ -74,8 +62,8 @@ jobs: create_github_release: runs-on: ubuntu-latest - # We create a release only if the version have been upgraded and we are on the main branch - # or if we are on a branch of the repo that has an PR open on main. + # We create release only if the version in the package.json have been upgraded and this CI is running against the main branch. + # We allow branches with a PR open on main to publish pre-release (x.y.z-rc.u) but not actual releases. if: | needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' && ( @@ -109,15 +97,13 @@ jobs: with: registry-url: https://registry.npmjs.org/ - uses: bahmutov/npm-install@v1 - - run: | - PACKAGE_MANAGER=npm - if [ -f "./yarn.lock" ]; then - PACKAGE_MANAGER=yarn - fi - $PACKAGE_MANAGER run build - - run: npx -y -p denoify@1.2.2 enable_short_npm_import_path + - run: yarn build + - run: npx -y -p denoify@1.3.0 enable_short_npm_import_path env: DRY_RUN: "0" + - uses: garronej/ts-ci@v2.1.0 + with: + action_name: remove_dark_mode_specific_images_from_readme - name: Publishing on NPM run: | if [ "$(npm show . version)" = "$VERSION" ]; then @@ -136,4 +122,4 @@ jobs: env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} VERSION: ${{ needs.check_if_version_upgraded.outputs.to_version }} - IS_PRE_RELEASE: ${{ needs.check_if_version_upgraded.outputs.is_pre_release }} + IS_PRE_RELEASE: ${{ needs.check_if_version_upgraded.outputs.is_pre_release }} \ No newline at end of file