feat: replace CJS require with static imports, add comprehensive layout system tests

This commit is contained in:
saberzero1
2026-07-27 20:23:31 +02:00
parent 6f27207fbf
commit 508f73a33f
9 changed files with 1096 additions and 183 deletions
+8 -8
View File
@@ -27,6 +27,10 @@ import { loadComponentsFromPackage } from "./componentLoader"
import { loadFramesFromPackage } from "./frameLoader"
import { componentRegistry } from "../../components/registry"
import { getCondition } from "./conditions"
import Flex from "../../components/Flex"
import MobileOnly from "../../components/MobileOnly"
import DesktopOnly from "../../components/DesktopOnly"
import ConditionalRender from "../../components/ConditionalRender"
const CONFIG_YAML_PATH = path.join(process.cwd(), "quartz.config.yaml")
const DEFAULT_CONFIG_YAML_PATH = path.join(process.cwd(), "quartz.config.default.yaml")
@@ -717,7 +721,8 @@ export async function loadQuartzLayout(layoutOverrides?: {
return { defaults: mergedDefaults, byPageType: mergedByPageType }
}
function buildLayoutForEntries(
/** @internal Exported for testing only. */
export function buildLayoutForEntries(
entries: PluginJsonEntry[],
layoutConfig: LayoutConfig,
): Partial<FullPageLayout> {
@@ -863,7 +868,8 @@ function buildLayoutForEntries(
return result
}
function resolveGroups(
/** @internal Exported for testing only. */
export function resolveGroups(
items: {
component: QuartzComponent
priority: number
@@ -924,9 +930,6 @@ function resolveGroups(
justify: m.groupOptions?.justify,
}))
// Dynamically import Flex to avoid circular dependencies
const FlexModule = require("../../components/Flex")
const Flex = FlexModule.default as Function
const flexComponent = Flex({
components: flexComponents,
direction: groupConfig.direction ?? "row",
@@ -951,10 +954,8 @@ function applyDisplayWrapper(
display: "mobile-only" | "desktop-only",
): QuartzComponent {
if (display === "mobile-only") {
const MobileOnly = require("../../components/MobileOnly").default as Function
return MobileOnly(component) as QuartzComponent
} else {
const DesktopOnly = require("../../components/DesktopOnly").default as Function
return DesktopOnly(component) as QuartzComponent
}
}
@@ -969,7 +970,6 @@ function applyConditionWrapper(component: QuartzComponent, conditionName: string
return component
}
const ConditionalRender = require("../../components/ConditionalRender").default as Function
return ConditionalRender({
component,
condition: predicate,