diff --git a/framework/engine/ssr.ts b/framework/engine/ssr.ts index d417e92..4cb43c7 100644 --- a/framework/engine/ssr.ts +++ b/framework/engine/ssr.ts @@ -8,20 +8,13 @@ // to track needed client scripts without introducing patches to the engine. export type Addons = Record; -export function ssrSync(node: Node): Result; -export function ssrSync(node: Node, addon: A): Result; -export function ssrSync(node: Node, addon: Addons = {}) { +export function ssrSync(node: Node, addon: A = {} as A) { const r = initRender(false, addon); const resolved = resolveNode(r, node); return { text: renderNode(resolved), addon }; } -export function ssrAsync(node: Node): Promise; -export function ssrAsync( - node: Node, - addon: A, -): Promise>; -export function ssrAsync(node: Node, addon: Addons = {}) { +export function ssrAsync(node: Node, addon: A = {} as A) { const r = initRender(true, addon); const resolved = resolveNode(r, node); if (r.async === 0) { @@ -142,13 +135,13 @@ export function resolveNode(r: Render, node: unknown): ResolvedNode { return resolveNode(r, tag(props)); } catch (e) { const { 4: src } = node; - if (e && typeof e === "object") { - } + if (e && typeof e === "object") (e as { src?: string }).src = src; + throw e; } finally { currentRender = null; } } - if (typeof tag !== "string") throw new Error("Unexpected " + typeof type); + if (typeof tag !== "string") throw new Error("Unexpected " + inspect(type)); const children = props?.children; if (children) return [kElement, tag, props, resolveNode(r, children)]; return node; diff --git a/framework/lib/sitegen.ts b/framework/lib/sitegen.ts index 6bfaa59..bc7b3ab 100644 --- a/framework/lib/sitegen.ts +++ b/framework/lib/sitegen.ts @@ -28,6 +28,10 @@ export function getRender() { }); } +export function inRender() { + return "sitegen" in ssr.getCurrentRender(); +} + /** Add a client-side script to the page. */ export function addScript(id: ScriptId | { value: ScriptId }) { getRender().scripts.add(typeof id === "string" ? id : id.value); diff --git a/run.js b/run.js index 1b509c4..a8e6b1e 100644 --- a/run.js +++ b/run.js @@ -2,6 +2,7 @@ // all available plugins. Usage: "node run