Skip to content

Commit 2dd06ed

Browse files
committed
fix(tools): generation of json imports for themes
1 parent 2f8150d commit 2dd06ed

6 files changed

Lines changed: 12 additions & 10 deletions

File tree

packages/ai/src/themes/base/Button-parameters.css

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/ai/src/themes/sap_horizon/parameters-bundle.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/ai/src/themes/sap_horizon_dark/parameters-bundle.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/ai/src/themes/sap_horizon_hcb/parameters-bundle.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/ai/src/themes/sap_horizon_hcw/parameters-bundle.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/tools/lib/generate-json-imports/themes.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,21 @@ const generate = async (argv) => {
2121
return matches ? dir : undefined;
2222
}).filter(key => !!key && allThemes.includes(key));
2323

24+
// Themes that doesn't exist on the file system
25+
const missingThemes = allThemes.filter(theme => !themesOnFileSystem.includes(theme));
26+
2427
const packageName = JSON.parse(await fs.readFile("package.json")).name;
2528

26-
const availableThemesArray = `[${themesOnFileSystem.map(theme => `"${theme}"`).join(", ")}]`;
29+
// Contain all supported themes from assets-meta.js
30+
const availableThemesArray = `[${allThemes.map(theme => `"${theme}"`).join(", ")}]`;
31+
2732
const dynamicImportLines = themesOnFileSystem.map(theme => `\t\tcase "${theme}": return (await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle" */"../assets/themes/${theme}/parameters-bundle.css.json")).default;`).join("\n");
2833
const dynamicImportJSONAttrLines = themesOnFileSystem.map(theme => `\t\tcase "${theme}": return (await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle" */"../assets/themes/${theme}/parameters-bundle.css.json", {with: { type: 'json'}})).default;`).join("\n");
2934
const fetchMetaResolveLines = themesOnFileSystem.map(theme => `\t\tcase "${theme}": return (await fetch(new URL("../assets/themes/${theme}/parameters-bundle.css.json", import.meta.url))).json();`).join("\n");
3035

36+
// Lines for missing themes to avoid runtime errors. By default parameters-bundle.css.json returns a strings.
37+
const missingThemesLines = missingThemes.map(theme => `\t\tcase "${theme}": return "";`).join("\n");
38+
3139
// dynamic imports file content
3240
const contentDynamic = function (lines) {
3341
return `// @ts-nocheck
@@ -55,9 +63,9 @@ ${availableThemesArray}
5563

5664
await fs.mkdir(path.dirname(outputFileDynamic), { recursive: true });
5765
return Promise.all([
58-
fs.writeFile(outputFileDynamic, contentDynamic(dynamicImportLines)),
59-
fs.writeFile(outputFileDynamicImportJSONAttr, contentDynamic(dynamicImportJSONAttrLines)),
60-
fs.writeFile(outputFileFetchMetaResolve, contentDynamic(fetchMetaResolveLines)),
66+
fs.writeFile(outputFileDynamic, contentDynamic(dynamicImportLines.concat("\n", missingThemesLines))),
67+
fs.writeFile(outputFileDynamicImportJSONAttr, contentDynamic(dynamicImportJSONAttrLines.concat("\n", missingThemesLines))),
68+
fs.writeFile(outputFileFetchMetaResolve, contentDynamic(fetchMetaResolveLines.concat("\n", missingThemesLines))),
6169
]).
6270
then(() => {
6371
console.log("Generated themes JSON imports.");

0 commit comments

Comments
 (0)