Memoize getImplementThemeTypes

This commit is contained in:
Joseph Garrone 2024-06-15 14:45:22 +02:00
parent 3a976d08d2
commit f6dc8f0741

View File

@ -4,9 +4,22 @@ import * as fs from "fs";
import { type ThemeType } from "./constants"; import { type ThemeType } from "./constants";
import { getThemeSrcDirPath } from "./getThemeSrcDirPath"; import { getThemeSrcDirPath } from "./getThemeSrcDirPath";
type ImplementedThemeTypes = Readonly<Record<ThemeType | "email", boolean>>;
let cache:
| { projectDirPath: string; implementedThemeTypes: ImplementedThemeTypes }
| undefined;
export function getImplementedThemeTypes(params: { projectDirPath: string }) { export function getImplementedThemeTypes(params: { projectDirPath: string }) {
const { projectDirPath } = params; const { projectDirPath } = params;
if (cache !== undefined && cache.projectDirPath === projectDirPath) {
const { implementedThemeTypes } = cache;
return { implementedThemeTypes };
}
cache = undefined;
const { themeSrcDirPath } = getThemeSrcDirPath({ const { themeSrcDirPath } = getThemeSrcDirPath({
projectDirPath projectDirPath
}); });
@ -19,5 +32,7 @@ export function getImplementedThemeTypes(params: { projectDirPath: string }) {
]) ])
); );
cache = { projectDirPath, implementedThemeTypes };
return { implementedThemeTypes }; return { implementedThemeTypes };
} }