diff --git a/src/bin/initialize-email-theme.ts b/src/bin/initialize-email-theme.ts index 0ca3f8fc..88efb69e 100644 --- a/src/bin/initialize-email-theme.ts +++ b/src/bin/initialize-email-theme.ts @@ -103,14 +103,21 @@ export async function command(params: { buildContext: BuildContext }) { const moduleName = `@keycloakify/email-native`; - const [version] = ( - JSON.parse( - child_process - .execSync(`npm show ${moduleName} versions --json`) - .toString("utf8") - .trim() - ) as string[] - ) + const [version] = ((): string[] => { + const cmdOutput = child_process + .execSync(`npm show ${moduleName} versions --json`) + .toString("utf8") + .trim(); + + const versions = JSON.parse(cmdOutput) as string | string[]; + + // NOTE: Bug in some older npm versions + if (typeof versions === "string") { + return [versions]; + } + + return versions; + })() .reverse() .filter(version => !version.includes("-")); diff --git a/src/bin/shared/initializeSpa.ts b/src/bin/shared/initializeSpa.ts index dceb2107..9795b9c3 100644 --- a/src/bin/shared/initializeSpa.ts +++ b/src/bin/shared/initializeSpa.ts @@ -105,14 +105,21 @@ export async function initializeSpa(params: { const moduleName = `@keycloakify/keycloak-${themeType}-ui`; - const version = ( - JSON.parse( - child_process - .execSync(`npm show ${moduleName} versions --json`) - .toString("utf8") - .trim() - ) as string[] - ) + const version = ((): string[] => { + const cmdOutput = child_process + .execSync(`npm show ${moduleName} versions --json`) + .toString("utf8") + .trim(); + + const versions = JSON.parse(cmdOutput) as string | string[]; + + // NOTE: Bug in some older npm versions + if (typeof versions === "string") { + return [versions]; + } + + return versions; + })() .reverse() .filter(version => !version.includes("-")) .find(version =>