@emkodev/emroute 1.10.0-beta.1 → 1.10.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/component/abstract.component.ts +1 -1
- package/core/component/page.component.ts +0 -6
- package/core/pipeline/pipeline.ts +30 -0
- package/core/renderer/html.renderer.ts +13 -10
- package/core/renderer/md.renderer.ts +18 -9
- package/core/renderer/ssr.renderer.ts +0 -19
- package/core/util/html.util.ts +3 -0
- package/core/util/widget-resolve.util.ts +9 -16
- package/dist/core/component/abstract.component.d.ts +1 -1
- package/dist/core/component/abstract.component.js +1 -0
- package/dist/core/component/abstract.component.js.map +1 -1
- package/dist/core/component/page.component.d.ts +0 -1
- package/dist/core/component/page.component.js +0 -3
- package/dist/core/component/page.component.js.map +1 -1
- package/dist/core/pipeline/pipeline.d.ts +10 -0
- package/dist/core/pipeline/pipeline.js +29 -0
- package/dist/core/pipeline/pipeline.js.map +1 -1
- package/dist/core/renderer/html.renderer.js +10 -10
- package/dist/core/renderer/html.renderer.js.map +1 -1
- package/dist/core/renderer/md.renderer.js +13 -8
- package/dist/core/renderer/md.renderer.js.map +1 -1
- package/dist/core/renderer/ssr.renderer.d.ts +0 -3
- package/dist/core/renderer/ssr.renderer.js +0 -15
- package/dist/core/renderer/ssr.renderer.js.map +1 -1
- package/dist/core/util/html.util.d.ts +2 -0
- package/dist/core/util/html.util.js +2 -0
- package/dist/core/util/html.util.js.map +1 -1
- package/dist/core/util/widget-resolve.util.d.ts +5 -6
- package/dist/core/util/widget-resolve.util.js +8 -11
- package/dist/core/util/widget-resolve.util.js.map +1 -1
- package/dist/emroute.js +62 -60
- package/dist/emroute.js.map +12 -13
- package/dist/src/element/component.element.js +2 -2
- package/dist/src/element/component.element.js.map +1 -1
- package/package.json +1 -1
- package/src/element/component.element.ts +2 -2
- package/core/widget/widget.registry.ts +0 -22
package/dist/emroute.js.map
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["core/util/html.util.js", "src/util/html.util.js", "src/element/slot.element.js", "src/element/markdown.element.js", "src/element/component.element.js", "core/router/route.trie.js", "core/runtime/abstract.runtime.js", "core/type/logger.type.js", "core/pipeline/pipeline.js", "core/util/widget-resolve.util.js", "core/component/abstract.component.js", "core/component/page.component.js", "core/
|
|
3
|
+
"sources": ["core/util/html.util.js", "src/util/html.util.js", "src/element/slot.element.js", "src/element/markdown.element.js", "src/element/component.element.js", "core/router/route.trie.js", "core/runtime/abstract.runtime.js", "core/type/logger.type.js", "core/pipeline/pipeline.js", "core/util/widget-resolve.util.js", "core/component/abstract.component.js", "core/component/page.component.js", "core/renderer/ssr.renderer.js", "core/renderer/html.renderer.js", "core/widget/widget.parser.js", "core/renderer/md.renderer.js", "core/util/md.util.js", "core/server/emroute.server.js", "core/util/route-tree.util.js", "runtime/abstract.runtime.js", "runtime/fetch.runtime.js", "src/renderer/spa/emroute.app.js", "core/component/widget.component.js", "src/overlay/overlay.css.js", "src/overlay/overlay.service.js", "runtime/cache.runtime.js", "runtime/idb.runtime.js", "src/service-worker/emroute.sw.js", "src/widget/page-title.widget.js", "src/widget/breadcrumb.widget.js", "src/renderer/spa/mod.js"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * Pure HTML utilities. No DOM, no browser APIs.\n */\n/** HTML attribute name marking a widget as server-rendered. */\nexport const SSR_ATTR = 'ssr';\n/** HTML attribute name for lazy-loading widgets. */\nexport const LAZY_ATTR = 'lazy';\nconst BLOCKED_PROTOCOLS = /^(javascript|data|vbscript):/i;\n/** Throw if a redirect URL uses a dangerous protocol. */\nexport function assertSafeRedirect(url) {\n if (BLOCKED_PROTOCOLS.test(url.trim())) {\n throw new Error(`Unsafe redirect URL blocked: ${url}`);\n }\n}\nexport function escapeHtml(text) {\n return text\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''')\n .replaceAll('`', '`');\n}\nexport function unescapeHtml(text) {\n return text\n .replaceAll('`', '`')\n .replaceAll(''', \"'\")\n .replaceAll('"', '\"')\n .replaceAll('>', '>')\n .replaceAll('<', '<')\n .replaceAll('&', '&');\n}\nexport function scopeWidgetCss(css, widgetName) {\n return `@scope (widget-${widgetName}) {\\n${css}\\n}`;\n}\n/** Status code to message mapping. */\nexport const STATUS_MESSAGES = {\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 500: 'Internal Server Error',\n};\n//# sourceMappingURL=html.util.js.map",
|
|
5
|
+
"/**\n * Pure HTML utilities. No DOM, no browser APIs.\n */\n/** HTML attribute name marking a widget as server-rendered. */\nexport const SSR_ATTR = 'ssr';\n/** HTML attribute name for lazy-loading widgets. */\nexport const LAZY_ATTR = 'lazy';\n/** Attribute names to skip when parsing widget params (not user-supplied data). */\nexport const RESERVED_ATTRS = new Set([SSR_ATTR, LAZY_ATTR, 'style', 'class', 'id', 'slot', 'part']);\nconst BLOCKED_PROTOCOLS = /^(javascript|data|vbscript):/i;\n/** Throw if a redirect URL uses a dangerous protocol. */\nexport function assertSafeRedirect(url) {\n if (BLOCKED_PROTOCOLS.test(url.trim())) {\n throw new Error(`Unsafe redirect URL blocked: ${url}`);\n }\n}\nexport function escapeHtml(text) {\n return text\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''')\n .replaceAll('`', '`');\n}\nexport function unescapeHtml(text) {\n return text\n .replaceAll('`', '`')\n .replaceAll(''', \"'\")\n .replaceAll('"', '\"')\n .replaceAll('>', '>')\n .replaceAll('<', '<')\n .replaceAll('&', '&');\n}\nexport function scopeWidgetCss(css, widgetName) {\n return `@scope (widget-${widgetName}) {\\n${css}\\n}`;\n}\n/** Status code to message mapping. */\nexport const STATUS_MESSAGES = {\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 500: 'Internal Server Error',\n};\n//# sourceMappingURL=html.util.js.map",
|
|
6
6
|
"/**\n * HTML Utilities (Browser Layer)\n *\n * Re-exports pure functions from core/ and provides browser-specific\n * SSR-compatible HTMLElement mock.\n */\n// Re-export everything from core\nexport { SSR_ATTR, LAZY_ATTR, assertSafeRedirect, escapeHtml, unescapeHtml, scopeWidgetCss, STATUS_MESSAGES, } from \"../../core/util/html.util.js\";\n/**\n * SSR-compatible ShadowRoot mock.\n */\nclass SsrShadowRoot {\n host;\n _innerHTML = '';\n constructor(host) {\n this.host = host;\n }\n get innerHTML() {\n return this._innerHTML;\n }\n set innerHTML(value) {\n this._innerHTML = value;\n }\n setHTMLUnsafe(html, _options) {\n this._innerHTML = html;\n }\n append(..._nodes) { }\n querySelector(_selector) {\n return null;\n }\n querySelectorAll(_selector) {\n return [];\n }\n get childNodes() {\n return [];\n }\n get firstChild() {\n return null;\n }\n}\n/**\n * SSR-compatible HTMLElement mock.\n */\nclass SsrHTMLElement {\n _innerHTML = '';\n _shadowRoot = null;\n _attributes = new Map();\n style = new Proxy({}, {\n set(_target, _prop, _value) {\n return true;\n },\n get(_target, prop) {\n if (typeof prop === 'string')\n return '';\n return undefined;\n },\n });\n get innerHTML() {\n return this._innerHTML;\n }\n set innerHTML(value) {\n this._innerHTML = value;\n }\n get shadowRoot() {\n return this._shadowRoot;\n }\n get childNodes() {\n return [];\n }\n get firstChild() {\n return null;\n }\n get attributes() {\n const attrs = [];\n for (const [name, value] of this._attributes) {\n attrs.push({ name, value });\n }\n return attrs;\n }\n attachShadow(_init) {\n this._shadowRoot = new SsrShadowRoot(this);\n return this._shadowRoot;\n }\n getAttribute(name) {\n return this._attributes.get(name) ?? null;\n }\n setAttribute(name, value) {\n this._attributes.set(name, value);\n }\n removeAttribute(name) {\n this._attributes.delete(name);\n }\n hasAttribute(name) {\n return this._attributes.has(name);\n }\n querySelector(_selector) {\n return null;\n }\n querySelectorAll(_selector) {\n return [];\n }\n append(..._nodes) { }\n appendChild(node) {\n return node;\n }\n}\n/** Server-safe base class: HTMLElement in browser, SSR mock on server. */\nexport const HTMLElementBase = globalThis.HTMLElement ??\n SsrHTMLElement;\n//# sourceMappingURL=html.util.js.map",
|
|
7
7
|
"/**\n * Router Slot Element\n *\n * <router-slot> is where page content is rendered.\n * Supports nested routes via parent page containing slot.\n *\n * Usage:\n * ```html\n * <router-slot></router-slot>\n * ```\n *\n * For nested routes, parent page includes:\n * ```typescript\n * export default function render() {\n * return `\n * <header>...</header>\n * <main>\n * <router-slot></router-slot>\n * </main>\n * `;\n * }\n * ```\n */\nimport { HTMLElementBase } from \"../util/html.util.js\";\n/**\n * Router slot web component.\n * Serves as the mounting point for page content.\n */\nexport class RouterSlot extends HTMLElementBase {\n}\n//# sourceMappingURL=slot.element.js.map",
|
|
8
8
|
"/**\n * Markdown Element — <mark-down> custom element.\n *\n * Renders markdown content with pluggable renderer.\n * Supports:\n * - Inline content: <mark-down># Title</mark-down>\n * - Source attribute: <mark-down src=\"/path/to.md\"></mark-down>\n */\nimport { HTMLElementBase } from \"../util/html.util.js\";\nimport { escapeHtml } from \"../../core/util/html.util.js\";\nexport class MarkdownElement extends HTMLElementBase {\n static renderer = null;\n static rendererInitPromise = null;\n abortController = null;\n /**\n * Set the markdown renderer.\n * Must be called before any <mark-down> elements are connected.\n *\n * @example\n * ```ts\n * import { createEmkoRenderer } from './emko.renderer.ts';\n * MarkdownElement.setRenderer(await createEmkoRenderer());\n * ```\n */\n static setRenderer(renderer) {\n MarkdownElement.renderer = renderer;\n MarkdownElement.rendererInitPromise = renderer.init ? renderer.init() : null;\n }\n /** Get the current renderer (if set). Used by bootEmrouteApp to pass through to Emroute.create(). */\n static getConfiguredRenderer() {\n return MarkdownElement.renderer;\n }\n /**\n * Get the current renderer, waiting for init if needed.\n */\n static async getRenderer() {\n const renderer = MarkdownElement.renderer;\n if (!renderer) {\n throw new Error('No markdown renderer configured. Call MarkdownElement.setRenderer() before using <mark-down> elements.');\n }\n if (MarkdownElement.rendererInitPromise) {\n await MarkdownElement.rendererInitPromise;\n }\n return renderer;\n }\n async connectedCallback() {\n this.abortController = new AbortController();\n await this.loadContent();\n }\n disconnectedCallback() {\n this.abortController?.abort();\n this.abortController = null;\n }\n async loadContent() {\n const src = this.getAttribute('src');\n const inlineContent = this.textContent?.trim();\n if (src) {\n await this.loadFromSrc(src);\n }\n else if (inlineContent) {\n await this.renderContent(inlineContent);\n }\n else {\n this.innerHTML = '';\n }\n }\n async loadFromSrc(src) {\n const signal = this.abortController?.signal;\n try {\n const response = await fetch(src, signal ? { signal } : {});\n if (!response.ok) {\n throw new Error(`Failed to fetch ${src}: ${response.status}`);\n }\n const markdown = await response.text();\n await this.renderContent(markdown);\n }\n catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n return;\n }\n this.showError(error);\n }\n }\n async renderContent(markdown) {\n try {\n const renderer = await MarkdownElement.getRenderer();\n this.innerHTML = renderer.render(markdown);\n }\n catch (error) {\n this.showError(error);\n }\n }\n showError(error) {\n const message = error instanceof Error ? error.message : String(error);\n this.innerHTML = `<div>Markdown Error: ${escapeHtml(message)}</div>`;\n }\n}\n//# sourceMappingURL=markdown.element.js.map",
|
|
9
|
-
"/**\n * Widget Element - Browser Custom Element\n *\n * Renders Widget instances in the browser as `widget-{name}` elements.\n * Handles:\n * - SSR hydration (ssr attribute)\n * - Client-side data fetching with AbortSignal\n * - Companion file loading (html, md, css)\n * - Loading/error states\n */\nimport { HTMLElementBase } from \"../util/html.util.js\";\nimport { LAZY_ATTR, SSR_ATTR } from \"../../core/util/html.util.js\";\n/** Strip keys with undefined values — returns the filtered object, or undefined if all values are undefined. */\nfunction filterUndefined(obj) {\n const result = {};\n let hasValue = false;\n for (const [k, v] of Object.entries(obj)) {\n if (v !== undefined) {\n result[k] = v;\n hasValue = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hasValue ? result : undefined;\n}\n/**\n * Custom element that renders a Component in the browser.\n */\nexport class ComponentElement extends HTMLElementBase {\n /** Lazy module loaders keyed by tag name — set by registerLazy(). */\n static lazyLoaders = new Map();\n /** App-level context provider set once during router initialization. */\n static extendContext;\n /**\n * Register (or clear) the context provider that enriches every widget's ComponentContext.\n * @deprecated Use `bootEmrouteApp({ extendContext })` instead — it wires both pages and widgets.\n */\n static setContextProvider(provider) {\n ComponentElement.extendContext = provider;\n }\n component;\n effectiveFiles;\n params = null;\n data = null;\n context;\n state = 'idle';\n errorMessage = '';\n deferred = null;\n abortController = null;\n intersectionObserver = null;\n /** Promise that resolves with fetched data (available after loadData starts) */\n dataPromise = null;\n constructor(component, files) {\n super();\n this.component = component;\n this.effectiveFiles = files;\n // Attach shadow root if not already present (Declarative Shadow DOM creates it from <template shadowrootmode=\"open\">)\n // This enables progressive enhancement: SSR with DSD works without JS, then hydrates when JS loads\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n /**\n * Register a widget as a custom element: `widget-{name}`.\n * Creates a fresh widget instance per DOM element (per-element state).\n * Optional `files` parameter provides discovered file paths without mutating\n * the component instance.\n */\n static register(component, files) {\n const tagName = `widget-${component.name}`;\n if (!globalThis.customElements || customElements.get(tagName)) {\n return;\n }\n const WidgetClass = component.constructor;\n const BoundElement = class extends ComponentElement {\n constructor() {\n super(new WidgetClass(), files);\n }\n };\n customElements.define(tagName, BoundElement);\n }\n /**\n * Register a widget class (not instance) as a custom element: `widget-{name}`.\n * Used for manifest-based registration where classes are loaded dynamically.\n */\n static registerClass(WidgetClass, name, files) {\n const tagName = `widget-${name}`;\n if (!globalThis.customElements || customElements.get(tagName)) {\n return;\n }\n const BoundElement = class extends ComponentElement {\n constructor() {\n super(new WidgetClass(), files);\n }\n };\n customElements.define(tagName, BoundElement);\n }\n /**\n * Register a widget lazily: define the custom element immediately (so SSR\n * content via Declarative Shadow DOM is adopted), but defer loading the\n * module until connectedCallback fires. Once loaded, the real component\n * replaces the placeholder and hydration proceeds normally.\n */\n static registerLazy(name, loader) {\n const tagName = `widget-${name}`;\n if (!globalThis.customElements || customElements.get(tagName))\n return;\n ComponentElement.lazyLoaders.set(tagName, loader);\n // Placeholder component — replaced by the real one once the module loads.\n // Cast needed because Component is abstract; the real module replaces this.\n const placeholder = {\n name,\n getData: () => Promise.resolve(null),\n renderHTML: () => '',\n renderMarkdown: () => '',\n renderError: () => '',\n renderMarkdownError: () => '',\n };\n const BoundElement = class extends ComponentElement {\n constructor() {\n super(placeholder);\n }\n };\n customElements.define(tagName, BoundElement);\n }\n /**\n * Promise that resolves when component is ready (data loaded and rendered).\n * Used by router to wait for async components.\n */\n get ready() {\n if (this.state === 'ready') {\n return Promise.resolve();\n }\n this.deferred ??= Promise.withResolvers();\n return this.deferred.promise;\n }\n async connectedCallback() {\n // Lazy module loading — resolve actual component before proceeding\n const tagName = this.tagName.toLowerCase();\n const lazyLoader = ComponentElement.lazyLoaders.get(tagName);\n if (lazyLoader) {\n try {\n const mod = await lazyLoader();\n if (mod.__files && typeof mod.__files === 'object') {\n this.effectiveFiles = mod.__files;\n }\n for (const exp of Object.values(mod)) {\n if (exp && typeof exp === 'object' && 'getData' in exp) {\n const WidgetClass = exp.constructor;\n this.component = new WidgetClass();\n break;\n }\n if (typeof exp === 'function' && exp.prototype?.getData) {\n this.component = new exp();\n break;\n }\n }\n }\n catch {\n // Module failed to load (e.g. raw .ts served without transpilation).\n // SSR content is already visible — skip hydration gracefully.\n if (this.hasAttribute(SSR_ATTR)) {\n this.removeAttribute(SSR_ATTR);\n this.signalReady();\n return;\n }\n }\n }\n this.component.element = this;\n this.style.contentVisibility = 'auto';\n this.abortController = new AbortController();\n const signal = this.abortController.signal;\n // Parse params from element attributes\n const params = {};\n for (const attr of this.attributes) {\n if (attr.name === SSR_ATTR || attr.name === LAZY_ATTR)\n continue;\n const key = attr.name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n try {\n params[key] = JSON.parse(attr.value);\n }\n catch {\n params[key] = attr.value;\n }\n }\n this.params = params;\n // Validate params\n if (this.component.validateParams && this.params !== null) {\n const error = this.component.validateParams(this.params);\n if (error) {\n this.setError(error);\n return;\n }\n }\n // Load companion files (html, md, css) if declared\n const files = await this.loadFiles();\n if (signal.aborted)\n return;\n const currentUrl = globalThis.location ? new URL(location.href) : new URL('http://localhost/');\n const filteredFiles = filterUndefined(files);\n const base = {\n url: currentUrl,\n pathname: currentUrl.pathname,\n searchParams: currentUrl.searchParams,\n params: this.params ?? {},\n ...(filteredFiles ? { files: filteredFiles } : {}),\n };\n this.context = ComponentElement.extendContext ? ComponentElement.extendContext(base) : base;\n // Hydrate from SSR: adopt content from Declarative Shadow DOM\n if (this.hasAttribute(SSR_ATTR)) {\n this.removeAttribute(SSR_ATTR);\n // Read SSR data from light DOM (JSON text placed alongside shadow root)\n const lightText = this.textContent?.trim();\n if (lightText) {\n try {\n this.data = JSON.parse(lightText);\n }\n catch {\n // Not valid JSON — proceed with data: null\n }\n }\n // Clear light DOM content (JSON text)\n this.textContent = '';\n this.state = 'ready';\n // Call hydrate() hook to attach event listeners\n if (this.component.hydrate) {\n const args = { data: this.data, params: this.params, context: this.context };\n queueMicrotask(() => {\n this.component.hydrate(args);\n });\n }\n this.signalReady();\n return;\n }\n // Lazy: defer loadData until element is visible\n if (this.hasAttribute(LAZY_ATTR)) {\n this.intersectionObserver = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n this.loadData();\n }\n });\n this.intersectionObserver.observe(this);\n return;\n }\n await this.loadData();\n }\n disconnectedCallback() {\n this.component.destroy?.();\n this.component.element = undefined;\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n this.abortController?.abort();\n this.abortController = null;\n this.state = 'idle';\n this.data = null;\n this.context = undefined;\n this.dataPromise = null;\n this.errorMessage = '';\n this.signalReady();\n this.deferred = null;\n }\n /**\n * Reload component data. Aborts any in-flight request first.\n */\n async reload() {\n if (this.params === null)\n return;\n // Abort previous and create fresh controller\n this.abortController?.abort();\n this.abortController = new AbortController();\n await this.loadData();\n }\n /**\n * Get companion files for this widget instance.\n * Returns inlined content from __files (set during lazy module load) directly.\n */\n async loadFiles() {\n return this.effectiveFiles ?? {};\n }\n async loadData() {\n if (this.params === null)\n return;\n const signal = this.abortController?.signal;\n this.state = 'loading';\n this.render();\n try {\n const promise = this.component.getData({\n params: this.params,\n ...(signal ? { signal } : {}),\n context: this.context,\n });\n this.dataPromise = promise;\n this.data = await promise;\n // Check abort after await — don't touch DOM if disconnected\n if (signal?.aborted)\n return;\n this.state = 'ready';\n }\n catch (e) {\n if (e instanceof DOMException && e.name === 'AbortError')\n return;\n if (signal?.aborted)\n return;\n this.setError(e instanceof Error ? e.message : String(e));\n return;\n }\n this.render();\n this.signalReady();\n }\n setError(message) {\n this.state = 'error';\n this.errorMessage = message;\n this.render();\n this.signalReady(); // Ready even on error (completed loading)\n }\n signalReady() {\n this.deferred?.resolve();\n this.deferred = null;\n }\n render() {\n if (this.params === null) {\n this.shadowRoot.setHTMLUnsafe('');\n return;\n }\n if (this.state === 'error') {\n this.shadowRoot.setHTMLUnsafe(this.component.renderError({\n error: new Error(this.errorMessage),\n params: this.params,\n }));\n return;\n }\n this.shadowRoot.setHTMLUnsafe(this.component.renderHTML({\n data: this.state === 'ready' ? this.data : null,\n params: this.params,\n context: this.context,\n }));\n // Call hydrate() after rendering to attach event listeners\n if (this.state === 'ready' && this.component.hydrate) {\n const args = { data: this.data, params: this.params, context: this.context };\n queueMicrotask(() => {\n this.component.hydrate(args);\n });\n }\n }\n}\n//# sourceMappingURL=component.element.js.map",
|
|
9
|
+
"/**\n * Widget Element - Browser Custom Element\n *\n * Renders Widget instances in the browser as `widget-{name}` elements.\n * Handles:\n * - SSR hydration (ssr attribute)\n * - Client-side data fetching with AbortSignal\n * - Companion file loading (html, md, css)\n * - Loading/error states\n */\nimport { HTMLElementBase } from \"../util/html.util.js\";\nimport { LAZY_ATTR, RESERVED_ATTRS, SSR_ATTR } from \"../../core/util/html.util.js\";\n/** Strip keys with undefined values — returns the filtered object, or undefined if all values are undefined. */\nfunction filterUndefined(obj) {\n const result = {};\n let hasValue = false;\n for (const [k, v] of Object.entries(obj)) {\n if (v !== undefined) {\n result[k] = v;\n hasValue = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hasValue ? result : undefined;\n}\n/**\n * Custom element that renders a Component in the browser.\n */\nexport class ComponentElement extends HTMLElementBase {\n /** Lazy module loaders keyed by tag name — set by registerLazy(). */\n static lazyLoaders = new Map();\n /** App-level context provider set once during router initialization. */\n static extendContext;\n /**\n * Register (or clear) the context provider that enriches every widget's ComponentContext.\n * @deprecated Use `bootEmrouteApp({ extendContext })` instead — it wires both pages and widgets.\n */\n static setContextProvider(provider) {\n ComponentElement.extendContext = provider;\n }\n component;\n effectiveFiles;\n params = null;\n data = null;\n context;\n state = 'idle';\n errorMessage = '';\n deferred = null;\n abortController = null;\n intersectionObserver = null;\n /** Promise that resolves with fetched data (available after loadData starts) */\n dataPromise = null;\n constructor(component, files) {\n super();\n this.component = component;\n this.effectiveFiles = files;\n // Attach shadow root if not already present (Declarative Shadow DOM creates it from <template shadowrootmode=\"open\">)\n // This enables progressive enhancement: SSR with DSD works without JS, then hydrates when JS loads\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n /**\n * Register a widget as a custom element: `widget-{name}`.\n * Creates a fresh widget instance per DOM element (per-element state).\n * Optional `files` parameter provides discovered file paths without mutating\n * the component instance.\n */\n static register(component, files) {\n const tagName = `widget-${component.name}`;\n if (!globalThis.customElements || customElements.get(tagName)) {\n return;\n }\n const WidgetClass = component.constructor;\n const BoundElement = class extends ComponentElement {\n constructor() {\n super(new WidgetClass(), files);\n }\n };\n customElements.define(tagName, BoundElement);\n }\n /**\n * Register a widget class (not instance) as a custom element: `widget-{name}`.\n * Used for manifest-based registration where classes are loaded dynamically.\n */\n static registerClass(WidgetClass, name, files) {\n const tagName = `widget-${name}`;\n if (!globalThis.customElements || customElements.get(tagName)) {\n return;\n }\n const BoundElement = class extends ComponentElement {\n constructor() {\n super(new WidgetClass(), files);\n }\n };\n customElements.define(tagName, BoundElement);\n }\n /**\n * Register a widget lazily: define the custom element immediately (so SSR\n * content via Declarative Shadow DOM is adopted), but defer loading the\n * module until connectedCallback fires. Once loaded, the real component\n * replaces the placeholder and hydration proceeds normally.\n */\n static registerLazy(name, loader) {\n const tagName = `widget-${name}`;\n if (!globalThis.customElements || customElements.get(tagName))\n return;\n ComponentElement.lazyLoaders.set(tagName, loader);\n // Placeholder component — replaced by the real one once the module loads.\n // Cast needed because Component is abstract; the real module replaces this.\n const placeholder = {\n name,\n getData: () => Promise.resolve(null),\n renderHTML: () => '',\n renderMarkdown: () => '',\n renderError: () => '',\n renderMarkdownError: () => '',\n };\n const BoundElement = class extends ComponentElement {\n constructor() {\n super(placeholder);\n }\n };\n customElements.define(tagName, BoundElement);\n }\n /**\n * Promise that resolves when component is ready (data loaded and rendered).\n * Used by router to wait for async components.\n */\n get ready() {\n if (this.state === 'ready') {\n return Promise.resolve();\n }\n this.deferred ??= Promise.withResolvers();\n return this.deferred.promise;\n }\n async connectedCallback() {\n // Lazy module loading — resolve actual component before proceeding\n const tagName = this.tagName.toLowerCase();\n const lazyLoader = ComponentElement.lazyLoaders.get(tagName);\n if (lazyLoader) {\n try {\n const mod = await lazyLoader();\n if (mod.__files && typeof mod.__files === 'object') {\n this.effectiveFiles = mod.__files;\n }\n for (const exp of Object.values(mod)) {\n if (exp && typeof exp === 'object' && 'getData' in exp) {\n const WidgetClass = exp.constructor;\n this.component = new WidgetClass();\n break;\n }\n if (typeof exp === 'function' && exp.prototype?.getData) {\n this.component = new exp();\n break;\n }\n }\n }\n catch {\n // Module failed to load (e.g. raw .ts served without transpilation).\n // SSR content is already visible — skip hydration gracefully.\n if (this.hasAttribute(SSR_ATTR)) {\n this.removeAttribute(SSR_ATTR);\n this.signalReady();\n return;\n }\n }\n }\n this.component.element = this;\n this.style.contentVisibility = 'auto';\n this.abortController = new AbortController();\n const signal = this.abortController.signal;\n // Parse params from element attributes\n const params = {};\n for (const attr of this.attributes) {\n if (RESERVED_ATTRS.has(attr.name))\n continue;\n const key = attr.name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n try {\n params[key] = JSON.parse(attr.value);\n }\n catch {\n params[key] = attr.value;\n }\n }\n this.params = params;\n // Validate params\n if (this.component.validateParams && this.params !== null) {\n const error = this.component.validateParams(this.params);\n if (error) {\n this.setError(error);\n return;\n }\n }\n // Load companion files (html, md, css) if declared\n const files = await this.loadFiles();\n if (signal.aborted)\n return;\n const currentUrl = globalThis.location ? new URL(location.href) : new URL('http://localhost/');\n const filteredFiles = filterUndefined(files);\n const base = {\n url: currentUrl,\n pathname: currentUrl.pathname,\n searchParams: currentUrl.searchParams,\n params: this.params ?? {},\n ...(filteredFiles ? { files: filteredFiles } : {}),\n };\n this.context = ComponentElement.extendContext ? ComponentElement.extendContext(base) : base;\n // Hydrate from SSR: adopt content from Declarative Shadow DOM\n if (this.hasAttribute(SSR_ATTR)) {\n this.removeAttribute(SSR_ATTR);\n // Read SSR data from light DOM (JSON text placed alongside shadow root)\n const lightText = this.textContent?.trim();\n if (lightText) {\n try {\n this.data = JSON.parse(lightText);\n }\n catch {\n // Not valid JSON — proceed with data: null\n }\n }\n // Clear light DOM content (JSON text)\n this.textContent = '';\n this.state = 'ready';\n // Call hydrate() hook to attach event listeners\n if (this.component.hydrate) {\n const args = { data: this.data, params: this.params, context: this.context };\n queueMicrotask(() => {\n this.component.hydrate(args);\n });\n }\n this.signalReady();\n return;\n }\n // Lazy: defer loadData until element is visible\n if (this.hasAttribute(LAZY_ATTR)) {\n this.intersectionObserver = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n this.loadData();\n }\n });\n this.intersectionObserver.observe(this);\n return;\n }\n await this.loadData();\n }\n disconnectedCallback() {\n this.component.destroy?.();\n this.component.element = undefined;\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n this.abortController?.abort();\n this.abortController = null;\n this.state = 'idle';\n this.data = null;\n this.context = undefined;\n this.dataPromise = null;\n this.errorMessage = '';\n this.signalReady();\n this.deferred = null;\n }\n /**\n * Reload component data. Aborts any in-flight request first.\n */\n async reload() {\n if (this.params === null)\n return;\n // Abort previous and create fresh controller\n this.abortController?.abort();\n this.abortController = new AbortController();\n await this.loadData();\n }\n /**\n * Get companion files for this widget instance.\n * Returns inlined content from __files (set during lazy module load) directly.\n */\n async loadFiles() {\n return this.effectiveFiles ?? {};\n }\n async loadData() {\n if (this.params === null)\n return;\n const signal = this.abortController?.signal;\n this.state = 'loading';\n this.render();\n try {\n const promise = this.component.getData({\n params: this.params,\n ...(signal ? { signal } : {}),\n context: this.context,\n });\n this.dataPromise = promise;\n this.data = await promise;\n // Check abort after await — don't touch DOM if disconnected\n if (signal?.aborted)\n return;\n this.state = 'ready';\n }\n catch (e) {\n if (e instanceof DOMException && e.name === 'AbortError')\n return;\n if (signal?.aborted)\n return;\n this.setError(e instanceof Error ? e.message : String(e));\n return;\n }\n this.render();\n this.signalReady();\n }\n setError(message) {\n this.state = 'error';\n this.errorMessage = message;\n this.render();\n this.signalReady(); // Ready even on error (completed loading)\n }\n signalReady() {\n this.deferred?.resolve();\n this.deferred = null;\n }\n render() {\n if (this.params === null) {\n this.shadowRoot.setHTMLUnsafe('');\n return;\n }\n if (this.state === 'error') {\n this.shadowRoot.setHTMLUnsafe(this.component.renderError({\n error: new Error(this.errorMessage),\n params: this.params,\n }));\n return;\n }\n this.shadowRoot.setHTMLUnsafe(this.component.renderHTML({\n data: this.state === 'ready' ? this.data : null,\n params: this.params,\n context: this.context,\n }));\n // Call hydrate() after rendering to attach event listeners\n if (this.state === 'ready' && this.component.hydrate) {\n const args = { data: this.data, params: this.params, context: this.context };\n queueMicrotask(() => {\n this.component.hydrate(args);\n });\n }\n }\n}\n//# sourceMappingURL=component.element.js.map",
|
|
10
10
|
"/**\n * Route Trie\n *\n * Default RouteResolver implementation. O(depth) route matching over\n * the RouteNode tree.\n *\n * Walks the RouteNode tree directly — no conversion step, no internal state\n * beyond the tree reference. Each URL segment is matched in order:\n * static → dynamic (:param) → wildcard (:rest*). Backtracking handles\n * cases where a dynamic path leads to a dead end but a wildcard at an\n * ancestor would match.\n *\n * Static segment matching is case-sensitive, per RFC 3986.\n */\n/**\n * Default RouteResolver implementation.\n * Walks the RouteNode tree directly — no conversion, no Maps.\n */\nexport class RouteTrie {\n tree;\n constructor(tree) {\n this.tree = tree;\n }\n match(pathname) {\n pathname = this.normalizePath(pathname);\n if (pathname === '/') {\n if (this.tree.files || this.tree.redirect) {\n return { node: this.tree, pattern: '/', params: {} };\n }\n return undefined;\n }\n return this.walk(this.tree, this.splitSegments(pathname), 0, {}, '/');\n }\n findErrorBoundary(pathname) {\n pathname = this.normalizePath(pathname);\n if (pathname === '/')\n return this.tree.errorBoundary;\n return this.walkForBoundary(this.tree, this.splitSegments(pathname), 0, this.tree.errorBoundary);\n }\n findRoute(pattern) {\n if (pattern === '/') {\n return (this.tree.files || this.tree.redirect) ? this.tree : undefined;\n }\n const segments = this.splitSegments(pattern);\n let node = this.tree;\n for (const segment of segments) {\n let child;\n if (segment.startsWith(':') && segment.endsWith('*')) {\n child = node.wildcard?.child;\n }\n else if (segment.startsWith(':')) {\n child = node.dynamic?.child;\n }\n else {\n child = node.children?.[segment];\n }\n if (!child)\n return undefined;\n node = child;\n }\n return (node.files || node.redirect) ? node : undefined;\n }\n // ── Private helpers ─────────────────────────────────────────────────\n safeDecode(segment) {\n try {\n return decodeURIComponent(segment);\n }\n catch {\n return segment;\n }\n }\n splitSegments(pathname) {\n return pathname.substring(1).split('/');\n }\n normalizePath(pathname) {\n if (pathname.length > 1 && pathname.endsWith('/')) {\n pathname = pathname.slice(0, -1);\n }\n if (!pathname.startsWith('/')) {\n pathname = '/' + pathname;\n }\n return pathname;\n }\n walk(node, segments, index, params, pattern) {\n if (index === segments.length) {\n if (node.files || node.redirect) {\n return { node, pattern, params: { ...params } };\n }\n if (node.wildcard && (node.wildcard.child.files || node.wildcard.child.redirect)) {\n const wp = pattern === '/' ? `/:${node.wildcard.param}*` : `${pattern}/:${node.wildcard.param}*`;\n return {\n node: node.wildcard.child,\n pattern: wp,\n params: { ...params, [node.wildcard.param]: '' },\n };\n }\n return undefined;\n }\n const segment = segments[index];\n // Static\n const staticChild = node.children?.[segment];\n if (staticChild) {\n const childPattern = pattern === '/' ? `/${segment}` : `${pattern}/${segment}`;\n const result = this.walk(staticChild, segments, index + 1, params, childPattern);\n if (result)\n return result;\n }\n // Dynamic\n if (node.dynamic) {\n const { param, child } = node.dynamic;\n params[param] = this.safeDecode(segment);\n const childPattern = pattern === '/' ? `/:${param}` : `${pattern}/:${param}`;\n const result = this.walk(child, segments, index + 1, params, childPattern);\n if (result)\n return result;\n delete params[param];\n }\n // Wildcard\n if (node.wildcard && (node.wildcard.child.files || node.wildcard.child.redirect)) {\n const { param, child } = node.wildcard;\n let rest = this.safeDecode(segment);\n for (let i = index + 1; i < segments.length; i++) {\n rest += '/' + this.safeDecode(segments[i]);\n }\n const wp = pattern === '/' ? `/:${param}*` : `${pattern}/:${param}*`;\n return {\n node: child,\n pattern: wp,\n params: { ...params, [param]: rest },\n };\n }\n return undefined;\n }\n walkForBoundary(node, segments, index, deepest) {\n if (index === segments.length) {\n return node.errorBoundary ?? deepest;\n }\n const segment = segments[index];\n const staticChild = node.children?.[segment];\n if (staticChild) {\n return this.walkForBoundary(staticChild, segments, index + 1, staticChild.errorBoundary ?? deepest);\n }\n if (node.dynamic) {\n return this.walkForBoundary(node.dynamic.child, segments, index + 1, node.dynamic.child.errorBoundary ?? deepest);\n }\n if (node.wildcard) {\n return node.wildcard.child.errorBoundary ?? deepest;\n }\n return deepest;\n }\n}\n//# sourceMappingURL=route.trie.js.map",
|
|
11
11
|
"/**\n * Abstract Runtime\n *\n * Storage contract. Speaks Request/Response.\n * Concrete implementations decide how to store, cache, scan, and serve.\n *\n * Three access patterns:\n * - handle() — raw passthrough\n * - query() — read (Response or string)\n * - command() — write/delete\n */\n/** Well-known manifest paths (convention between Runtime and consumers). */\nexport const ROUTES_MANIFEST_PATH = '/routes.manifest.json';\nexport const WIDGETS_MANIFEST_PATH = '/widgets.manifest.json';\nexport const ELEMENTS_MANIFEST_PATH = '/elements.manifest.json';\nexport class Runtime {\n /** Dynamically import a module from storage. */\n loadModule(_path) {\n throw new Error(`loadModule not implemented for ${this.constructor.name}`);\n }\n /** Transpile TypeScript to JavaScript. */\n transpile(_source) {\n throw new Error(`transpile not implemented for ${this.constructor.name}`);\n }\n}\n//# sourceMappingURL=abstract.runtime.js.map",
|
|
12
12
|
"const noop = () => { };\n/** Default no-op logger. */\nexport const defaultLogger = { error: noop, warn: noop };\n/** @deprecated Pass `logger` in Emroute.create() config instead. This function is a no-op. */\nexport function setLogger(_logger) {\n console.warn('[emroute] setLogger() is deprecated. Pass `logger` in Emroute.create() config instead.');\n}\n//# sourceMappingURL=logger.type.js.map",
|
|
13
|
-
"/**\n * Pipeline\n *\n * Orchestration layer between Router, Runtime, and Component.\n *\n * Owns:\n * - Route matching (reads manifest from Runtime, walks RouteNode tree)\n * - Module loading (delegates to Runtime)\n * - Companion file reading (delegates to Runtime)\n * - ComponentContext building\n * - Route hierarchy construction\n *\n * Does NOT own:\n * - Rendering (that's Renderer)\n * - HTTP routing / base paths (that's Server)\n * - Storage I/O (that's Runtime)\n * - Navigation events (that's the browser adapter)\n */\nimport { RouteTrie } from \"../router/route.trie.js\";\nimport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH } from \"../runtime/abstract.runtime.js\";\nimport { defaultLogger } from \"../type/logger.type.js\";\n/** Default root route — renders a slot for child routes. */\nexport const DEFAULT_ROOT_ROUTE = {\n pattern: '/',\n type: 'page',\n modulePath: '__default_root__',\n};\n/** Synthesize a RouteConfig from matched route data. */\nfunction toRouteConfig(node, pattern) {\n return {\n pattern,\n type: node.redirect ? 'redirect' : 'page',\n modulePath: node.redirect ?? node.files?.ts ?? node.files?.js ?? node.files?.html ?? node.files?.md ?? '',\n ...(node.files ? { files: node.files } : {}),\n };\n}\nexport class Pipeline {\n runtime;\n contextProvider;\n logger;\n moduleLoaders;\n constructor(options) {\n this.runtime = options.runtime;\n this.contextProvider = options.contextProvider;\n this.logger = options.logger ?? defaultLogger;\n this.moduleLoaders = options.moduleLoaders ?? {};\n }\n // ── Route resolver (from Runtime) ───────────────────────────────────\n async getResolver() {\n const response = await this.runtime.query(ROUTES_MANIFEST_PATH);\n const tree = response.status === 404 ? {} : await response.json();\n return new RouteTrie(tree);\n }\n // ── Matching ────────────────────────────────────────────────────────\n async match(url) {\n const resolver = await this.getResolver();\n const resolved = resolver.match(url.pathname);\n if (resolved) {\n return { route: toRouteConfig(resolved.node, resolved.pattern), params: resolved.params };\n }\n if (url.pathname === '/' || url.pathname === '') {\n return { route: DEFAULT_ROOT_ROUTE, params: {} };\n }\n return undefined;\n }\n async findRoute(pattern) {\n const resolver = await this.getResolver();\n const node = resolver.findRoute(pattern);\n if (!node)\n return undefined;\n return toRouteConfig(node, pattern);\n }\n async findErrorBoundary(pathname) {\n const resolver = await this.getResolver();\n const modulePath = resolver.findErrorBoundary(pathname);\n if (!modulePath)\n return undefined;\n return { pattern: pathname, modulePath };\n }\n async getStatusPage(status) {\n const resolver = await this.getResolver();\n const node = resolver.findRoute(`/${status}`);\n if (!node)\n return undefined;\n return toRouteConfig(node, `/${status}`);\n }\n async getErrorHandler() {\n const resolver = await this.getResolver();\n const modulePath = resolver.findErrorBoundary('/');\n if (!modulePath)\n return undefined;\n return { pattern: '/', type: 'error', modulePath };\n }\n // ── Route hierarchy ────────────────────────────────────────────────\n buildRouteHierarchy(pattern) {\n if (pattern === '/')\n return ['/'];\n const segments = pattern.split('/').filter(Boolean);\n const hierarchy = ['/'];\n let current = '';\n for (const segment of segments) {\n current += '/' + segment;\n hierarchy.push(current);\n }\n return hierarchy;\n }\n // ── Widget manifest lookup ─────────────────────────────────────────\n async findWidgetModulePath(name) {\n const response = await this.runtime.query(WIDGETS_MANIFEST_PATH);\n if (response.status === 404)\n return undefined;\n const entries = await response.json();\n return entries.find((e) => e.name === name)?.modulePath;\n }\n // ── Module loading ─────────────────────────────────────────────────\n async loadModule(modulePath) {\n const loader = this.moduleLoaders[modulePath];\n if (loader) {\n return await loader();\n }\n const abs = modulePath.startsWith('/') ? modulePath : '/' + modulePath;\n return await this.runtime.loadModule(abs);\n }\n /**\n * Get inlined `__files` from a loaded module (merged module pattern).\n */\n getModuleFiles(mod) {\n if (!mod || typeof mod !== 'object')\n return undefined;\n const files = mod.__files;\n if (!files || typeof files !== 'object')\n return undefined;\n return files;\n }\n // ── File loading ───────────────────────────────────────────────────\n async loadFiles(files) {\n const load = async (path) => {\n const abs = path.startsWith('/') ? path : '/' + path;\n try {\n return await this.runtime.query(abs, { as: 'text' });\n }\n catch (e) {\n console.warn(`[Pipeline] Failed to load file ${path}:`, e instanceof Error ? e.message : e);\n return undefined;\n }\n };\n const [html, md, css] = await Promise.all([\n files.html ? load(files.html) : undefined,\n files.md ? load(files.md) : undefined,\n files.css ? load(files.css) : undefined,\n ]);\n const result = {};\n if (html !== undefined)\n result.html = html;\n if (md !== undefined)\n result.md = md;\n if (css !== undefined)\n result.css = css;\n return result;\n }\n // ── Context building ───────────────────────────────────────────────\n toRouteInfo(matched, url) {\n return { url, params: matched.params };\n }\n async buildContext(routeInfo, route, signal, isLeaf, loadedModule) {\n const rf = route.files;\n // Try inlined __files from merged module first\n const inlined = loadedModule ? this.getModuleFiles(loadedModule) : undefined;\n let files;\n if (inlined) {\n files = inlined;\n }\n else if (rf) {\n const filePaths = {};\n if (rf.html)\n filePaths.html = rf.html;\n if (rf.md)\n filePaths.md = rf.md;\n if (rf.css)\n filePaths.css = rf.css;\n files = await this.loadFiles(filePaths);\n }\n else {\n files = {};\n }\n const base = {\n ...routeInfo,\n pathname: routeInfo.url.pathname,\n searchParams: routeInfo.url.searchParams,\n files,\n ...(signal ? { signal } : {}),\n ...(isLeaf !== undefined ? { isLeaf } : {}),\n };\n return this.contextProvider ? this.contextProvider(base) : base;\n }\n}\n//# sourceMappingURL=pipeline.js.map",
|
|
14
|
-
"/**\n * Widget Resolve Utilities\n *\n * Server-side resolution of <widget-*> tags in HTML.\n * Calls getData() + renderHTML() on widgets and injects SSR hydration data.\n */\nimport { defaultLogger } from \"../type/logger.type.js\";\nimport {
|
|
15
|
-
"/**\n * Component Base Class\n *\n * Everything is a Component: pages and widgets.\n * Components render differently based on context:\n * - /md/* → Markdown (LLMs, text clients)\n * - /html/* → Pre-rendered HTML (SSR)\n * - SPA → Hydrated custom elements\n */\nimport { escapeHtml } from \"../util/html.util.js\";\nexport class Component {\n /** Host element reference, set by ComponentElement in the browser. */\n element;\n /** Associated file paths for pre-loaded content (html, md, css). */\n files;\n /**\n * When true, SSR serializes the getData() result into the element's\n * light DOM so the client can access it immediately in hydrate()\n * without re-fetching.\n */\n exposeSsrData;\n renderHTML(args) {\n if (args.data === null) {\n return `<div data-component=\"${this.name}\">Loading...</div>`;\n }\n const markdown = this.renderMarkdown({\n data: args.data,\n params: args.params,\n context: args.context,\n });\n return `<div data-component=\"${this.name}\" data-markdown>${escapeHtml(markdown)}</div>`;\n }\n experimentalUseTemplate(sourceOrId, id) {\n // DOM path: single arg = template id, find in shadow DOM\n if (id === undefined) {\n const templateId = sourceOrId;\n const shadowRoot = this.element?.shadowRoot;\n const template = shadowRoot?.querySelector(`template#${templateId}`);\n if (!template) {\n throw new Error(`[${this.name}] Template \"#${templateId}\" not found in shadow DOM. ` +\n 'Ensure the <template> element exists in the companion HTML.');\n }\n return (slots) => {\n const clone = template.content.cloneNode(true);\n if (!slots)\n return clone;\n for (const [name, content] of Object.entries(slots)) {\n const selector = name === 'default' ? 'slot:not([name])' : `slot[name=\"${name}\"]`;\n const slot = clone.querySelector(selector);\n if (!slot)\n continue;\n const temp = document.createElement('template');\n temp.innerHTML = content;\n slot.replaceWith(temp.content);\n }\n return clone;\n };\n }\n const source = sourceOrId;\n // Markdown path: ```template:id ... ```\n const mdPattern = new RegExp('```template:' + id + '\\\\n([\\\\s\\\\S]*?)```');\n const mdMatch = source.match(mdPattern);\n if (mdMatch) {\n const skeleton = mdMatch[1];\n return (slots) => {\n if (!slots)\n return skeleton;\n let result = skeleton;\n for (const [name, content] of Object.entries(slots)) {\n result = result.replaceAll(`slot:${name}`, content);\n }\n return result;\n };\n }\n // HTML path: <template id=\"...\">...</template>\n const htmlPattern = new RegExp(`<template\\\\s+id=[\"']${id}[\"'][^>]*>([\\\\s\\\\S]*?)</template>`);\n const htmlMatch = source.match(htmlPattern);\n if (!htmlMatch) {\n throw new Error(`[${this.name}] Template \"${id}\" not found in source. ` +\n 'Expected <template id=\"' + id + '\"> in HTML or ```template:' + id + ' in markdown.');\n }\n const skeleton = htmlMatch[1];\n return (slots) => {\n if (!slots)\n return skeleton;\n let result = skeleton;\n for (const [name, content] of Object.entries(slots)) {\n if (name === 'default')\n continue;\n result = result.replaceAll(new RegExp(`<slot\\\\s+name=[\"']${name}[\"'][^>]*>[\\\\s\\\\S]*?</slot>`, 'g'), content);\n }\n if ('default' in slots) {\n result = result.replaceAll(/<slot\\s*>[\\s\\S]*?<\\/slot>/g, slots['default']);\n }\n return result;\n };\n }\n renderError(args) {\n const msg = args.error instanceof Error ? args.error.message : String(args.error);\n return `<div data-component=\"${this.name}\">Error: ${escapeHtml(msg)}</div>`;\n }\n renderMarkdownError(error) {\n const msg = error instanceof Error ? error.message : String(error);\n return `> **Error** (\\`${this.name}\\`): ${msg}`;\n }\n}\n//# sourceMappingURL=abstract.component.js.map",
|
|
16
|
-
"/**\n * Page Component\n *\n * Params come from URL, context carries file content.\n *\n * Default implementations follow the fallback table:\n * - renderHTML: html file → md via <mark-down> → <router-slot /> (non-leaf only)\n * - renderMarkdown: md file → ```router-slot\\n``` (non-leaf only)\n * - getData: no-op (returns null)\n */\nimport { Component } from \"./abstract.component.js\";\nimport { escapeHtml } from \"../util/html.util.js\";\nexport class PageComponent extends Component {\n name = 'page';\n pattern;\n
|
|
17
|
-
"/**\n *
|
|
18
|
-
"/**\n * SSR Renderer
|
|
19
|
-
"/**\n * SSR HTML Renderer\n *\n * Server-side HTML rendering.\n * Generates complete HTML strings without DOM manipulation.\n * Expands <mark-down> tags server-side when a markdown renderer is provided.\n */\nimport { DEFAULT_ROOT_ROUTE } from \"../pipeline/pipeline.js\";\nimport { escapeHtml, STATUS_MESSAGES, unescapeHtml } from \"../util/html.util.js\";\nimport { resolveWidgetTags } from \"../util/widget-resolve.util.js\";\nimport { SsrRenderer } from \"./ssr.renderer.js\";\nexport class SsrHtmlRenderer extends SsrRenderer {\n label = 'SSR HTML';\n markdownRenderer;\n markdownReady = null;\n constructor(pipeline, options = {}) {\n super(pipeline, options);\n this.markdownRenderer = options.markdownRenderer ?? null;\n if (this.markdownRenderer?.init) {\n this.markdownReady = this.markdownRenderer.init();\n }\n }\n injectSlot(parent, child, parentPattern) {\n const escaped = parentPattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return parent.replace(new RegExp(`<router-slot\\\\b[^>]*\\\\bpattern=\"${escaped}\"[^>]*></router-slot>`), child);\n }\n stripSlots(result) {\n return result.replace(/<router-slot[^>]*><\\/router-slot>/g, '');\n }\n async renderRouteContent(routeInfo, route, isLeaf, signal) {\n if (route.modulePath === DEFAULT_ROOT_ROUTE.modulePath) {\n return { content: `<router-slot pattern=\"${route.pattern}\"></router-slot>` };\n }\n const { content: rawContent, title } = await this.loadRouteContent(routeInfo, route, isLeaf, signal);\n let content = rawContent;\n content = await this.expandMarkdown(content);\n // Attribute bare <router-slot> tags with this route's pattern\n content = this.attributeSlots(content, route.pattern);\n // Resolve <widget-*> tags\n content = await resolveWidgetTags(content, (name) => this.resolveWidget(name), routeInfo, async (name) => {\n const modulePath = await this.pipeline.findWidgetModulePath(name);\n if (modulePath) {\n const mod = await this.pipeline.loadModule(modulePath);\n const inlined = this.pipeline.getModuleFiles(mod);\n if (inlined)\n return inlined;\n }\n return {};\n }, this.pipeline.contextProvider, this.logger);\n return { content, ...(title !== undefined ? { title } : {}) };\n }\n renderContent(component, args) {\n return component.renderHTML(args);\n }\n renderRedirect(to) {\n return `<meta http-equiv=\"refresh\" content=\"0;url=${escapeHtml(to)}\">`;\n }\n renderStatusPage(status, url) {\n return `\n <h1>${STATUS_MESSAGES[status] ?? 'Error'}</h1>\n <p>Path: ${escapeHtml(url.pathname)}</p>\n `;\n }\n renderErrorPage(error, url) {\n const message = error instanceof Error ? error.message : String(error);\n return `\n <h1>Error</h1>\n <p>Path: ${escapeHtml(url.pathname)}</p>\n <p>${escapeHtml(message)}</p>\n `;\n }\n attributeSlots(content, routePattern) {\n return content.replace(/<router-slot(?![^>]*\\bpattern=)([^>]*)><\\/router-slot>/g, `<router-slot pattern=\"${routePattern}\"$1></router-slot>`);\n }\n async expandMarkdown(content) {\n if (!this.markdownRenderer)\n return content;\n if (!content.includes('<mark-down>'))\n return content;\n if (this.markdownReady) {\n await this.markdownReady;\n }\n const renderer = this.markdownRenderer;\n const pattern = /<mark-down>([\\s\\S]*?)<\\/mark-down>/g;\n return content.replace(pattern, (_match, escaped) => {\n const markdown = unescapeHtml(escaped);\n return renderer.render(markdown);\n });\n }\n}\n//# sourceMappingURL=html.renderer.js.map",
|
|
13
|
+
"/**\n * Pipeline\n *\n * Orchestration layer between Router, Runtime, and Component.\n *\n * Owns:\n * - Route matching (reads manifest from Runtime, walks RouteNode tree)\n * - Module loading (delegates to Runtime)\n * - Companion file reading (delegates to Runtime)\n * - ComponentContext building\n * - Route hierarchy construction\n *\n * Does NOT own:\n * - Rendering (that's Renderer)\n * - HTTP routing / base paths (that's Server)\n * - Storage I/O (that's Runtime)\n * - Navigation events (that's the browser adapter)\n */\nimport { RouteTrie } from \"../router/route.trie.js\";\nimport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH } from \"../runtime/abstract.runtime.js\";\nimport { defaultLogger } from \"../type/logger.type.js\";\n/** Default root route — renders a slot for child routes. */\nexport const DEFAULT_ROOT_ROUTE = {\n pattern: '/',\n type: 'page',\n modulePath: '__default_root__',\n};\n/** Synthesize a RouteConfig from matched route data. */\nfunction toRouteConfig(node, pattern) {\n return {\n pattern,\n type: node.redirect ? 'redirect' : 'page',\n modulePath: node.redirect ?? node.files?.ts ?? node.files?.js ?? node.files?.html ?? node.files?.md ?? '',\n ...(node.files ? { files: node.files } : {}),\n };\n}\nexport class Pipeline {\n runtime;\n contextProvider;\n logger;\n moduleLoaders;\n constructor(options) {\n this.runtime = options.runtime;\n this.contextProvider = options.contextProvider;\n this.logger = options.logger ?? defaultLogger;\n this.moduleLoaders = options.moduleLoaders ?? {};\n }\n // ── Route resolver (from Runtime) ───────────────────────────────────\n async getResolver() {\n const response = await this.runtime.query(ROUTES_MANIFEST_PATH);\n const tree = response.status === 404 ? {} : await response.json();\n return new RouteTrie(tree);\n }\n // ── Matching ────────────────────────────────────────────────────────\n async match(url) {\n const resolver = await this.getResolver();\n const resolved = resolver.match(url.pathname);\n if (resolved) {\n return { route: toRouteConfig(resolved.node, resolved.pattern), params: resolved.params };\n }\n if (url.pathname === '/' || url.pathname === '') {\n return { route: DEFAULT_ROOT_ROUTE, params: {} };\n }\n return undefined;\n }\n async findRoute(pattern) {\n const resolver = await this.getResolver();\n const node = resolver.findRoute(pattern);\n if (!node)\n return undefined;\n return toRouteConfig(node, pattern);\n }\n async findErrorBoundary(pathname) {\n const resolver = await this.getResolver();\n const modulePath = resolver.findErrorBoundary(pathname);\n if (!modulePath)\n return undefined;\n return { pattern: pathname, modulePath };\n }\n async getStatusPage(status) {\n const resolver = await this.getResolver();\n const node = resolver.findRoute(`/${status}`);\n if (!node)\n return undefined;\n return toRouteConfig(node, `/${status}`);\n }\n async getErrorHandler() {\n const resolver = await this.getResolver();\n const modulePath = resolver.findErrorBoundary('/');\n if (!modulePath)\n return undefined;\n return { pattern: '/', type: 'error', modulePath };\n }\n // ── Route hierarchy ────────────────────────────────────────────────\n buildRouteHierarchy(pattern) {\n if (pattern === '/')\n return ['/'];\n const segments = pattern.split('/').filter(Boolean);\n const hierarchy = ['/'];\n let current = '';\n for (const segment of segments) {\n current += '/' + segment;\n hierarchy.push(current);\n }\n return hierarchy;\n }\n // ── Widget manifest lookup ─────────────────────────────────────────\n async findWidgetModulePath(name) {\n const response = await this.runtime.query(WIDGETS_MANIFEST_PATH);\n if (response.status === 404)\n return undefined;\n const entries = await response.json();\n return entries.find((e) => e.name === name)?.modulePath;\n }\n /** Load a widget module by name — single load yields both component and files. */\n async loadWidgetModule(name) {\n const path = await this.findWidgetModulePath(name);\n if (!path)\n return undefined;\n const mod = await this.loadModule(path);\n const component = this.extractWidgetComponent(mod);\n if (!component)\n return undefined;\n return { component, files: this.getModuleFiles(mod) ?? {} };\n }\n /** Load a widget by name — shorthand when only the component is needed. */\n async loadWidget(name) {\n return (await this.loadWidgetModule(name))?.component;\n }\n /** Extract a WidgetComponent from a loaded module's exports. */\n extractWidgetComponent(mod) {\n for (const value of Object.values(mod)) {\n if (!value)\n continue;\n if (typeof value === 'object' && 'getData' in value) {\n return value;\n }\n if (typeof value === 'function' && value.prototype?.getData) {\n return new value();\n }\n }\n return undefined;\n }\n // ── Module loading ─────────────────────────────────────────────────\n async loadModule(modulePath) {\n const loader = this.moduleLoaders[modulePath];\n if (loader) {\n return await loader();\n }\n const abs = modulePath.startsWith('/') ? modulePath : '/' + modulePath;\n return await this.runtime.loadModule(abs);\n }\n /**\n * Get inlined `__files` from a loaded module (merged module pattern).\n */\n getModuleFiles(mod) {\n if (!mod || typeof mod !== 'object')\n return undefined;\n const files = mod.__files;\n if (!files || typeof files !== 'object')\n return undefined;\n return files;\n }\n // ── File loading ───────────────────────────────────────────────────\n async loadFiles(files) {\n const load = async (path) => {\n const abs = path.startsWith('/') ? path : '/' + path;\n try {\n return await this.runtime.query(abs, { as: 'text' });\n }\n catch (e) {\n console.warn(`[Pipeline] Failed to load file ${path}:`, e instanceof Error ? e.message : e);\n return undefined;\n }\n };\n const [html, md, css] = await Promise.all([\n files.html ? load(files.html) : undefined,\n files.md ? load(files.md) : undefined,\n files.css ? load(files.css) : undefined,\n ]);\n const result = {};\n if (html !== undefined)\n result.html = html;\n if (md !== undefined)\n result.md = md;\n if (css !== undefined)\n result.css = css;\n return result;\n }\n // ── Context building ───────────────────────────────────────────────\n toRouteInfo(matched, url) {\n return { url, params: matched.params };\n }\n async buildContext(routeInfo, route, signal, isLeaf, loadedModule) {\n const rf = route.files;\n // Try inlined __files from merged module first\n const inlined = loadedModule ? this.getModuleFiles(loadedModule) : undefined;\n let files;\n if (inlined) {\n files = inlined;\n }\n else if (rf) {\n const filePaths = {};\n if (rf.html)\n filePaths.html = rf.html;\n if (rf.md)\n filePaths.md = rf.md;\n if (rf.css)\n filePaths.css = rf.css;\n files = await this.loadFiles(filePaths);\n }\n else {\n files = {};\n }\n const base = {\n ...routeInfo,\n pathname: routeInfo.url.pathname,\n searchParams: routeInfo.url.searchParams,\n files,\n ...(signal ? { signal } : {}),\n ...(isLeaf !== undefined ? { isLeaf } : {}),\n };\n return this.contextProvider ? this.contextProvider(base) : base;\n }\n}\n//# sourceMappingURL=pipeline.js.map",
|
|
14
|
+
"/**\n * Widget Resolve Utilities\n *\n * Server-side resolution of <widget-*> tags in HTML.\n * Calls getData() + renderHTML() on widgets and injects SSR hydration data.\n */\nimport { defaultLogger } from \"../type/logger.type.js\";\nimport { RESERVED_ATTRS, SSR_ATTR } from \"./html.util.js\";\n/** Maximum nesting depth for widgets to prevent infinite loops */\nexport const MAX_WIDGET_DEPTH = 10;\n/**\n * Recursively resolve widgets in content with depth limit.\n */\nexport async function resolveRecursively(content, parse, resolve, replace, depth = 0, logger = defaultLogger) {\n if (depth >= MAX_WIDGET_DEPTH) {\n logger.warn(`Widget nesting depth limit reached (${MAX_WIDGET_DEPTH}). ` +\n 'Possible circular dependency or excessive nesting.');\n return content;\n }\n const widgets = parse(content);\n if (widgets.length === 0)\n return content;\n const replacements = new Map();\n await Promise.all(widgets.map(async (widget) => {\n let rendered = await resolve(widget);\n rendered = await resolveRecursively(rendered, parse, resolve, replace, depth + 1, logger);\n replacements.set(widget, rendered);\n }));\n return replace(content, replacements);\n}\n/**\n * Resolve <widget-*> tags in HTML by calling getData() + renderHTML().\n */\nexport function resolveWidgetTags(html, getWidget, routeInfo, contextProvider, logger = defaultLogger) {\n const tagPattern = /<widget-(?<name>[a-z][a-z0-9-]*)(?<attrs>\\s[^>]*)?>(?<content>.*?)<\\/widget-\\k<name>>/gis;\n const wrappers = new Map();\n const ssrAttrPattern = new RegExp(`\\\\s${SSR_ATTR}(?:\\\\s|=|$)`);\n const parse = (content) => {\n const matches = content.matchAll(tagPattern).toArray();\n return matches.filter((match) => {\n const attrsString = match.groups.attrs || '';\n return !ssrAttrPattern.test(attrsString);\n });\n };\n const resolve = async (match) => {\n const widgetName = match.groups.name;\n const attrsString = match.groups.attrs?.trim() ?? '';\n try {\n const result = await getWidget(widgetName);\n if (!result)\n return match[0];\n const { component: widget, files } = result;\n const params = parseAttrsToParams(attrsString);\n const baseContext = {\n ...routeInfo,\n pathname: routeInfo.url.pathname,\n searchParams: routeInfo.url.searchParams,\n ...(files ? { files } : {}),\n };\n const context = contextProvider ? contextProvider(baseContext) : baseContext;\n const data = await widget.getData({ params, context });\n const rendered = widget.renderHTML({ data, params, context });\n wrappers.set(match, {\n tagName: `widget-${widgetName}`,\n attrs: attrsString ? ` ${attrsString}` : '',\n ssrData: widget.exposeSsrData ? escapeAttr(JSON.stringify(data)) : '',\n });\n return rendered;\n }\n catch (e) {\n logger.error(`[SSR HTML] Widget \"${widgetName}\" render failed`, e instanceof Error ? e : undefined);\n return match[0];\n }\n };\n const replace = (content, replacements) => {\n let result = content;\n const entries = [...replacements.entries()].sort((a, b) => b[0].index - a[0].index);\n for (const [match, innerHtml] of entries) {\n const start = match.index;\n const end = start + match[0].length;\n const wrap = wrappers.get(match);\n const lightDomData = wrap?.ssrData ? wrap.ssrData : '';\n const replacement = wrap\n ? `<${wrap.tagName}${wrap.attrs} ${SSR_ATTR}><template shadowrootmode=\"open\">${innerHtml}</template>${lightDomData}</${wrap.tagName}>`\n : innerHtml;\n result = result.slice(0, start) + replacement + result.slice(end);\n }\n return result;\n };\n return resolveRecursively(html, parse, resolve, replace, 0, logger);\n}\n/** Parse HTML attribute string into params object. */\nexport function parseAttrsToParams(attrsString) {\n const params = {};\n if (!attrsString)\n return params;\n const attrPattern = /(?<attr>[a-z][a-z0-9-]*)(?:=\"(?<dq>[^\"]*)\"|='(?<sq>[^']*)'|=(?<uq>[^\\s>]+))?/gi;\n for (const match of attrsString.matchAll(attrPattern)) {\n const { attr: attrName, dq, sq, uq } = match.groups;\n if (!attrName || RESERVED_ATTRS.has(attrName))\n continue;\n const key = attrName.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const rawValue = dq ?? sq ?? uq;\n if (rawValue === undefined) {\n params[key] = '';\n continue;\n }\n const raw = rawValue.replaceAll('&', '&').replaceAll(''', \"'\").replaceAll('"', '\"');\n try {\n params[key] = JSON.parse(raw);\n }\n catch {\n params[key] = raw;\n }\n }\n return params;\n}\nfunction escapeAttr(value) {\n return value.replaceAll('&', '&').replaceAll(\"'\", ''');\n}\n//# sourceMappingURL=widget-resolve.util.js.map",
|
|
15
|
+
"/**\n * Component Base Class\n *\n * Everything is a Component: pages and widgets.\n * Components render differently based on context:\n * - /md/* → Markdown (LLMs, text clients)\n * - /html/* → Pre-rendered HTML (SSR)\n * - SPA → Hydrated custom elements\n */\nimport { escapeHtml } from \"../util/html.util.js\";\nexport class Component {\n /** Host element reference, set by ComponentElement in the browser. */\n element;\n /** Associated file paths for pre-loaded content (html, md, css). */\n files;\n /**\n * When true, SSR serializes the getData() result into the element's\n * light DOM so the client can access it immediately in hydrate()\n * without re-fetching.\n */\n exposeSsrData;\n getData(_args) { return Promise.resolve(null); }\n renderHTML(args) {\n if (args.data === null) {\n return `<div data-component=\"${this.name}\">Loading...</div>`;\n }\n const markdown = this.renderMarkdown({\n data: args.data,\n params: args.params,\n context: args.context,\n });\n return `<div data-component=\"${this.name}\" data-markdown>${escapeHtml(markdown)}</div>`;\n }\n experimentalUseTemplate(sourceOrId, id) {\n // DOM path: single arg = template id, find in shadow DOM\n if (id === undefined) {\n const templateId = sourceOrId;\n const shadowRoot = this.element?.shadowRoot;\n const template = shadowRoot?.querySelector(`template#${templateId}`);\n if (!template) {\n throw new Error(`[${this.name}] Template \"#${templateId}\" not found in shadow DOM. ` +\n 'Ensure the <template> element exists in the companion HTML.');\n }\n return (slots) => {\n const clone = template.content.cloneNode(true);\n if (!slots)\n return clone;\n for (const [name, content] of Object.entries(slots)) {\n const selector = name === 'default' ? 'slot:not([name])' : `slot[name=\"${name}\"]`;\n const slot = clone.querySelector(selector);\n if (!slot)\n continue;\n const temp = document.createElement('template');\n temp.innerHTML = content;\n slot.replaceWith(temp.content);\n }\n return clone;\n };\n }\n const source = sourceOrId;\n // Markdown path: ```template:id ... ```\n const mdPattern = new RegExp('```template:' + id + '\\\\n([\\\\s\\\\S]*?)```');\n const mdMatch = source.match(mdPattern);\n if (mdMatch) {\n const skeleton = mdMatch[1];\n return (slots) => {\n if (!slots)\n return skeleton;\n let result = skeleton;\n for (const [name, content] of Object.entries(slots)) {\n result = result.replaceAll(`slot:${name}`, content);\n }\n return result;\n };\n }\n // HTML path: <template id=\"...\">...</template>\n const htmlPattern = new RegExp(`<template\\\\s+id=[\"']${id}[\"'][^>]*>([\\\\s\\\\S]*?)</template>`);\n const htmlMatch = source.match(htmlPattern);\n if (!htmlMatch) {\n throw new Error(`[${this.name}] Template \"${id}\" not found in source. ` +\n 'Expected <template id=\"' + id + '\"> in HTML or ```template:' + id + ' in markdown.');\n }\n const skeleton = htmlMatch[1];\n return (slots) => {\n if (!slots)\n return skeleton;\n let result = skeleton;\n for (const [name, content] of Object.entries(slots)) {\n if (name === 'default')\n continue;\n result = result.replaceAll(new RegExp(`<slot\\\\s+name=[\"']${name}[\"'][^>]*>[\\\\s\\\\S]*?</slot>`, 'g'), content);\n }\n if ('default' in slots) {\n result = result.replaceAll(/<slot\\s*>[\\s\\S]*?<\\/slot>/g, slots['default']);\n }\n return result;\n };\n }\n renderError(args) {\n const msg = args.error instanceof Error ? args.error.message : String(args.error);\n return `<div data-component=\"${this.name}\">Error: ${escapeHtml(msg)}</div>`;\n }\n renderMarkdownError(error) {\n const msg = error instanceof Error ? error.message : String(error);\n return `> **Error** (\\`${this.name}\\`): ${msg}`;\n }\n}\n//# sourceMappingURL=abstract.component.js.map",
|
|
16
|
+
"/**\n * Page Component\n *\n * Params come from URL, context carries file content.\n *\n * Default implementations follow the fallback table:\n * - renderHTML: html file → md via <mark-down> → <router-slot /> (non-leaf only)\n * - renderMarkdown: md file → ```router-slot\\n``` (non-leaf only)\n * - getData: no-op (returns null)\n */\nimport { Component } from \"./abstract.component.js\";\nimport { escapeHtml } from \"../util/html.util.js\";\nexport class PageComponent extends Component {\n name = 'page';\n pattern;\n renderHTML(args) {\n const files = args.context.files;\n const style = files?.css ? `<style>${files.css}</style>\\n` : '';\n if (files?.html) {\n let html = style + files.html;\n if (files.md && html.includes('<mark-down></mark-down>')) {\n html = html.replace('<mark-down></mark-down>', `<mark-down>${escapeHtml(files.md)}</mark-down>`);\n }\n return html;\n }\n if (files?.md) {\n const hasSlot = files.md.includes('```router-slot');\n const slot = args.context.isLeaf || hasSlot ? '' : '\\n<router-slot></router-slot>';\n return `${style}<mark-down>${escapeHtml(files.md)}</mark-down>${slot}`;\n }\n return args.context.isLeaf ? '' : '<router-slot></router-slot>';\n }\n renderMarkdown(args) {\n const files = args.context.files;\n if (files?.md) {\n return files.md;\n }\n return args.context.isLeaf ? '' : '```router-slot\\n```';\n }\n getTitle(_args) {\n return undefined;\n }\n}\n/** Shared default instance used by renderers when no custom .page.ts exists. */\nexport default new PageComponent();\n//# sourceMappingURL=page.component.js.map",
|
|
17
|
+
"/**\n * SSR Renderer Base\n *\n * Abstract base class for server-side renderers.\n * Provides the shared render() pipeline; subclasses supply format-specific rendering.\n */\nimport defaultPageComponent from \"../component/page.component.js\";\nimport { DEFAULT_ROOT_ROUTE } from \"../pipeline/pipeline.js\";\nimport { assertSafeRedirect } from \"../util/html.util.js\";\n/**\n * Abstract SSR renderer with shared routing pipeline.\n */\nexport class SsrRenderer {\n pipeline;\n logger;\n constructor(pipeline, _options = {}) {\n this.pipeline = pipeline;\n this.logger = pipeline.logger;\n }\n /**\n * Render a URL to a content string.\n */\n async render(url, signal) {\n const matched = await this.pipeline.match(url);\n if (!matched) {\n const statusPage = await this.pipeline.getStatusPage(404);\n if (statusPage) {\n try {\n const ri = { url, params: {} };\n const result = await this.renderRouteContent(ri, statusPage, undefined, signal);\n return { content: this.stripSlots(result.content), status: 404, ...(result.title !== undefined ? { title: result.title } : {}) };\n }\n catch (e) {\n this.logger.error(`[${this.label}] Failed to render 404 status page for ${url.pathname}`, e instanceof Error ? e : undefined);\n }\n }\n return { content: this.renderStatusPage(404, url), status: 404 };\n }\n // Handle redirect\n if (matched.route.type === 'redirect') {\n const module = await this.pipeline.loadModule(matched.route.modulePath);\n const redirectConfig = module.default;\n assertSafeRedirect(redirectConfig.to);\n return {\n content: this.renderRedirect(redirectConfig.to),\n status: redirectConfig.status ?? 301,\n redirect: redirectConfig.to,\n };\n }\n const routeInfo = this.pipeline.toRouteInfo(matched, url);\n try {\n const { content, title } = await this.renderPage(routeInfo, matched, signal);\n return { content, status: 200, ...(title !== undefined ? { title } : {}) };\n }\n catch (error) {\n if (error instanceof Response) {\n const statusPage = await this.pipeline.getStatusPage(error.status);\n if (statusPage) {\n try {\n const ri = { url, params: {} };\n const result = await this.renderRouteContent(ri, statusPage, undefined, signal);\n return {\n content: this.stripSlots(result.content),\n status: error.status,\n ...(result.title !== undefined ? { title: result.title } : {}),\n };\n }\n catch (e) {\n this.logger.error(`[${this.label}] Failed to render ${error.status} status page for ${url.pathname}`, e instanceof Error ? e : undefined);\n }\n }\n return { content: this.renderStatusPage(error.status, url), status: error.status };\n }\n this.logger.error(`[${this.label}] Error rendering ${url.pathname}:`, error instanceof Error ? error : undefined);\n const boundary = await this.pipeline.findErrorBoundary(url.pathname);\n if (boundary) {\n const result = await this.tryRenderErrorModule(boundary.modulePath, url, 'boundary');\n if (result)\n return result;\n }\n const errorHandler = await this.pipeline.getErrorHandler();\n if (errorHandler) {\n const result = await this.tryRenderErrorModule(errorHandler.modulePath, url, 'handler');\n if (result)\n return result;\n }\n return { content: this.renderErrorPage(error, url), status: 500 };\n }\n }\n /**\n * Render a matched page by composing the route hierarchy.\n */\n async renderPage(routeInfo, matched, signal) {\n const hierarchy = this.pipeline.buildRouteHierarchy(matched.route.pattern);\n const segments = [];\n for (let i = 0; i < hierarchy.length; i++) {\n const routePattern = hierarchy[i];\n let route = await this.pipeline.findRoute(routePattern);\n if (!route && routePattern === '/') {\n route = DEFAULT_ROOT_ROUTE;\n }\n if (!route)\n continue;\n if (route === matched.route && routePattern !== matched.route.pattern)\n continue;\n segments.push({ route, isLeaf: i === hierarchy.length - 1 });\n }\n const results = await Promise.all(segments.map(({ route, isLeaf }) => this.renderRouteContent(routeInfo, route, isLeaf, signal)));\n let result = '';\n let pageTitle;\n let lastRenderedPattern = '';\n for (let i = 0; i < segments.length; i++) {\n const { content, title } = results[i];\n if (title) {\n pageTitle = title;\n }\n if (result === '') {\n result = content;\n }\n else {\n const injected = this.injectSlot(result, content, lastRenderedPattern);\n if (injected === result) {\n this.logger.warn(`[${this.label}] Route \"${lastRenderedPattern}\" has no <router-slot> ` +\n `for child route \"${hierarchy[i]}\" to render into. ` +\n `Add <router-slot></router-slot> to the parent template.`);\n }\n result = injected;\n }\n lastRenderedPattern = segments[i].route.pattern;\n }\n result = this.stripSlots(result);\n return { content: result, ...(pageTitle !== undefined ? { title: pageTitle } : {}) };\n }\n /** Load component, build context, get data, render content, get title. */\n async loadRouteContent(routeInfo, route, isLeaf, signal) {\n const files = route.files ?? {};\n const tsModule = files.ts ?? files.js;\n const loadedModule = tsModule\n ? await this.pipeline.loadModule(tsModule)\n : undefined;\n const component = loadedModule?.default ?? defaultPageComponent;\n const context = await this.pipeline.buildContext(routeInfo, route, signal, isLeaf, loadedModule);\n const data = await component.getData({ params: routeInfo.params, ...(signal ? { signal } : {}), context });\n const content = this.renderContent(component, { data, params: routeInfo.params, context });\n const title = component.getTitle({ data, params: routeInfo.params, context });\n return { content, ...(title !== undefined ? { title } : {}) };\n }\n renderComponent(component, data, context) {\n return this.renderContent(component, { data, params: {}, context });\n }\n static EMPTY_URL = new URL('http://error');\n async tryRenderErrorModule(modulePath, url, kind) {\n try {\n const module = await this.pipeline.loadModule(modulePath);\n const component = module.default;\n const minCtx = {\n url: SsrRenderer.EMPTY_URL,\n params: {},\n pathname: '',\n searchParams: new URLSearchParams(),\n };\n const data = await component.getData({ params: {}, context: minCtx });\n const content = this.renderComponent(component, data, minCtx);\n return { content, status: 500 };\n }\n catch (e) {\n this.logger.error(`[${this.label}] Error ${kind} failed for ${url.pathname}`, e instanceof Error ? e : undefined);\n return null;\n }\n }\n}\n//# sourceMappingURL=ssr.renderer.js.map",
|
|
18
|
+
"/**\n * SSR HTML Renderer\n *\n * Server-side HTML rendering.\n * Generates complete HTML strings without DOM manipulation.\n * Expands <mark-down> tags server-side when a markdown renderer is provided.\n */\nimport { DEFAULT_ROOT_ROUTE } from \"../pipeline/pipeline.js\";\nimport { escapeHtml, STATUS_MESSAGES, unescapeHtml } from \"../util/html.util.js\";\nimport { resolveWidgetTags } from \"../util/widget-resolve.util.js\";\nimport { SsrRenderer } from \"./ssr.renderer.js\";\nexport class SsrHtmlRenderer extends SsrRenderer {\n label = 'SSR HTML';\n markdownRenderer;\n markdownReady = null;\n constructor(pipeline, options = {}) {\n super(pipeline, options);\n this.markdownRenderer = options.markdownRenderer ?? null;\n if (this.markdownRenderer?.init) {\n this.markdownReady = this.markdownRenderer.init();\n }\n }\n injectSlot(parent, child, parentPattern) {\n const escaped = parentPattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return parent.replace(new RegExp(`<router-slot\\\\b[^>]*\\\\bpattern=\"${escaped}\"[^>]*></router-slot>`), child);\n }\n stripSlots(result) {\n return result.replace(/<router-slot[^>]*><\\/router-slot>/g, '');\n }\n async renderRouteContent(routeInfo, route, isLeaf, signal) {\n if (route.modulePath === DEFAULT_ROOT_ROUTE.modulePath) {\n return { content: `<router-slot pattern=\"${route.pattern}\"></router-slot>` };\n }\n const { content: rawContent, title } = await this.loadRouteContent(routeInfo, route, isLeaf, signal);\n let content = rawContent;\n content = await this.expandMarkdown(content);\n // Attribute bare <router-slot> tags with this route's pattern\n content = this.attributeSlots(content, route.pattern);\n // Resolve <widget-*> tags (memoized per render pass for streaming compat)\n const widgetCache = new Map();\n content = await resolveWidgetTags(content, (name) => {\n if (!widgetCache.has(name)) {\n widgetCache.set(name, this.pipeline.loadWidgetModule(name).catch((e) => {\n this.logger.error(`[${this.label}] Failed to load widget \"${name}\"`, e instanceof Error ? e : undefined);\n return undefined;\n }));\n }\n return widgetCache.get(name);\n }, routeInfo, this.pipeline.contextProvider, this.logger);\n return { content, ...(title !== undefined ? { title } : {}) };\n }\n renderContent(component, args) {\n return component.renderHTML(args);\n }\n renderRedirect(to) {\n return `<meta http-equiv=\"refresh\" content=\"0;url=${escapeHtml(to)}\">`;\n }\n renderStatusPage(status, url) {\n return `\n <h1>${STATUS_MESSAGES[status] ?? 'Error'}</h1>\n <p>Path: ${escapeHtml(url.pathname)}</p>\n `;\n }\n renderErrorPage(error, url) {\n const message = error instanceof Error ? error.message : String(error);\n return `\n <h1>Error</h1>\n <p>Path: ${escapeHtml(url.pathname)}</p>\n <p>${escapeHtml(message)}</p>\n `;\n }\n attributeSlots(content, routePattern) {\n return content.replace(/<router-slot(?![^>]*\\bpattern=)([^>]*)><\\/router-slot>/g, `<router-slot pattern=\"${routePattern}\"$1></router-slot>`);\n }\n async expandMarkdown(content) {\n if (!this.markdownRenderer)\n return content;\n if (!content.includes('<mark-down>'))\n return content;\n if (this.markdownReady) {\n await this.markdownReady;\n }\n const renderer = this.markdownRenderer;\n const pattern = /<mark-down>([\\s\\S]*?)<\\/mark-down>/g;\n return content.replace(pattern, (_match, escaped) => {\n const markdown = unescapeHtml(escaped);\n return renderer.render(markdown);\n });\n }\n}\n//# sourceMappingURL=html.renderer.js.map",
|
|
20
19
|
"/**\n * Widget Parser\n *\n * Parses fenced widget blocks from markdown content.\n *\n * Syntax:\n * ```widget:widget-name\n * {\"key\": \"value\"}\n * ```\n */\nconst WIDGET_PATTERN = /```widget:(?<name>[a-z][a-z0-9-]*)\\n(?<params>.*?)```/gs;\nexport function parseWidgetBlocks(markdown) {\n const blocks = [];\n for (const match of markdown.matchAll(WIDGET_PATTERN)) {\n const fullMatch = match[0];\n const { name: widgetName, params: paramsRaw } = match.groups;\n const paramsJson = paramsRaw.trim();\n const startIndex = match.index;\n const block = {\n fullMatch,\n widgetName: widgetName,\n params: null,\n startIndex,\n endIndex: startIndex + fullMatch.length,\n };\n if (paramsJson) {\n try {\n const parsed = JSON.parse(paramsJson);\n if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {\n block.params = parsed;\n }\n else {\n block.parseError = 'Params must be a JSON object';\n }\n }\n catch (e) {\n block.parseError = `Invalid JSON: ${e instanceof Error ? e.message : String(e)}`;\n }\n }\n else {\n block.params = {};\n }\n blocks.push(block);\n }\n return blocks;\n}\nexport function replaceWidgetBlocks(markdown, replacements) {\n const sortedBlocks = [...replacements.entries()].sort(([a], [b]) => b.startIndex - a.startIndex);\n let result = markdown;\n for (const [block, replacement] of sortedBlocks) {\n result = result.slice(0, block.startIndex) + replacement + result.slice(block.endIndex);\n }\n return result;\n}\n//# sourceMappingURL=widget.parser.js.map",
|
|
21
|
-
"/**\n * SSR Markdown Renderer\n *\n * Server-side Markdown rendering.\n * Generates Markdown strings for LLM consumption, text clients, curl.\n */\nimport { DEFAULT_ROOT_ROUTE } from \"../pipeline/pipeline.js\";\nimport { STATUS_MESSAGES } from \"../util/html.util.js\";\nimport { resolveRecursively } from \"../util/widget-resolve.util.js\";\nimport { parseWidgetBlocks, replaceWidgetBlocks } from \"../widget/widget.parser.js\";\nimport { SsrRenderer } from \"./ssr.renderer.js\";\nconst BARE_SLOT_BLOCK = '```router-slot\\n```';\nfunction routerSlotBlock(pattern) {\n return `\\`\\`\\`router-slot\\n{\"pattern\":\"${pattern}\"}\\n\\`\\`\\``;\n}\nexport class SsrMdRenderer extends SsrRenderer {\n label = 'SSR MD';\n constructor(pipeline, options = {}) {\n super(pipeline, options);\n }\n injectSlot(parent, child, parentPattern) {\n return parent.replace(routerSlotBlock(parentPattern), child);\n }\n stripSlots(result) {\n return result\n .replace(/```router-slot\\n(?:\\{[^}]*\\}\\n)?```/g, '')\n .trim();\n }\n async renderRouteContent(routeInfo, route, isLeaf, signal) {\n if (route.modulePath === DEFAULT_ROOT_ROUTE.modulePath) {\n return { content: routerSlotBlock(route.pattern) };\n }\n const { content: rawContent, title } = await this.loadRouteContent(routeInfo, route, isLeaf, signal);\n let content = rawContent;\n // Attribute bare router-slot blocks with this route's pattern\n content = content.replaceAll(BARE_SLOT_BLOCK, routerSlotBlock(route.pattern));\n // Resolve fenced widget blocks\n content = await this.resolveWidgets(content, routeInfo);\n return { content, ...(title !== undefined ? { title } : {}) };\n }\n renderContent(component, args) {\n return component.renderMarkdown(args);\n }\n renderRedirect(to) {\n return `Redirect to: ${to}`;\n }\n renderStatusPage(status, url) {\n return `# ${STATUS_MESSAGES[status] ?? 'Error'}\\n\\nPath: \\`${url.pathname}\\``;\n }\n renderErrorPage(_error, url) {\n return `# Internal Server Error\\n\\nPath: \\`${url.pathname}\\``;\n }\n resolveWidgets(content, routeInfo) {\n return resolveRecursively(content, parseWidgetBlocks, async (block) => {\n if (block.parseError || !block.params) {\n return `> **Error** (\\`${block.widgetName}\\`): ${block.parseError}`;\n }\n const
|
|
20
|
+
"/**\n * SSR Markdown Renderer\n *\n * Server-side Markdown rendering.\n * Generates Markdown strings for LLM consumption, text clients, curl.\n */\nimport { DEFAULT_ROOT_ROUTE } from \"../pipeline/pipeline.js\";\nimport { STATUS_MESSAGES } from \"../util/html.util.js\";\nimport { resolveRecursively } from \"../util/widget-resolve.util.js\";\nimport { parseWidgetBlocks, replaceWidgetBlocks } from \"../widget/widget.parser.js\";\nimport { SsrRenderer } from \"./ssr.renderer.js\";\nconst BARE_SLOT_BLOCK = '```router-slot\\n```';\nfunction routerSlotBlock(pattern) {\n return `\\`\\`\\`router-slot\\n{\"pattern\":\"${pattern}\"}\\n\\`\\`\\``;\n}\nexport class SsrMdRenderer extends SsrRenderer {\n label = 'SSR MD';\n constructor(pipeline, options = {}) {\n super(pipeline, options);\n }\n injectSlot(parent, child, parentPattern) {\n return parent.replace(routerSlotBlock(parentPattern), child);\n }\n stripSlots(result) {\n return result\n .replace(/```router-slot\\n(?:\\{[^}]*\\}\\n)?```/g, '')\n .trim();\n }\n async renderRouteContent(routeInfo, route, isLeaf, signal) {\n if (route.modulePath === DEFAULT_ROOT_ROUTE.modulePath) {\n return { content: routerSlotBlock(route.pattern) };\n }\n const { content: rawContent, title } = await this.loadRouteContent(routeInfo, route, isLeaf, signal);\n let content = rawContent;\n // Attribute bare router-slot blocks with this route's pattern\n content = content.replaceAll(BARE_SLOT_BLOCK, routerSlotBlock(route.pattern));\n // Resolve fenced widget blocks\n content = await this.resolveWidgets(content, routeInfo);\n return { content, ...(title !== undefined ? { title } : {}) };\n }\n renderContent(component, args) {\n return component.renderMarkdown(args);\n }\n renderRedirect(to) {\n return `Redirect to: ${to}`;\n }\n renderStatusPage(status, url) {\n return `# ${STATUS_MESSAGES[status] ?? 'Error'}\\n\\nPath: \\`${url.pathname}\\``;\n }\n renderErrorPage(_error, url) {\n return `# Internal Server Error\\n\\nPath: \\`${url.pathname}\\``;\n }\n resolveWidgets(content, routeInfo) {\n const widgetCache = new Map();\n const loadWidget = (name) => {\n if (!widgetCache.has(name)) {\n widgetCache.set(name, this.pipeline.loadWidgetModule(name).catch((e) => {\n this.logger.error(`[${this.label}] Failed to load widget \"${name}\"`, e instanceof Error ? e : undefined);\n return undefined;\n }));\n }\n return widgetCache.get(name);\n };\n return resolveRecursively(content, parseWidgetBlocks, async (block) => {\n if (block.parseError || !block.params) {\n return `> **Error** (\\`${block.widgetName}\\`): ${block.parseError}`;\n }\n const result = await loadWidget(block.widgetName);\n if (!result) {\n return `> **Error**: Unknown widget \\`${block.widgetName}\\``;\n }\n const { component: widget, files } = result;\n try {\n const baseContext = {\n ...routeInfo,\n pathname: routeInfo.url.pathname,\n searchParams: routeInfo.url.searchParams,\n ...(files ? { files } : {}),\n };\n const context = this.pipeline.contextProvider\n ? this.pipeline.contextProvider(baseContext)\n : baseContext;\n const data = await widget.getData({ params: block.params, context });\n return widget.renderMarkdown({ data, params: block.params, context });\n }\n catch (e) {\n return widget.renderMarkdownError(e);\n }\n }, replaceWidgetBlocks, 0, this.logger);\n }\n}\n//# sourceMappingURL=md.renderer.js.map",
|
|
22
21
|
"/**\n * Markdown Link Rewriting\n *\n * Rewrites internal absolute links in markdown to include a base path prefix.\n * Skips fenced code blocks and links already under a known base path.\n */\nexport function rewriteMdLinks(markdown, base, skipPrefixes) {\n const prefix = base + '/';\n const skip = skipPrefixes.map((p) => p.slice(1) + '/').join('|');\n const inlineRe = new RegExp(`\\\\]\\\\(\\\\/(?!${skip})`, 'g');\n const refRe = new RegExp(`^(\\\\[[^\\\\]]+\\\\]:\\\\s+)\\\\/(?!${skip})`, 'g');\n const lines = markdown.split('\\n');\n let inCodeBlock = false;\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('```')) {\n inCodeBlock = !inCodeBlock;\n continue;\n }\n if (inCodeBlock)\n continue;\n lines[i] = lines[i].replaceAll(inlineRe, `](${prefix}`);\n lines[i] = lines[i].replaceAll(refRe, `$1${prefix}`);\n }\n return lines.join('\\n');\n}\n//# sourceMappingURL=md.util.js.map",
|
|
23
22
|
"/**\n * Emroute\n *\n * Framework entry point. Reads manifests from Runtime,\n * builds Pipeline + Renderers, handles Request → Response.\n */\nimport { Pipeline } from \"../pipeline/pipeline.js\";\nimport { SsrHtmlRenderer } from \"../renderer/html.renderer.js\";\nimport { SsrMdRenderer } from \"../renderer/md.renderer.js\";\nimport { escapeHtml } from \"../util/html.util.js\";\nimport { rewriteMdLinks } from \"../util/md.util.js\";\nimport { ROUTES_MANIFEST_PATH, } from \"../runtime/abstract.runtime.js\";\nexport const DEFAULT_BASE_PATH = { html: '/html', md: '/md', app: '/app' };\nexport class Emroute {\n runtime;\n htmlBase;\n mdBase;\n appBase;\n spa;\n title;\n htmlRenderer;\n mdRenderer;\n shell;\n constructor(htmlRenderer, mdRenderer, shell, runtime, htmlBase, mdBase, appBase, spa, title) {\n this.runtime = runtime;\n this.htmlBase = htmlBase;\n this.mdBase = mdBase;\n this.appBase = appBase;\n this.spa = spa;\n this.title = title;\n this.htmlRenderer = htmlRenderer;\n this.mdRenderer = mdRenderer;\n this.shell = shell;\n }\n static async create(config, runtime) {\n const { spa = 'root' } = config;\n const { html: htmlBase, md: mdBase, app: appBase } = config.basePath ?? DEFAULT_BASE_PATH;\n // ── Verify route manifest exists ──────────────────────────────────\n const manifestResponse = await runtime.query(ROUTES_MANIFEST_PATH);\n if (manifestResponse.status === 404 && !config.routeTree) {\n throw new Error(`[emroute] ${ROUTES_MANIFEST_PATH} not found in runtime. ` +\n 'Provide routeTree in config or ensure the runtime produces it.');\n }\n if (config.routeTree && manifestResponse.status === 404) {\n await runtime.command(ROUTES_MANIFEST_PATH, {\n body: JSON.stringify(config.routeTree),\n });\n }\n // ── Pipeline ──────────────────────────────────────────────────────\n const pipeline = new Pipeline({\n runtime,\n ...(config.extendContext ? { contextProvider: config.extendContext } : {}),\n ...(config.moduleLoaders ? { moduleLoaders: config.moduleLoaders } : {}),\n });\n // ── Renderers ─────────────────────────────────────────────────────\n let ssrHtmlRenderer = null;\n let ssrMdRenderer = null;\n if (spa !== 'only') {\n ssrHtmlRenderer = new SsrHtmlRenderer(pipeline, {\n ...(config.markdownRenderer ? { markdownRenderer: config.markdownRenderer } : {}),\n });\n ssrMdRenderer = new SsrMdRenderer(pipeline);\n }\n // ── HTML shell ────────────────────────────────────────────────────\n const title = config.title ?? 'emroute';\n const shellBase = (spa === 'root' || spa === 'only') ? appBase : htmlBase;\n const shell = await Emroute.resolveShell(runtime, title, shellBase, spa);\n return new Emroute(ssrHtmlRenderer, ssrMdRenderer, shell, runtime, htmlBase, mdBase, appBase, spa, title);\n }\n // ── handleRequest ─────────────────────────────────────────────────\n async handleRequest(req) {\n const url = new URL(req.url);\n const pathname = url.pathname;\n const mdPrefix = this.mdBase + '/';\n const htmlPrefix = this.htmlBase + '/';\n const appPrefix = this.appBase + '/';\n // SSR Markdown: /md/*\n if (this.mdRenderer &&\n (pathname.startsWith(mdPrefix) || pathname === this.mdBase)) {\n const routePath = pathname === this.mdBase ? '/' : pathname.slice(this.mdBase.length);\n if (routePath.length > 1 && routePath.endsWith('/')) {\n const canonical = this.mdBase + routePath.slice(0, -1) + (url.search || '');\n return Response.redirect(new URL(canonical, url.origin), 301);\n }\n try {\n const routeUrl = new URL(routePath + url.search, url.origin);\n const { content, status, redirect } = await this.mdRenderer.render(routeUrl, req.signal);\n if (redirect) {\n const target = redirect.startsWith('/') ? this.mdBase + redirect : redirect;\n return Response.redirect(new URL(target, url.origin), status);\n }\n return new Response(rewriteMdLinks(content, this.mdBase, [this.mdBase, this.htmlBase]), {\n status,\n headers: { 'Content-Type': 'text/markdown; charset=utf-8; variant=CommonMark' },\n });\n }\n catch (e) {\n console.error(`[emroute] Error rendering ${pathname}:`, e);\n return new Response('Internal Server Error', { status: 500 });\n }\n }\n // SSR HTML: /html/*\n if (this.htmlRenderer &&\n (pathname.startsWith(htmlPrefix) || pathname === this.htmlBase)) {\n const routePath = pathname === this.htmlBase ? '/' : pathname.slice(this.htmlBase.length);\n if (routePath.length > 1 && routePath.endsWith('/')) {\n const canonical = this.htmlBase + routePath.slice(0, -1) + (url.search || '');\n return Response.redirect(new URL(canonical, url.origin), 301);\n }\n try {\n const routeUrl = new URL(routePath + url.search, url.origin);\n const result = await this.htmlRenderer.render(routeUrl, req.signal);\n if (result.redirect) {\n const target = result.redirect.startsWith('/') ? this.htmlBase + result.redirect : result.redirect;\n return Response.redirect(new URL(target, url.origin), result.status);\n }\n const ssrTitle = result.title ?? this.title;\n const html = Emroute.injectSsrContent(this.shell, result.content, ssrTitle, pathname);\n return new Response(html, {\n status: result.status,\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\n });\n }\n catch (e) {\n console.error(`[emroute] Error rendering ${pathname}:`, e);\n return new Response('Internal Server Error', { status: 500 });\n }\n }\n // /app/*\n if (pathname.startsWith(appPrefix) || pathname === this.appBase) {\n return new Response(this.shell, {\n status: 200,\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\n });\n }\n // Unhandled SSR paths in 'only' mode — redirect to /app/\n if (pathname.startsWith(htmlPrefix) || pathname === this.htmlBase ||\n pathname.startsWith(mdPrefix) || pathname === this.mdBase) {\n const routePath = pathname.startsWith(htmlPrefix) ? pathname.slice(this.htmlBase.length)\n : pathname.startsWith(mdPrefix) ? pathname.slice(this.mdBase.length)\n : '/';\n return Response.redirect(new URL(this.appBase + routePath + (url.search || ''), url.origin), 302);\n }\n // Static files\n const lastSegment = pathname.split('/').pop() ?? '';\n if (lastSegment.includes('.')) {\n const fileResponse = await this.runtime.handle(pathname);\n if (fileResponse.status === 200)\n return fileResponse;\n return null;\n }\n // Bare paths → redirect\n const base = (this.spa === 'root' || this.spa === 'only') ? this.appBase : this.htmlBase;\n const bare = pathname === '/' ? '' : pathname.slice(1).replace(/\\/$/, '');\n return Response.redirect(new URL(`${base}/${bare}`, url.origin), 302);\n }\n // ── Private static helpers ────────────────────────────────────────\n static async buildHtmlShell(runtime, title, basePath, spa) {\n const baseTag = basePath ? `\\n <base href=\"${escapeHtml(basePath)}/\">` : '';\n let manifestTag = '';\n if ((await runtime.query('/manifest.json')).status !== 404) {\n manifestTag = '\\n <link rel=\"manifest\" href=\"/manifest.json\">';\n }\n let cssTag = '';\n if ((await runtime.query('/main.css')).status !== 404) {\n cssTag = '\\n <link rel=\"stylesheet\" href=\"/main.css\">';\n }\n const needsJs = spa !== 'none';\n let importMapHtml = '';\n if (needsJs) {\n const mapResponse = await runtime.query('/importmap.json');\n if (mapResponse.status !== 404) {\n const importMap = await mapResponse.text();\n importMapHtml = `\\n <script type=\"importmap\">\\n${importMap}\\n </script>`;\n }\n }\n let scriptHtml = '';\n if (needsJs && (await runtime.query('/app.js')).status !== 404) {\n scriptHtml = '\\n <script type=\"module\" src=\"/app.js\"></script>';\n }\n return `<!DOCTYPE html>\n<html>\n<head>${baseTag}\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>${escapeHtml(title)}</title>\n <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>${manifestTag}${cssTag}\n</head>\n<body>\n <router-slot></router-slot>${importMapHtml}${scriptHtml}\n</body>\n</html>`;\n }\n static injectSsrContent(html, content, title, ssrRoute) {\n const slotPattern = /<router-slot\\b[^>]*>.*?<\\/router-slot>/s;\n if (!slotPattern.test(html))\n return html;\n const ssrAttr = ssrRoute ? ` data-ssr-route=\"${ssrRoute}\"` : '';\n html = html.replace(slotPattern, `<router-slot${ssrAttr}>${content}</router-slot>`);\n if (title) {\n html = html.replace(/<title>[^<]*<\\/title>/, `<title>${escapeHtml(title)}</title>`);\n }\n return html;\n }\n static async resolveShell(runtime, title, basePath, spa) {\n const response = await runtime.query('/index.html');\n if (response.status !== 404)\n return await response.text();\n return Emroute.buildHtmlShell(runtime, title, basePath, spa);\n }\n}\n//# sourceMappingURL=emroute.server.js.map",
|
|
24
23
|
"/**\n * Route Tree Utilities\n *\n * Pure functions for building a RouteNode tree from filesystem paths.\n */\n/**\n * Resolve the target node for a page or redirect file based on its name.\n *\n * - \"index\" at root → the node itself (root route)\n * - \"index\" in a subdirectory → wildcard catch-all on the node\n * - \"[param]\" → dynamic child\n * - anything else → static child\n */\nexport function resolveTargetNode(node, name, isRoot) {\n if (name === 'index') {\n if (isRoot)\n return node;\n node.wildcard ??= { param: 'rest', child: {} };\n return node.wildcard.child;\n }\n if (name.startsWith('[') && name.endsWith(']')) {\n const param = name.slice(1, -1);\n node.dynamic ??= { param, child: {} };\n return node.dynamic.child;\n }\n node.children ??= {};\n node.children[name] ??= {};\n return node.children[name];\n}\n//# sourceMappingURL=route-tree.util.js.map",
|
|
@@ -35,7 +34,7 @@
|
|
|
35
34
|
"/**\n * Built-in Breadcrumb Widget\n *\n * Renders breadcrumb navigation from the current URL path.\n * Uses /html/ prefix for links (content-first routing convention).\n *\n * Usage in .page.html:\n * <widget-breadcrumb></widget-breadcrumb>\n * <widget-breadcrumb separator=\" / \" class=\"my-breadcrumbs\"></widget-breadcrumb>\n *\n * Usage in .page.md:\n * ```widget:breadcrumb\n * {}\n * ```\n */\nimport { WidgetComponent } from \"../../core/component/widget.component.js\";\nimport { escapeHtml } from \"../../core/util/html.util.js\";\nconst DEFAULT_HTML_SEPARATOR = ' \\u203A ';\nconst DEFAULT_MD_SEPARATOR = ' > ';\nexport class BreadcrumbWidget extends WidgetComponent {\n name = 'breadcrumb';\n getData(args) {\n const pathname = args.context.pathname || '/';\n const parts = pathname.split('/').filter(Boolean);\n const segments = [\n { label: 'Home', href: '/' },\n ];\n let accumulated = '';\n for (const part of parts) {\n accumulated += '/' + part;\n segments.push({\n label: part.charAt(0).toUpperCase() + part.slice(1).replace(/-/g, ' '),\n href: accumulated,\n });\n }\n return Promise.resolve({ segments });\n }\n renderHTML(args) {\n if (!args.data || args.data.segments.length === 0)\n return '';\n const sep = args.params.separator ?? DEFAULT_HTML_SEPARATOR;\n const segments = args.data.segments;\n const items = segments.map((seg, i) => {\n const escaped = escapeHtml(seg.label);\n if (i === segments.length - 1) {\n return `<span aria-current=\"page\">${escaped}</span>`;\n }\n return `<a href=\"${escapeHtml(seg.href)}\">${escaped}</a>`;\n });\n return `<nav aria-label=\"Breadcrumb\">${items.join(escapeHtml(sep))}</nav>`;\n }\n renderMarkdown(args) {\n if (!args.data || args.data.segments.length === 0)\n return '';\n const sep = args.params.separator ?? DEFAULT_MD_SEPARATOR;\n return args.data.segments\n .map((seg, i, arr) => i === arr.length - 1 ? `**${seg.label}**` : `[${seg.label}](${seg.href})`)\n .join(sep);\n }\n}\n//# sourceMappingURL=breadcrumb.widget.js.map",
|
|
36
35
|
"/**\n * SPA (Browser) Module\n *\n * Everything needed for the browser bundle:\n * - EmrouteApp: Navigation API glue wired to an EmrouteServer\n * - Custom elements for rendering and hydrating SSR islands\n */\nimport { RouterSlot } from \"../../element/slot.element.js\";\nimport { MarkdownElement } from \"../../element/markdown.element.js\";\nimport { ComponentElement } from \"../../element/component.element.js\";\nexport { bootEmrouteApp, createEmrouteApp, EmrouteApp } from \"./emroute.app.js\";\nexport { ComponentElement, MarkdownElement, RouterSlot };\n// Re-export base classes and types for consumer code (pages, widgets)\nexport { PageComponent } from \"../../../core/component/page.component.js\";\nexport { WidgetComponent } from \"../../../core/component/widget.component.js\";\nexport { Component } from \"../../../core/component/abstract.component.js\";\nexport { RouteTrie } from \"../../../core/router/route.trie.js\";\nexport { DEFAULT_BASE_PATH } from \"../../../core/server/emroute.server.js\";\nexport { escapeHtml, scopeWidgetCss } from \"../../../core/util/html.util.js\";\nexport { setLogger } from \"../../../core/type/logger.type.js\";\n// Register core custom elements in the browser\nif (globalThis.customElements) {\n if (!customElements.get('router-slot'))\n customElements.define('router-slot', RouterSlot);\n if (!customElements.get('mark-down'))\n customElements.define('mark-down', MarkdownElement);\n}\n// Overlay API (tree-shakeable - only bundled if imported)\nexport { createOverlayService } from \"../../overlay/overlay.service.js\";\n// Service Worker (tree-shakeable — only bundled if imported)\nexport { createEmrouteSW } from \"../../service-worker/emroute.sw.js\";\nexport { CacheRuntime } from \"../../../runtime/cache.runtime.js\";\nexport { IdbRuntime } from \"../../../runtime/idb.runtime.js\";\n// Optional: Built-in widgets (tree-shakeable - only bundled if imported)\nexport { PageTitleWidget } from \"../../widget/page-title.widget.js\";\nexport { BreadcrumbWidget } from \"../../widget/breadcrumb.widget.js\";\n//# sourceMappingURL=mod.js.map"
|
|
37
36
|
],
|
|
38
|
-
"mappings": "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",
|
|
39
|
-
"debugId": "
|
|
37
|
+
"mappings": "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",
|
|
38
|
+
"debugId": "422168580B2E75DD64756E2164756E21",
|
|
40
39
|
"names": []
|
|
41
40
|
}
|