refactor
This commit is contained in:
parent
22fa1411bf
commit
8b24e23721
@ -2,7 +2,7 @@ export const nameOfTheGlobal = "kcContext";
|
||||
export const keycloak_resources = "keycloak-resources";
|
||||
export const resources_common = "resources-common";
|
||||
export const lastKeycloakVersionWithAccountV1 = "21.1.2";
|
||||
export const keycloakifyViteConfigJsonBasename = ".keycloakifyViteConfig.json";
|
||||
export const resolvedViteConfigJsonBasename = ".keycloakifyViteConfig.json";
|
||||
export const basenameOfTheKeycloakifyResourcesDir = "build";
|
||||
|
||||
export const themeTypes = ["login", "account"] as const;
|
||||
|
@ -3,8 +3,7 @@ import { getParsedPackageJson } from "./parsedPackageJson";
|
||||
import { join as pathJoin } from "path";
|
||||
import parseArgv from "minimist";
|
||||
import { getAbsoluteAndInOsFormatPath } from "../tools/getAbsoluteAndInOsFormatPath";
|
||||
import * as fs from "fs";
|
||||
import { getParsedKeycloakifyViteConfig, getKeycloakifyBuildDirPath } from "./parsedKeycloakifyViteConfig";
|
||||
import { readResolvedViteConfig, getKeycloakifyBuildDirPath } from "./resolvedViteConfig";
|
||||
|
||||
/** Consolidated build option gathered form CLI arguments and config in package.json */
|
||||
export type BuildOptions = {
|
||||
@ -34,8 +33,8 @@ export function readBuildOptions(params: { reactAppRootDirPath: string; processA
|
||||
|
||||
const parsedPackageJson = getParsedPackageJson({ reactAppRootDirPath });
|
||||
|
||||
const { parsedKeycloakifyViteConfig } =
|
||||
getParsedKeycloakifyViteConfig({
|
||||
const { resolvedViteConfig } =
|
||||
readResolvedViteConfig({
|
||||
"parsedPackageJson_keycloakify_keycloakifyBuildDirPath": parsedPackageJson.keycloakify?.keycloakifyBuildDirPath,
|
||||
reactAppRootDirPath
|
||||
}) ?? {};
|
||||
@ -60,12 +59,12 @@ export function readBuildOptions(params: { reactAppRootDirPath: string; processA
|
||||
const { keycloakifyBuildDirPath } = getKeycloakifyBuildDirPath({
|
||||
"parsedPackageJson_keycloakify_keycloakifyBuildDirPath": parsedPackageJson.keycloakify?.keycloakifyBuildDirPath,
|
||||
reactAppRootDirPath,
|
||||
"bundler": parsedKeycloakifyViteConfig !== undefined ? "vite" : "webpack"
|
||||
"bundler": resolvedViteConfig !== undefined ? "vite" : "webpack"
|
||||
});
|
||||
//const keycloakifyBuildDirPath = keycloakifyBuildDirPath_vite ?? pathJoin(reactAppRootDirPath, "build_keycloak");
|
||||
|
||||
return {
|
||||
"bundler": parsedKeycloakifyViteConfig !== undefined ? "vite" : "webpack",
|
||||
"bundler": resolvedViteConfig !== undefined ? "vite" : "webpack",
|
||||
"isSilent": (() => {
|
||||
const argv = parseArgv(processArgv);
|
||||
|
||||
@ -94,8 +93,8 @@ export function readBuildOptions(params: { reactAppRootDirPath: string; processA
|
||||
"loginThemeResourcesFromKeycloakVersion": parsedPackageJson.keycloakify?.loginThemeResourcesFromKeycloakVersion ?? "11.0.3",
|
||||
reactAppRootDirPath,
|
||||
"reactAppBuildDirPath": (() => {
|
||||
if (parsedKeycloakifyViteConfig !== undefined) {
|
||||
return pathJoin(reactAppRootDirPath, parsedKeycloakifyViteConfig.buildDir);
|
||||
if (resolvedViteConfig !== undefined) {
|
||||
return pathJoin(reactAppRootDirPath, resolvedViteConfig.buildDir);
|
||||
}
|
||||
|
||||
if (parsedPackageJson.keycloakify?.reactAppBuildDirPath !== undefined) {
|
||||
@ -109,8 +108,8 @@ export function readBuildOptions(params: { reactAppRootDirPath: string; processA
|
||||
})(),
|
||||
|
||||
"publicDirPath": (() => {
|
||||
if (parsedKeycloakifyViteConfig !== undefined) {
|
||||
return parsedKeycloakifyViteConfig.publicDirPath;
|
||||
if (resolvedViteConfig !== undefined) {
|
||||
return resolvedViteConfig.publicDirPath;
|
||||
}
|
||||
|
||||
if (process.env.PUBLIC_DIR_PATH !== undefined) {
|
||||
|
@ -3,18 +3,18 @@ import { assert } from "tsafe";
|
||||
import type { Equals } from "tsafe";
|
||||
import { z } from "zod";
|
||||
import { pathJoin } from "../tools/pathJoin";
|
||||
import { keycloakifyViteConfigJsonBasename } from "../constants";
|
||||
import { resolvedViteConfigJsonBasename } from "../constants";
|
||||
import type { OptionalIfCanBeUndefined } from "../tools/OptionalIfCanBeUndefined";
|
||||
import { getAbsoluteAndInOsFormatPath } from "../tools/getAbsoluteAndInOsFormatPath";
|
||||
|
||||
export type ParsedKeycloakifyViteConfig = {
|
||||
export type ResolvedViteConfig = {
|
||||
buildDir: string;
|
||||
publicDir: string;
|
||||
assetsDir: string;
|
||||
urlPathname: string | undefined;
|
||||
};
|
||||
|
||||
const zParsedKeycloakifyViteConfig = z.object({
|
||||
const zResolvedViteConfig = z.object({
|
||||
"buildDir": z.string(),
|
||||
"publicDir": z.string(),
|
||||
"assetsDir": z.string(),
|
||||
@ -22,18 +22,18 @@ const zParsedKeycloakifyViteConfig = z.object({
|
||||
});
|
||||
|
||||
{
|
||||
type Got = ReturnType<(typeof zParsedKeycloakifyViteConfig)["parse"]>;
|
||||
type Expected = OptionalIfCanBeUndefined<ParsedKeycloakifyViteConfig>;
|
||||
type Got = ReturnType<(typeof zResolvedViteConfig)["parse"]>;
|
||||
type Expected = OptionalIfCanBeUndefined<ResolvedViteConfig>;
|
||||
|
||||
assert<Equals<Got, Expected>>();
|
||||
}
|
||||
|
||||
export function getParsedKeycloakifyViteConfig(params: {
|
||||
export function readResolvedViteConfig(params: {
|
||||
reactAppRootDirPath: string;
|
||||
parsedPackageJson_keycloakify_keycloakifyBuildDirPath: string | undefined;
|
||||
}):
|
||||
| {
|
||||
parsedKeycloakifyViteConfig: ParsedKeycloakifyViteConfig;
|
||||
resolvedViteConfig: ResolvedViteConfig;
|
||||
}
|
||||
| undefined {
|
||||
const { reactAppRootDirPath, parsedPackageJson_keycloakify_keycloakifyBuildDirPath } = params;
|
||||
@ -50,23 +50,23 @@ export function getParsedKeycloakifyViteConfig(params: {
|
||||
"bundler": "vite"
|
||||
});
|
||||
|
||||
const parsedKeycloakifyViteConfig = (() => {
|
||||
const keycloakifyViteConfigJsonFilePath = pathJoin(keycloakifyBuildDirPath, keycloakifyViteConfigJsonBasename);
|
||||
const resolvedViteConfig = (() => {
|
||||
const resolvedViteConfigJsonFilePath = pathJoin(keycloakifyBuildDirPath, resolvedViteConfigJsonBasename);
|
||||
|
||||
if (!fs.existsSync(keycloakifyViteConfigJsonFilePath)) {
|
||||
if (!fs.existsSync(resolvedViteConfigJsonFilePath)) {
|
||||
throw new Error("Missing Keycloakify Vite plugin output.");
|
||||
}
|
||||
|
||||
let out: ParsedKeycloakifyViteConfig;
|
||||
let out: ResolvedViteConfig;
|
||||
|
||||
try {
|
||||
out = JSON.parse(fs.readFileSync(keycloakifyViteConfigJsonFilePath).toString("utf8"));
|
||||
out = JSON.parse(fs.readFileSync(resolvedViteConfigJsonFilePath).toString("utf8"));
|
||||
} catch {
|
||||
throw new Error("The output of the Keycloakify Vite plugin is not a valid JSON.");
|
||||
}
|
||||
|
||||
try {
|
||||
const zodParseReturn = zParsedKeycloakifyViteConfig.parse(out);
|
||||
const zodParseReturn = zResolvedViteConfig.parse(out);
|
||||
|
||||
// So that objectKeys from tsafe return the expected result no matter what.
|
||||
Object.keys(zodParseReturn)
|
||||
@ -81,7 +81,7 @@ export function getParsedKeycloakifyViteConfig(params: {
|
||||
return out;
|
||||
})();
|
||||
|
||||
return { parsedKeycloakifyViteConfig };
|
||||
return { resolvedViteConfig };
|
||||
}
|
||||
|
||||
export function getKeycloakifyBuildDirPath(params: {
|
@ -3,8 +3,8 @@ import { getParsedPackageJson } from "../bin/keycloakify/parsedPackageJson";
|
||||
import type { Plugin } from "vite";
|
||||
import { assert } from "tsafe/assert";
|
||||
import * as fs from "fs";
|
||||
import { keycloakifyViteConfigJsonBasename, nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "../bin/constants";
|
||||
import { type ParsedKeycloakifyViteConfig, getKeycloakifyBuildDirPath } from "../bin/keycloakify/parsedKeycloakifyViteConfig";
|
||||
import { resolvedViteConfigJsonBasename, nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir } from "../bin/constants";
|
||||
import { type ResolvedViteConfig, getKeycloakifyBuildDirPath } from "../bin/keycloakify/resolvedViteConfig";
|
||||
import { replaceAll } from "../bin/tools/String.prototype.replaceAll";
|
||||
import { id } from "tsafe/id";
|
||||
|
||||
@ -46,10 +46,10 @@ export function keycloakify(): Plugin {
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
pathJoin(keycloakifyBuildDirPath, keycloakifyViteConfigJsonBasename),
|
||||
pathJoin(keycloakifyBuildDirPath, resolvedViteConfigJsonBasename),
|
||||
Buffer.from(
|
||||
JSON.stringify(
|
||||
id<ParsedKeycloakifyViteConfig>({
|
||||
id<ResolvedViteConfig>({
|
||||
"publicDir": pathRelative(reactAppRootDirPath, resolvedConfig.publicDir),
|
||||
"assetsDir": resolvedConfig.build.assetsDir,
|
||||
"buildDir": resolvedConfig.build.outDir,
|
||||
|
Loading…
x
Reference in New Issue
Block a user