Fix missing build option for webpack

This commit is contained in:
Joseph Garrone 2024-06-13 22:58:32 +02:00
parent 47f03f6833
commit 250b94c8b5

View File

@ -5,7 +5,7 @@ import { getNpmWorkspaceRootDirPath } from "../tools/getNpmWorkspaceRootDirPath"
import type { CliCommandOptions } from "../main"; import type { CliCommandOptions } from "../main";
import { z } from "zod"; import { z } from "zod";
import * as fs from "fs"; import * as fs from "fs";
import { assert } from "tsafe"; import { assert, type Equals } from "tsafe";
import * as child_process from "child_process"; import * as child_process from "child_process";
import { vitePluginSubScriptEnvNames } from "./constants"; import { vitePluginSubScriptEnvNames } from "./constants";
@ -102,15 +102,33 @@ export function getBuildContext(params: {
})(); })();
const parsedPackageJson = (() => { const parsedPackageJson = (() => {
type WebpackSpecificBuildOptions = {
projectBuildDirPath?: string;
};
type ParsedPackageJson = { type ParsedPackageJson = {
name: string; name: string;
version?: string; version?: string;
homepage?: 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; projectBuildDirPath?: string;
}; };
}; };
{
type Got = NonNullable<ParsedPackageJson["keycloakify"]>;
type Expected = BuildOptions & WebpackSpecificBuildOptions;
assert<Equals<Got, Expected>>();
}
const zParsedPackageJson = z.object({ const zParsedPackageJson = z.object({
name: z.string(), name: z.string(),
version: z.string().optional(), version: z.string().optional(),
@ -123,16 +141,24 @@ export function getBuildContext(params: {
loginThemeResourcesFromKeycloakVersion: z.string().optional(), loginThemeResourcesFromKeycloakVersion: z.string().optional(),
projectBuildDirPath: z.string().optional(), projectBuildDirPath: z.string().optional(),
keycloakifyBuildDirPath: 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() themeName: z.union([z.string(), z.array(z.string())]).optional()
}) })
.optional() .optional()
}); });
{ {
type Got = ReturnType<(typeof zParsedPackageJson)["parse"]>; type Got = z.infer<typeof zParsedPackageJson>;
type Expected = ParsedPackageJson; type Expected = ParsedPackageJson;
assert<Got extends Expected ? true : false>(); assert<Equals<Got, Expected>>();
assert<Expected extends Got ? true : false>();
} }
return zParsedPackageJson.parse( return zParsedPackageJson.parse(