diff --git a/src/bin/shared/buildContext.ts b/src/bin/shared/buildContext.ts index d6de61a5..a0515fb1 100644 --- a/src/bin/shared/buildContext.ts +++ b/src/bin/shared/buildContext.ts @@ -5,7 +5,7 @@ import { getNpmWorkspaceRootDirPath } from "../tools/getNpmWorkspaceRootDirPath" import type { CliCommandOptions } from "../main"; import { z } from "zod"; import * as fs from "fs"; -import { assert } from "tsafe"; +import { assert, type Equals } from "tsafe"; import * as child_process from "child_process"; import { vitePluginSubScriptEnvNames } from "./constants"; @@ -102,15 +102,33 @@ export function getBuildContext(params: { })(); const parsedPackageJson = (() => { + type WebpackSpecificBuildOptions = { + projectBuildDirPath?: string; + }; + type ParsedPackageJson = { name: string; version?: string; homepage?: string; - keycloakify?: BuildOptions & { + keycloakify?: { + themeName?: string | string[]; + environmentVariables?: { name: string; default: string }[]; + extraThemeProperties?: string[]; + artifactId?: string; + groupId?: string; + loginThemeResourcesFromKeycloakVersion?: string; + keycloakifyBuildDirPath?: string; + kcContextExclusionsFtl?: string; projectBuildDirPath?: string; }; }; + { + type Got = NonNullable; + type Expected = BuildOptions & WebpackSpecificBuildOptions; + assert>(); + } + const zParsedPackageJson = z.object({ name: z.string(), version: z.string().optional(), @@ -123,16 +141,24 @@ export function getBuildContext(params: { loginThemeResourcesFromKeycloakVersion: z.string().optional(), projectBuildDirPath: z.string().optional(), keycloakifyBuildDirPath: z.string().optional(), + kcContextExclusionsFtl: z.string().optional(), + environmentVariables: z + .array( + z.object({ + name: z.string(), + default: z.string() + }) + ) + .optional(), themeName: z.union([z.string(), z.array(z.string())]).optional() }) .optional() }); { - type Got = ReturnType<(typeof zParsedPackageJson)["parse"]>; + type Got = z.infer; type Expected = ParsedPackageJson; - assert(); - assert(); + assert>(); } return zParsedPackageJson.parse(