From e8609de7b4904d31b0dc02f860af3ff9f9fdd8f2 Mon Sep 17 00:00:00 2001 From: Joseph Garrone Date: Sun, 6 Oct 2024 06:44:53 +0200 Subject: [PATCH] No need to handle non react environement with custom handler support --- src/bin/shared/generateKcGenTs.ts | 104 ++++++++---------------------- 1 file changed, 28 insertions(+), 76 deletions(-) diff --git a/src/bin/shared/generateKcGenTs.ts b/src/bin/shared/generateKcGenTs.ts index 7191a55c..e5bb7e86 100644 --- a/src/bin/shared/generateKcGenTs.ts +++ b/src/bin/shared/generateKcGenTs.ts @@ -1,10 +1,8 @@ -import { assert, type Equals } from "tsafe/assert"; -import { id } from "tsafe/id"; +import { assert } from "tsafe/assert"; import type { BuildContext } from "./buildContext"; import * as fs from "fs/promises"; import { join as pathJoin } from "path"; import { existsAsync } from "../tools/fs.existsAsync"; -import { z } from "zod"; export type BuildContextLike = { projectDirPath: string; @@ -25,45 +23,7 @@ export async function generateKcGenTs(params: { }): Promise { const { buildContext } = params; - const isReactProject: boolean = await (async () => { - const parsedPackageJson = await (async () => { - type ParsedPackageJson = { - dependencies?: Record; - devDependencies?: Record; - }; - - const zParsedPackageJson = (() => { - type TargetType = ParsedPackageJson; - - const zTargetType = z.object({ - dependencies: z.record(z.string()).optional(), - devDependencies: z.record(z.string()).optional() - }); - - assert, TargetType>>(); - - return id>(zTargetType); - })(); - - return zParsedPackageJson.parse( - JSON.parse( - (await fs.readFile(buildContext.packageJsonFilePath)).toString("utf8") - ) - ); - })(); - - return ( - { - ...parsedPackageJson.dependencies, - ...parsedPackageJson.devDependencies - }.react !== undefined - ); - })(); - - const filePath = pathJoin( - buildContext.themeSrcDirPath, - `kc.gen.ts${isReactProject ? "x" : ""}` - ); + const filePath = pathJoin(buildContext.themeSrcDirPath, `kc.gen.tsx`); const currentContent = (await existsAsync(filePath)) ? await fs.readFile(filePath) @@ -84,7 +44,7 @@ export async function generateKcGenTs(params: { ``, `// This file is auto-generated by Keycloakify`, ``, - isReactProject && `import { lazy, Suspense, type ReactNode } from "react";`, + `import { lazy, Suspense, type ReactNode } from "react";`, ``, `export type ThemeName = ${buildContext.themeNames.map(themeName => `"${themeName}"`).join(" | ")};`, ``, @@ -115,35 +75,31 @@ export async function generateKcGenTs(params: { ` }`, `}`, ``, - ...(!isReactProject - ? [] - : [ - hasLoginTheme && - `export const KcLoginPage = lazy(() => import("./login/KcPage"));`, - hasAccountTheme && - `export const KcAccountPage = lazy(() => import("./account/KcPage"));`, - ``, - `export function KcPage(`, - ` props: {`, - ` kcContext: KcContext;`, - ` fallback?: ReactNode;`, - ` }`, - `) {`, - ` const { kcContext, fallback } = props;`, - ` return (`, - ` `, - ` {(() => {`, - ` switch (kcContext.themeType) {`, - hasLoginTheme && - ` case "login": return ;`, - hasAccountTheme && - ` case "account": return ;`, - ` }`, - ` })()}`, - ` `, - ` );`, - `}` - ]), + hasLoginTheme && + `export const KcLoginPage = lazy(() => import("./login/KcPage"));`, + hasAccountTheme && + `export const KcAccountPage = lazy(() => import("./account/KcPage"));`, + ``, + `export function KcPage(`, + ` props: {`, + ` kcContext: KcContext;`, + ` fallback?: ReactNode;`, + ` }`, + `) {`, + ` const { kcContext, fallback } = props;`, + ` return (`, + ` `, + ` {(() => {`, + ` switch (kcContext.themeType) {`, + hasLoginTheme && + ` case "login": return ;`, + hasAccountTheme && + ` case "account": return ;`, + ` }`, + ` })()}`, + ` `, + ` );`, + `}`, ``, `/* prettier-ignore-end */`, `` @@ -160,10 +116,6 @@ export async function generateKcGenTs(params: { await fs.writeFile(filePath, newContent); delete_legacy_file: { - if (!isReactProject) { - break delete_legacy_file; - } - const legacyFilePath = filePath.replace(/tsx$/, "ts"); if (!(await existsAsync(legacyFilePath))) {