@emkodev/emroute 1.12.3 → 1.12.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/server/emroute.server.ts +20 -3
- package/dist/core/server/emroute.server.d.ts +14 -1
- package/dist/core/server/emroute.server.js +9 -2
- package/dist/core/server/emroute.server.js.map +1 -1
- package/dist/emroute.js +6 -11
- package/dist/emroute.js.map +5 -5
- package/dist/runtime/abstract.runtime.js +6 -8
- package/dist/runtime/abstract.runtime.js.map +1 -1
- package/dist/server/emroute.server.d.ts +1 -1
- package/dist/server/emroute.server.js.map +1 -1
- package/dist/src/renderer/spa/emroute.app.js +1 -0
- package/dist/src/renderer/spa/emroute.app.js.map +1 -1
- package/package.json +1 -1
- package/runtime/abstract.runtime.ts +6 -10
- package/server/emroute.server.ts +1 -1
- package/src/renderer/spa/emroute.app.ts +1 -0
package/dist/emroute.js.map
CHANGED
|
@@ -19,12 +19,12 @@
|
|
|
19
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",
|
|
20
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",
|
|
21
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",
|
|
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",
|
|
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 fullBasePath = config.basePath ?? DEFAULT_BASE_PATH;\n const shell = config.shell\n ? await config.shell({ runtime, spa, basePath: fullBasePath, title })\n : await Emroute.resolveShell(runtime, title, (spa === 'root' || spa === 'only') ? appBase : htmlBase, 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 /**\n * Build the default HTML shell by probing the runtime for optional assets\n * (/manifest.json, /main.css, /importmap.json, /app.js).\n * Public so consumers can call it from a custom `shell` function.\n */\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",
|
|
23
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",
|
|
24
24
|
"/**\n * JavaScript codegen utilities.\n */\n/** Escape backticks and ${} for safe embedding in a JS template literal. */\nexport function escapeTemplateLiteral(s) {\n return s.replace(/\\\\/g, '\\\\\\\\').replace(/`/g, '\\\\`').replace(/\\$\\{/g, '\\\\${');\n}\n//# sourceMappingURL=js.util.js.map",
|
|
25
|
-
"import { resolveTargetNode } from \"../core/util/route-tree.util.js\";\nimport { escapeTemplateLiteral } from \"../core/util/js.util.js\";\nexport const CONTENT_TYPES = new Map([\n ['.html', 'text/html; charset=utf-8'],\n ['.css', 'text/css; charset=utf-8'],\n ['.js', 'application/javascript; charset=utf-8'],\n ['.mjs', 'application/javascript; charset=utf-8'],\n ['.ts', 'text/typescript; charset=utf-8'],\n ['.json', 'application/json; charset=utf-8'],\n ['.md', 'text/plain; charset=utf-8'],\n ['.txt', 'text/plain; charset=utf-8'],\n ['.wasm', 'application/wasm'],\n ['.map', 'application/json; charset=utf-8'],\n ['.png', 'image/png'],\n ['.jpg', 'image/jpeg'],\n ['.jpeg', 'image/jpeg'],\n ['.gif', 'image/gif'],\n ['.svg', 'image/svg+xml'],\n ['.ico', 'image/x-icon'],\n ['.webp', 'image/webp'],\n ['.avif', 'image/avif'],\n ['.woff', 'font/woff'],\n ['.woff2', 'font/woff2'],\n ['.ttf', 'font/ttf'],\n]);\nexport const DEFAULT_ROUTES_DIR = '/routes';\nexport const DEFAULT_WIDGETS_DIR = '/widgets';\nexport const DEFAULT_ELEMENTS_DIR = '/elements';\nimport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH, } from \"../core/runtime/abstract.runtime.js\";\nexport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH };\n/**\n * Abstract resource provider. Speaks Request/Response (ADR-1).\n *\n * Three access patterns:\n * - `handle()` — raw passthrough, server forwards browser requests as-is.\n * - `query()` — read. Returns Response, or string when `{ as: \"text\" }`.\n * - `command()` — write (PUT by default, override with `{ method }` in options).\n *\n * Includes manifest resolution: when `query(ROUTES_MANIFEST_PATH)` or\n * `query(WIDGETS_MANIFEST_PATH)` returns 404, the runtime scans the\n * configured directories and caches the result.\n */\nexport class Runtime {\n config;\n constructor(config = {}) {\n this.config = config;\n this.config = config;\n }\n /** Write or delete. Defaults to PUT; pass `{ method: \"DELETE\" }` to remove. */\n command(resource, options) {\n const path = typeof resource === 'string'\n ? resource\n : new URL(resource instanceof Request ? resource.url : resource.toString()).pathname;\n const method = options?.method ?? 'PUT';\n const isDelete = method === 'DELETE';\n const result = this.handle(resource, { method, ...options });\n const routesDir = this.config.routesDir ?? DEFAULT_ROUTES_DIR;\n const widgetsDir = this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR;\n const elementsDir = this.config.elementsDir ?? DEFAULT_ELEMENTS_DIR;\n if (path.startsWith(routesDir + '/')) {\n return result.then(async (res) => {\n if (isDelete) {\n await this.pruneRouteFromManifest(path, routesDir);\n }\n else {\n await this.mergeRouteIntoManifest(path, routesDir);\n await this.retranspileIfNeeded(path, routesDir, 'route');\n }\n return res;\n });\n }\n if (path.startsWith(widgetsDir + '/')) {\n return result.then(async (res) => {\n if (isDelete) {\n await this.pruneWidgetFromManifest(path, widgetsDir);\n }\n else {\n await this.mergeWidgetIntoManifest(path, widgetsDir);\n await this.retranspileIfNeeded(path, widgetsDir, 'widget');\n }\n return res;\n });\n }\n if (path.startsWith(elementsDir + '/')) {\n return result.then(async (res) => {\n if (isDelete) {\n await this.pruneElementFromManifest(path, elementsDir);\n }\n else {\n await this.mergeElementIntoManifest(path, elementsDir);\n await this.retranspileIfNeeded(path, elementsDir, 'element');\n }\n return res;\n });\n }\n return result;\n }\n /**\n * Parse a single route file path and merge it into the stored manifest.\n * Avoids a full directory rescan — just reads the current manifest,\n * inserts the new entry, and writes it back.\n */\n async mergeRouteIntoManifest(filePath, routesDir) {\n const relativePath = filePath.slice(routesDir.length + 1);\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n const dirSegments = parts.slice(0, -1);\n const match = filename.match(/^(.+?)\\.(page|error|redirect)\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const kind = match[2];\n const ext = match[3];\n // Read current manifest (or start fresh)\n const response = await this.handle(ROUTES_MANIFEST_PATH);\n const tree = response.status === 404\n ? {}\n : await response.json();\n // Walk to the parent node\n let node = tree;\n for (const dir of dirSegments) {\n if (dir.startsWith('[') && dir.endsWith(']')) {\n const param = dir.slice(1, -1);\n node.dynamic ??= { param, child: {} };\n node = node.dynamic.child;\n }\n else {\n node.children ??= {};\n node.children[dir] ??= {};\n node = node.children[dir];\n }\n }\n // Place the file\n if (kind === 'error') {\n node.errorBoundary = filePath;\n }\n else {\n const target = resolveTargetNode(node, name, dirSegments.length === 0);\n if (kind === 'redirect') {\n target.redirect = filePath;\n }\n else {\n target.files ??= {};\n target.files[ext] = filePath;\n }\n }\n // Write updated manifest back\n this.routesManifestCache = null;\n await this.handle(ROUTES_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(tree),\n });\n }\n /**\n * Remove a route entry from the stored manifest when a file is deleted.\n * Walks the tree to find the node, clears the relevant field, then\n * prunes empty ancestor nodes.\n */\n async pruneRouteFromManifest(filePath, routesDir) {\n const relativePath = filePath.slice(routesDir.length + 1);\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n const dirSegments = parts.slice(0, -1);\n const match = filename.match(/^(.+?)\\.(page|error|redirect)\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const kind = match[2];\n const ext = match[3];\n const response = await this.handle(ROUTES_MANIFEST_PATH);\n if (response.status === 404)\n return;\n const tree = await response.json();\n // Walk to the parent node, tracking path for pruning\n const ancestors = [];\n let node = tree;\n for (const dir of dirSegments) {\n if (dir.startsWith('[') && dir.endsWith(']')) {\n if (!node.dynamic)\n return;\n ancestors.push({ node, key: dir, via: 'dynamic' });\n node = node.dynamic.child;\n }\n else {\n if (!node.children?.[dir])\n return;\n ancestors.push({ node, key: dir, via: 'children' });\n node = node.children[dir];\n }\n }\n // Clear the field\n if (kind === 'error') {\n if (node.errorBoundary === filePath)\n delete node.errorBoundary;\n }\n else {\n const isRoot = dirSegments.length === 0;\n const target = this.findTargetNode(node, name, isRoot);\n if (!target)\n return;\n if (kind === 'redirect') {\n if (target.redirect === filePath)\n delete target.redirect;\n }\n else {\n if (target.files?.[ext] === filePath) {\n delete target.files[ext];\n if (Object.keys(target.files).length === 0)\n delete target.files;\n }\n }\n // If target is a child node and now empty, remove it\n if (target !== node && this.isEmptyNode(target)) {\n if (name === 'index' && !isRoot) {\n delete node.wildcard;\n }\n else if (name.startsWith('[') && name.endsWith(']')) {\n delete node.dynamic;\n }\n else if (node.children) {\n delete node.children[name];\n if (Object.keys(node.children).length === 0)\n delete node.children;\n }\n }\n }\n // Prune empty ancestors bottom-up\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const { node: parent, key, via } = ancestors[i];\n const child = via === 'dynamic' ? parent.dynamic?.child : parent.children?.[key];\n if (child && this.isEmptyNode(child)) {\n if (via === 'dynamic') {\n delete parent.dynamic;\n }\n else if (parent.children) {\n delete parent.children[key];\n if (Object.keys(parent.children).length === 0)\n delete parent.children;\n }\n }\n }\n this.routesManifestCache = null;\n await this.handle(ROUTES_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(tree),\n });\n }\n /** Find a target node without creating it (read-only counterpart to resolveTargetNode). */\n findTargetNode(node, name, isRoot) {\n if (name === 'index') {\n return isRoot ? node : (node.wildcard?.child ?? null);\n }\n if (name.startsWith('[') && name.endsWith(']')) {\n return node.dynamic?.child ?? null;\n }\n return node.children?.[name] ?? null;\n }\n isEmptyNode(node) {\n return (!node.files &&\n !node.errorBoundary &&\n !node.redirect &&\n !node.children &&\n !node.dynamic &&\n !node.wildcard);\n }\n /**\n * Remove a widget entry from the stored manifest when a file is deleted.\n */\n async pruneWidgetFromManifest(filePath, widgetsDir) {\n const relativePath = filePath.slice(widgetsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return;\n const [dirName, filename] = parts;\n const match = filename.match(/^(.+?)\\.widget\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const ext = match[2];\n if (name !== dirName)\n return;\n const response = await this.handle(WIDGETS_MANIFEST_PATH);\n if (response.status === 404)\n return;\n const entries = await response.json();\n if (ext === 'ts' || ext === 'js') {\n // Module deleted → remove entire entry\n const idx = entries.findIndex((e) => e.name === name);\n if (idx === -1)\n return;\n entries.splice(idx, 1);\n }\n else {\n // Companion deleted → remove from files\n const entry = entries.find((e) => e.name === name);\n if (!entry?.files)\n return;\n delete entry.files[ext];\n if (Object.keys(entry.files).length === 0)\n delete entry.files;\n }\n this.widgetsManifestCache = null;\n await this.handle(WIDGETS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n /**\n * Remove an element entry from the stored manifest when a file is deleted.\n */\n async pruneElementFromManifest(filePath, elementsDir) {\n const relativePath = filePath.slice(elementsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return;\n const [dirName, filename] = parts;\n const match = filename.match(/^(.+?)\\.element\\.(ts|js)$/);\n if (!match)\n return;\n const name = match[1];\n if (name !== dirName)\n return;\n const response = await this.handle(ELEMENTS_MANIFEST_PATH);\n if (response.status === 404)\n return;\n const entries = await response.json();\n const idx = entries.findIndex((e) => e.name === name);\n if (idx === -1)\n return;\n entries.splice(idx, 1);\n this.elementsManifestCache = null;\n await this.handle(ELEMENTS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n /**\n * After a source or companion file is written, check if a built `.js`\n * artifact exists for that module. If so, re-transpile the `.ts` source\n * with companions inlined and write the `.js` back.\n *\n * Best-effort: silently skips if `transpile()` is not implemented.\n */\n async retranspileIfNeeded(filePath, dir, kind) {\n // Only act on source/companion files, not the .js output itself\n if (filePath.endsWith('.js'))\n return;\n const relativePath = filePath.slice(dir.length + 1);\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n // Determine the module base name and the .js output path\n let jsPath;\n if (kind === 'route') {\n const match = filename.match(/^(.+?)\\.(page)\\.(ts|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n jsPath = `${dir}/${parts.slice(0, -1).join('/')}${parts.length > 1 ? '/' : ''}${name}.page.js`;\n }\n else if (kind === 'widget') {\n const match = filename.match(/^(.+?)\\.(widget)\\.(ts|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n jsPath = `${dir}/${name}/${name}.widget.js`;\n }\n else {\n const match = filename.match(/^(.+?)\\.(element)\\.ts$/);\n if (!match)\n return;\n const name = match[1];\n jsPath = `${dir}/${name}/${name}.element.js`;\n }\n // Check if the .js artifact exists\n const jsResponse = await this.handle(jsPath);\n if (jsResponse.status === 404)\n return;\n // Read the .ts source\n const tsPath = jsPath.replace(/\\.js$/, '.ts');\n let tsSource;\n try {\n tsSource = await this.query(tsPath, { as: 'text' });\n }\n catch {\n return; // .ts doesn't exist (maybe .js was hand-written)\n }\n // Transpile and inline companions\n let jsCode;\n try {\n jsCode = await this.transpileModule(tsPath, tsSource);\n }\n catch {\n return; // transpile not implemented — skip silently\n }\n await this.handle(jsPath, { method: 'PUT', body: jsCode });\n }\n /**\n * Dynamically import a module from this runtime's storage.\n * Used by the server for SSR imports of `.page.ts` and `.widget.ts` files.\n */\n loadModule(_path) {\n throw new Error(`loadModule not implemented for ${this.constructor.name}`);\n }\n /**\n * Transpile TypeScript source to JavaScript.\n */\n transpile(_source) {\n throw new Error(`transpile not implemented for ${this.constructor.name}`);\n }\n /**\n * Transpile a .ts module and inline companion files (.html, .md, .css)\n * as `export const __files = { ... }`.\n *\n * This is the single implementation of the transpile+merge operation.\n * Used by concrete runtimes in their serving path (e.g. BunFsRuntime\n * intercepts .ts in read()) and by retranspileIfNeeded() to keep\n * pre-built .js artifacts in sync after command() writes.\n *\n * @param path Virtual path (e.g. \"/widgets/nav.widget.ts\")\n * @param source Raw TypeScript source\n */\n async transpileModule(path, source) {\n let js = await this.transpile(source);\n const basePath = path.replace(/\\.ts$/, '');\n const companions = ['html', 'md', 'css'];\n const entries = [];\n for (const ext of companions) {\n try {\n const content = await this.query(basePath + '.' + ext, { as: 'text' });\n entries.push(` ${ext}: \\`${escapeTemplateLiteral(content)}\\``);\n }\n catch {\n // companion doesn't exist\n }\n }\n if (entries.length > 0) {\n js += `\\nexport const __files = {\\n${entries.join(',\\n')}\\n};\\n`;\n }\n return js;\n }\n /**\n * Parse a widget file path and merge it into the stored manifest.\n * Reads the current manifest, upserts the entry, writes it back.\n */\n async mergeWidgetIntoManifest(filePath, widgetsDir) {\n const relativePath = filePath.slice(widgetsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return; // must be widgets/{name}/{file}\n const [dirName, filename] = parts;\n // Only act on .widget.{ts,js,html,md,css} files\n const match = filename.match(/^(.+?)\\.widget\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const ext = match[2];\n if (name !== dirName)\n return; // filename must match directory\n const response = await this.handle(WIDGETS_MANIFEST_PATH);\n const entries = response.status === 404\n ? []\n : await response.json();\n const prefix = widgetsDir.replace(/^\\//, '');\n if (ext === 'ts' || ext === 'js') {\n // Module file — upsert the entry\n let entry = entries.find((e) => e.name === name);\n if (!entry) {\n entry = {\n name,\n modulePath: `${prefix}/${name}/${filename}`,\n tagName: `widget-${name}`,\n };\n entries.push(entry);\n entries.sort((a, b) => a.name.localeCompare(b.name));\n }\n else {\n entry.modulePath = `${prefix}/${name}/${filename}`;\n }\n }\n else {\n // Companion file — update files on existing entry\n const entry = entries.find((e) => e.name === name);\n if (!entry)\n return; // no module yet, companion alone is not enough\n entry.files ??= {};\n entry.files[ext] = `${prefix}/${name}/${filename}`;\n }\n this.widgetsManifestCache = null;\n await this.handle(WIDGETS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n /**\n * Parse an element file path and merge it into the stored manifest.\n * Reads the current manifest, upserts the entry, writes it back.\n */\n async mergeElementIntoManifest(filePath, elementsDir) {\n const relativePath = filePath.slice(elementsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return;\n const [dirName, filename] = parts;\n const match = filename.match(/^(.+?)\\.element\\.(ts|js)$/);\n if (!match)\n return;\n const name = match[1];\n if (name !== dirName)\n return;\n // Custom element names must contain a hyphen\n if (!name.includes('-'))\n return;\n const response = await this.handle(ELEMENTS_MANIFEST_PATH);\n const entries = response.status === 404\n ? []\n : await response.json();\n const prefix = elementsDir.replace(/^\\//, '');\n let entry = entries.find((e) => e.name === name);\n if (!entry) {\n entry = {\n name,\n modulePath: `${prefix}/${name}/${filename}`,\n tagName: name,\n };\n entries.push(entry);\n entries.sort((a, b) => a.name.localeCompare(b.name));\n }\n else {\n entry.modulePath = `${prefix}/${name}/${filename}`;\n }\n this.elementsManifestCache = null;\n await this.handle(ELEMENTS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n // ── Manifest resolution ─────────────────────────────────────────────\n routesManifestCache = null;\n widgetsManifestCache = null;\n elementsManifestCache = null;\n /** Clear cached manifests so the next query triggers a fresh scan. */\n invalidateManifests() {\n this.routesManifestCache = null;\n this.widgetsManifestCache = null;\n this.elementsManifestCache = null;\n }\n /**\n * Resolve the routes manifest. Called when the concrete runtime returns\n * 404 for ROUTES_MANIFEST_PATH. Scans `config.routesDir` (or default).\n */\n async resolveRoutesManifest() {\n if (this.routesManifestCache)\n return this.routesManifestCache.clone();\n const routesDir = this.config.routesDir ?? DEFAULT_ROUTES_DIR;\n // Check if directory exists by querying it\n const dirResponse = await this.query(routesDir + '/');\n if (dirResponse.status === 404) {\n return new Response('Not Found', { status: 404 });\n }\n const tree = await this.scanRoutes(routesDir);\n this.routesManifestCache = Response.json(tree);\n return this.routesManifestCache.clone();\n }\n /**\n * Resolve the widgets manifest. Called when the concrete runtime returns\n * 404 for WIDGETS_MANIFEST_PATH. Scans `config.widgetsDir` (or default).\n */\n async resolveWidgetsManifest() {\n if (this.widgetsManifestCache)\n return this.widgetsManifestCache.clone();\n const widgetsDir = this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR;\n const dirResponse = await this.query(widgetsDir + '/');\n if (dirResponse.status === 404) {\n return new Response('Not Found', { status: 404 });\n }\n const entries = await this.scanWidgets(widgetsDir, widgetsDir.replace(/^\\//, ''));\n this.widgetsManifestCache = Response.json(entries);\n return this.widgetsManifestCache.clone();\n }\n /**\n * Resolve the elements manifest. Called when the concrete runtime returns\n * 404 for ELEMENTS_MANIFEST_PATH. Scans `config.elementsDir` (or default).\n */\n async resolveElementsManifest() {\n if (this.elementsManifestCache)\n return this.elementsManifestCache.clone();\n const elementsDir = this.config.elementsDir ?? DEFAULT_ELEMENTS_DIR;\n const dirResponse = await this.query(elementsDir + '/');\n if (dirResponse.status === 404) {\n return new Response('Not Found', { status: 404 });\n }\n const entries = await this.scanElements(elementsDir, elementsDir.replace(/^\\//, ''));\n this.elementsManifestCache = Response.json(entries);\n return this.elementsManifestCache.clone();\n }\n // ── Scanning ──────────────────────────────────────────────────────────\n async *walkDirectory(dir) {\n const trailingDir = dir.endsWith('/') ? dir : dir + '/';\n const response = await this.query(trailingDir);\n const entries = await response.json();\n for (const entry of entries) {\n const path = `${trailingDir}${entry}`;\n if (entry.endsWith('/')) {\n yield* this.walkDirectory(path);\n }\n else {\n yield path;\n }\n }\n }\n /**\n * Scan a routes directory and build a RouteNode tree.\n * The filesystem structure maps directly to the tree — no intermediate array.\n */\n async scanRoutes(routesDir) {\n const root = {};\n const allFiles = [];\n for await (const file of this.walkDirectory(routesDir)) {\n allFiles.push(file);\n }\n for (const filePath of allFiles) {\n const relativePath = filePath.replace(`${routesDir}/`, '');\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n const dirSegments = parts.slice(0, -1);\n // Parse filename: name.kind.ext (e.g. \"about.page.ts\", \"[id].page.html\", \"index.error.ts\")\n const match = filename.match(/^(.+?)\\.(page|error|redirect)\\.(ts|js|html|md|css)$/);\n if (!match)\n continue;\n const name = match[1];\n const kind = match[2];\n const ext = match[3];\n // Walk directory segments to reach the parent node\n let node = root;\n for (const dir of dirSegments) {\n if (dir.startsWith('[') && dir.endsWith(']')) {\n const param = dir.slice(1, -1);\n node.dynamic ??= { param, child: {} };\n node = node.dynamic.child;\n }\n else {\n node.children ??= {};\n node.children[dir] ??= {};\n node = node.children[dir];\n }\n }\n // Place the file on the correct node\n if (kind === 'error') {\n // Error boundary scopes to the directory it's in.\n // Root index.error.ts → root.errorBoundary (global handler).\n // projects/projects.error.ts → projects node errorBoundary.\n node.errorBoundary = filePath;\n continue;\n }\n // For page and redirect files, the name determines the final node\n const target = resolveTargetNode(node, name, dirSegments.length === 0);\n if (kind === 'redirect') {\n target.redirect = filePath;\n }\n else {\n // kind === 'page'\n target.files ??= {};\n target.files[ext] = filePath;\n }\n }\n return root;\n }\n async scanWidgets(widgetsDir, pathPrefix) {\n const COMPANION_EXTENSIONS = ['html', 'md', 'css'];\n const entries = [];\n const trailingDir = widgetsDir.endsWith('/') ? widgetsDir : widgetsDir + '/';\n const response = await this.query(trailingDir);\n const listing = await response.json();\n for (const item of listing) {\n if (!item.endsWith('/'))\n continue;\n const name = item.slice(0, -1);\n // Try .widget.ts first, then .widget.js\n let moduleFile = `${name}.widget.ts`;\n let modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404) {\n moduleFile = `${name}.widget.js`;\n modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404)\n continue;\n }\n const prefix = pathPrefix ? `${pathPrefix}/` : '';\n const entry = {\n name,\n modulePath: `${prefix}${name}/${moduleFile}`,\n tagName: `widget-${name}`,\n };\n const files = {};\n let hasFiles = false;\n const companionResults = await Promise.all(COMPANION_EXTENSIONS.map(async (ext) => {\n const companionFile = `${name}.widget.${ext}`;\n const companionPath = `${trailingDir}${name}/${companionFile}`;\n const exists = (await this.query(companionPath)).status !== 404;\n return { ext, exists, path: `${prefix}${name}/${companionFile}` };\n }));\n for (const { ext, exists, path } of companionResults) {\n if (exists) {\n files[ext] = path;\n hasFiles = true;\n }\n }\n if (hasFiles)\n entry.files = files;\n entries.push(entry);\n }\n entries.sort((a, b) => a.name.localeCompare(b.name));\n return entries;\n }\n async scanElements(elementsDir, pathPrefix) {\n const entries = [];\n const trailingDir = elementsDir.endsWith('/') ? elementsDir : elementsDir + '/';\n const response = await this.query(trailingDir);\n const listing = await response.json();\n for (const item of listing) {\n if (!item.endsWith('/'))\n continue;\n const name = item.slice(0, -1);\n // Custom element names must contain a hyphen (web spec requirement)\n if (!name.includes('-')) {\n console.warn(`[emroute] Skipping element \"${name}\": custom element names must contain a hyphen (e.g. \"my-element\")`);\n continue;\n }\n // Try .element.ts first, then .element.js\n let moduleFile = `${name}.element.ts`;\n let modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404) {\n moduleFile = `${name}.element.js`;\n modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404)\n continue;\n }\n const prefix = pathPrefix ? `${pathPrefix}/` : '';\n entries.push({\n name,\n modulePath: `${prefix}${name}/${moduleFile}`,\n tagName: name,\n });\n }\n entries.sort((a, b) => a.name.localeCompare(b.name));\n return entries;\n }\n}\n//# sourceMappingURL=abstract.runtime.js.map",
|
|
25
|
+
"import { resolveTargetNode } from \"../core/util/route-tree.util.js\";\nimport { escapeTemplateLiteral } from \"../core/util/js.util.js\";\nexport const CONTENT_TYPES = new Map([\n ['.html', 'text/html; charset=utf-8'],\n ['.css', 'text/css; charset=utf-8'],\n ['.js', 'application/javascript; charset=utf-8'],\n ['.mjs', 'application/javascript; charset=utf-8'],\n ['.ts', 'text/typescript; charset=utf-8'],\n ['.json', 'application/json; charset=utf-8'],\n ['.md', 'text/plain; charset=utf-8'],\n ['.txt', 'text/plain; charset=utf-8'],\n ['.wasm', 'application/wasm'],\n ['.map', 'application/json; charset=utf-8'],\n ['.png', 'image/png'],\n ['.jpg', 'image/jpeg'],\n ['.jpeg', 'image/jpeg'],\n ['.gif', 'image/gif'],\n ['.svg', 'image/svg+xml'],\n ['.ico', 'image/x-icon'],\n ['.webp', 'image/webp'],\n ['.avif', 'image/avif'],\n ['.woff', 'font/woff'],\n ['.woff2', 'font/woff2'],\n ['.ttf', 'font/ttf'],\n]);\nexport const DEFAULT_ROUTES_DIR = '/routes';\nexport const DEFAULT_WIDGETS_DIR = '/widgets';\nexport const DEFAULT_ELEMENTS_DIR = '/elements';\nimport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH, } from \"../core/runtime/abstract.runtime.js\";\nexport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH };\n/**\n * Abstract resource provider. Speaks Request/Response (ADR-1).\n *\n * Three access patterns:\n * - `handle()` — raw passthrough, server forwards browser requests as-is.\n * - `query()` — read. Returns Response, or string when `{ as: \"text\" }`.\n * - `command()` — write (PUT by default, override with `{ method }` in options).\n *\n * Includes manifest resolution: when `query(ROUTES_MANIFEST_PATH)` or\n * `query(WIDGETS_MANIFEST_PATH)` returns 404, the runtime scans the\n * configured directories and caches the result.\n */\nexport class Runtime {\n config;\n constructor(config = {}) {\n this.config = config;\n this.config = config;\n }\n /** Write or delete. Defaults to PUT; pass `{ method: \"DELETE\" }` to remove. */\n command(resource, options) {\n const path = typeof resource === 'string'\n ? resource\n : new URL(resource instanceof Request ? resource.url : resource.toString()).pathname;\n const method = options?.method ?? 'PUT';\n const isDelete = method === 'DELETE';\n const result = this.handle(resource, { method, ...options });\n const routesDir = this.config.routesDir ?? DEFAULT_ROUTES_DIR;\n const widgetsDir = this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR;\n const elementsDir = this.config.elementsDir ?? DEFAULT_ELEMENTS_DIR;\n if (path.startsWith(routesDir + '/')) {\n return result.then(async (res) => {\n if (isDelete) {\n await this.pruneRouteFromManifest(path, routesDir);\n }\n else {\n await this.mergeRouteIntoManifest(path, routesDir);\n await this.retranspileIfNeeded(path, routesDir, 'route');\n }\n return res;\n });\n }\n if (path.startsWith(widgetsDir + '/')) {\n return result.then(async (res) => {\n if (isDelete) {\n await this.pruneWidgetFromManifest(path, widgetsDir);\n }\n else {\n await this.mergeWidgetIntoManifest(path, widgetsDir);\n await this.retranspileIfNeeded(path, widgetsDir, 'widget');\n }\n return res;\n });\n }\n if (path.startsWith(elementsDir + '/')) {\n return result.then(async (res) => {\n if (isDelete) {\n await this.pruneElementFromManifest(path, elementsDir);\n }\n else {\n await this.mergeElementIntoManifest(path, elementsDir);\n await this.retranspileIfNeeded(path, elementsDir, 'element');\n }\n return res;\n });\n }\n return result;\n }\n /**\n * Parse a single route file path and merge it into the stored manifest.\n * Avoids a full directory rescan — just reads the current manifest,\n * inserts the new entry, and writes it back.\n */\n async mergeRouteIntoManifest(filePath, routesDir) {\n const relativePath = filePath.slice(routesDir.length + 1);\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n const dirSegments = parts.slice(0, -1);\n const match = filename.match(/^(.+?)\\.(page|error|redirect)\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const kind = match[2];\n const ext = match[3];\n // Read current manifest (or start fresh)\n const response = await this.handle(ROUTES_MANIFEST_PATH);\n const tree = response.status === 404\n ? {}\n : await response.json();\n // Walk to the parent node\n let node = tree;\n for (const dir of dirSegments) {\n if (dir.startsWith('[') && dir.endsWith(']')) {\n const param = dir.slice(1, -1);\n node.dynamic ??= { param, child: {} };\n node = node.dynamic.child;\n }\n else {\n node.children ??= {};\n node.children[dir] ??= {};\n node = node.children[dir];\n }\n }\n // Place the file\n if (kind === 'error') {\n node.errorBoundary = filePath;\n }\n else {\n const target = resolveTargetNode(node, name, dirSegments.length === 0);\n if (kind === 'redirect') {\n target.redirect = filePath;\n }\n else {\n target.files ??= {};\n target.files[ext] = filePath;\n }\n }\n // Write updated manifest back\n this.routesManifestCache = null;\n await this.handle(ROUTES_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(tree),\n });\n }\n /**\n * Remove a route entry from the stored manifest when a file is deleted.\n * Walks the tree to find the node, clears the relevant field, then\n * prunes empty ancestor nodes.\n */\n async pruneRouteFromManifest(filePath, routesDir) {\n const relativePath = filePath.slice(routesDir.length + 1);\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n const dirSegments = parts.slice(0, -1);\n const match = filename.match(/^(.+?)\\.(page|error|redirect)\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const kind = match[2];\n const ext = match[3];\n const response = await this.handle(ROUTES_MANIFEST_PATH);\n if (response.status === 404)\n return;\n const tree = await response.json();\n // Walk to the parent node, tracking path for pruning\n const ancestors = [];\n let node = tree;\n for (const dir of dirSegments) {\n if (dir.startsWith('[') && dir.endsWith(']')) {\n if (!node.dynamic)\n return;\n ancestors.push({ node, key: dir, via: 'dynamic' });\n node = node.dynamic.child;\n }\n else {\n if (!node.children?.[dir])\n return;\n ancestors.push({ node, key: dir, via: 'children' });\n node = node.children[dir];\n }\n }\n // Clear the field\n if (kind === 'error') {\n if (node.errorBoundary === filePath)\n delete node.errorBoundary;\n }\n else {\n const isRoot = dirSegments.length === 0;\n const target = this.findTargetNode(node, name, isRoot);\n if (!target)\n return;\n if (kind === 'redirect') {\n if (target.redirect === filePath)\n delete target.redirect;\n }\n else {\n if (target.files?.[ext] === filePath) {\n delete target.files[ext];\n if (Object.keys(target.files).length === 0)\n delete target.files;\n }\n }\n // If target is a child node and now empty, remove it\n if (target !== node && this.isEmptyNode(target)) {\n if (name === 'index' && !isRoot) {\n delete node.wildcard;\n }\n else if (name.startsWith('[') && name.endsWith(']')) {\n delete node.dynamic;\n }\n else if (node.children) {\n delete node.children[name];\n if (Object.keys(node.children).length === 0)\n delete node.children;\n }\n }\n }\n // Prune empty ancestors bottom-up\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const { node: parent, key, via } = ancestors[i];\n const child = via === 'dynamic' ? parent.dynamic?.child : parent.children?.[key];\n if (child && this.isEmptyNode(child)) {\n if (via === 'dynamic') {\n delete parent.dynamic;\n }\n else if (parent.children) {\n delete parent.children[key];\n if (Object.keys(parent.children).length === 0)\n delete parent.children;\n }\n }\n }\n this.routesManifestCache = null;\n await this.handle(ROUTES_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(tree),\n });\n }\n /** Find a target node without creating it (read-only counterpart to resolveTargetNode). */\n findTargetNode(node, name, isRoot) {\n if (name === 'index') {\n return isRoot ? node : (node.wildcard?.child ?? null);\n }\n if (name.startsWith('[') && name.endsWith(']')) {\n return node.dynamic?.child ?? null;\n }\n return node.children?.[name] ?? null;\n }\n isEmptyNode(node) {\n return (!node.files &&\n !node.errorBoundary &&\n !node.redirect &&\n !node.children &&\n !node.dynamic &&\n !node.wildcard);\n }\n /**\n * Remove a widget entry from the stored manifest when a file is deleted.\n */\n async pruneWidgetFromManifest(filePath, widgetsDir) {\n const relativePath = filePath.slice(widgetsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return;\n const [dirName, filename] = parts;\n const match = filename.match(/^(.+?)\\.widget\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const ext = match[2];\n if (name !== dirName)\n return;\n const response = await this.handle(WIDGETS_MANIFEST_PATH);\n if (response.status === 404)\n return;\n const entries = await response.json();\n if (ext === 'ts' || ext === 'js') {\n // Module deleted → remove entire entry\n const idx = entries.findIndex((e) => e.name === name);\n if (idx === -1)\n return;\n entries.splice(idx, 1);\n }\n else {\n // Companion deleted → remove from files\n const entry = entries.find((e) => e.name === name);\n if (!entry?.files)\n return;\n delete entry.files[ext];\n if (Object.keys(entry.files).length === 0)\n delete entry.files;\n }\n this.widgetsManifestCache = null;\n await this.handle(WIDGETS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n /**\n * Remove an element entry from the stored manifest when a file is deleted.\n */\n async pruneElementFromManifest(filePath, elementsDir) {\n const relativePath = filePath.slice(elementsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return;\n const [dirName, filename] = parts;\n const match = filename.match(/^(.+?)\\.element\\.(ts|js)$/);\n if (!match)\n return;\n const name = match[1];\n if (name !== dirName)\n return;\n const response = await this.handle(ELEMENTS_MANIFEST_PATH);\n if (response.status === 404)\n return;\n const entries = await response.json();\n const idx = entries.findIndex((e) => e.name === name);\n if (idx === -1)\n return;\n entries.splice(idx, 1);\n this.elementsManifestCache = null;\n await this.handle(ELEMENTS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n /**\n * After a source or companion file is written, check if a built `.js`\n * artifact exists for that module. If so, re-transpile the `.ts` source\n * with companions inlined and write the `.js` back.\n *\n * Best-effort: silently skips if `transpile()` is not implemented.\n */\n async retranspileIfNeeded(filePath, dir, kind) {\n // Only act on source/companion files, not the .js output itself\n if (filePath.endsWith('.js'))\n return;\n const relativePath = filePath.slice(dir.length + 1);\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n // Determine the module base name and the .js output path\n let jsPath;\n if (kind === 'route') {\n const match = filename.match(/^(.+?)\\.(page)\\.(ts|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n jsPath = `${dir}/${parts.slice(0, -1).join('/')}${parts.length > 1 ? '/' : ''}${name}.page.js`;\n }\n else if (kind === 'widget') {\n const match = filename.match(/^(.+?)\\.(widget)\\.(ts|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n jsPath = `${dir}/${name}/${name}.widget.js`;\n }\n else {\n const match = filename.match(/^(.+?)\\.(element)\\.ts$/);\n if (!match)\n return;\n const name = match[1];\n jsPath = `${dir}/${name}/${name}.element.js`;\n }\n // Check if the .js artifact exists\n const jsResponse = await this.handle(jsPath);\n if (jsResponse.status === 404)\n return;\n // Read the .ts source\n const tsPath = jsPath.replace(/\\.js$/, '.ts');\n let tsSource;\n try {\n tsSource = await this.query(tsPath, { as: 'text' });\n }\n catch {\n return; // .ts doesn't exist (maybe .js was hand-written)\n }\n // Transpile and inline companions\n let jsCode;\n try {\n jsCode = await this.transpileModule(tsPath, tsSource);\n }\n catch {\n return; // transpile not implemented — skip silently\n }\n await this.handle(jsPath, { method: 'PUT', body: jsCode });\n }\n /**\n * Dynamically import a module from this runtime's storage.\n * Used by the server for SSR imports of `.page.ts` and `.widget.ts` files.\n */\n loadModule(_path) {\n throw new Error(`loadModule not implemented for ${this.constructor.name}`);\n }\n /**\n * Transpile TypeScript source to JavaScript.\n */\n transpile(_source) {\n throw new Error(`transpile not implemented for ${this.constructor.name}`);\n }\n /**\n * Transpile a .ts module and inline companion files (.html, .md, .css)\n * as `export const __files = { ... }`.\n *\n * This is the single implementation of the transpile+merge operation.\n * Used by concrete runtimes in their serving path (e.g. BunFsRuntime\n * intercepts .ts in read()) and by retranspileIfNeeded() to keep\n * pre-built .js artifacts in sync after command() writes.\n *\n * @param path Virtual path (e.g. \"/widgets/nav.widget.ts\")\n * @param source Raw TypeScript source\n */\n async transpileModule(path, source) {\n let js = await this.transpile(source);\n const basePath = path.replace(/\\.ts$/, '');\n const companions = ['html', 'md', 'css'];\n const entries = [];\n for (const ext of companions) {\n try {\n const content = await this.query(basePath + '.' + ext, { as: 'text' });\n entries.push(` ${ext}: \\`${escapeTemplateLiteral(content)}\\``);\n }\n catch {\n // companion doesn't exist\n }\n }\n if (entries.length > 0) {\n js += `\\nexport const __files = {\\n${entries.join(',\\n')}\\n};\\n`;\n }\n return js;\n }\n /**\n * Parse a widget file path and merge it into the stored manifest.\n * Reads the current manifest, upserts the entry, writes it back.\n */\n async mergeWidgetIntoManifest(filePath, widgetsDir) {\n const relativePath = filePath.slice(widgetsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return; // must be widgets/{name}/{file}\n const [dirName, filename] = parts;\n // Only act on .widget.{ts,js,html,md,css} files\n const match = filename.match(/^(.+?)\\.widget\\.(ts|js|html|md|css)$/);\n if (!match)\n return;\n const name = match[1];\n const ext = match[2];\n if (name !== dirName)\n return; // filename must match directory\n const response = await this.handle(WIDGETS_MANIFEST_PATH);\n const entries = response.status === 404\n ? []\n : await response.json();\n const prefix = widgetsDir.replace(/^\\//, '');\n if (ext === 'ts' || ext === 'js') {\n // Module file — upsert the entry\n let entry = entries.find((e) => e.name === name);\n if (!entry) {\n entry = {\n name,\n modulePath: `${prefix}/${name}/${filename}`,\n tagName: `widget-${name}`,\n };\n entries.push(entry);\n entries.sort((a, b) => a.name.localeCompare(b.name));\n }\n else {\n entry.modulePath = `${prefix}/${name}/${filename}`;\n }\n }\n else {\n // Companion file — update files on existing entry\n const entry = entries.find((e) => e.name === name);\n if (!entry)\n return; // no module yet, companion alone is not enough\n entry.files ??= {};\n entry.files[ext] = `${prefix}/${name}/${filename}`;\n }\n this.widgetsManifestCache = null;\n await this.handle(WIDGETS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n /**\n * Parse an element file path and merge it into the stored manifest.\n * Reads the current manifest, upserts the entry, writes it back.\n */\n async mergeElementIntoManifest(filePath, elementsDir) {\n const relativePath = filePath.slice(elementsDir.length + 1);\n const parts = relativePath.split('/');\n if (parts.length !== 2)\n return;\n const [dirName, filename] = parts;\n const match = filename.match(/^(.+?)\\.element\\.(ts|js)$/);\n if (!match)\n return;\n const name = match[1];\n if (name !== dirName)\n return;\n // Custom element names must contain a hyphen\n if (!name.includes('-'))\n return;\n const response = await this.handle(ELEMENTS_MANIFEST_PATH);\n const entries = response.status === 404\n ? []\n : await response.json();\n const prefix = elementsDir.replace(/^\\//, '');\n let entry = entries.find((e) => e.name === name);\n if (!entry) {\n entry = {\n name,\n modulePath: `${prefix}/${name}/${filename}`,\n tagName: name,\n };\n entries.push(entry);\n entries.sort((a, b) => a.name.localeCompare(b.name));\n }\n else {\n entry.modulePath = `${prefix}/${name}/${filename}`;\n }\n this.elementsManifestCache = null;\n await this.handle(ELEMENTS_MANIFEST_PATH, {\n method: 'PUT',\n body: JSON.stringify(entries),\n });\n }\n // ── Manifest resolution ─────────────────────────────────────────────\n routesManifestCache = null;\n widgetsManifestCache = null;\n elementsManifestCache = null;\n /** Clear cached manifests so the next query triggers a fresh scan. */\n invalidateManifests() {\n this.routesManifestCache = null;\n this.widgetsManifestCache = null;\n this.elementsManifestCache = null;\n }\n /**\n * Resolve the routes manifest. Called when the concrete runtime returns\n * 404 for ROUTES_MANIFEST_PATH. Scans `config.routesDir` (or default).\n */\n async resolveRoutesManifest() {\n if (this.routesManifestCache)\n return this.routesManifestCache.clone();\n const routesDir = this.config.routesDir ?? DEFAULT_ROUTES_DIR;\n // Check if directory exists by querying it\n const dirResponse = await this.query(routesDir + '/');\n if (dirResponse.status === 404) {\n return new Response('Not Found', { status: 404 });\n }\n const tree = await this.scanRoutes(routesDir);\n this.routesManifestCache = Response.json(tree);\n return this.routesManifestCache.clone();\n }\n /**\n * Resolve the widgets manifest. Called when the concrete runtime returns\n * 404 for WIDGETS_MANIFEST_PATH. Scans `config.widgetsDir` (or default).\n */\n async resolveWidgetsManifest() {\n if (this.widgetsManifestCache)\n return this.widgetsManifestCache.clone();\n const widgetsDir = this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR;\n const dirResponse = await this.query(widgetsDir + '/');\n const entries = dirResponse.status === 404\n ? []\n : await this.scanWidgets(widgetsDir, widgetsDir.replace(/^\\//, ''));\n this.widgetsManifestCache = Response.json(entries);\n return this.widgetsManifestCache.clone();\n }\n /**\n * Resolve the elements manifest. Called when the concrete runtime returns\n * 404 for ELEMENTS_MANIFEST_PATH. Scans `config.elementsDir` (or default).\n */\n async resolveElementsManifest() {\n if (this.elementsManifestCache)\n return this.elementsManifestCache.clone();\n const elementsDir = this.config.elementsDir ?? DEFAULT_ELEMENTS_DIR;\n const dirResponse = await this.query(elementsDir + '/');\n const entries = dirResponse.status === 404\n ? []\n : await this.scanElements(elementsDir, elementsDir.replace(/^\\//, ''));\n this.elementsManifestCache = Response.json(entries);\n return this.elementsManifestCache.clone();\n }\n // ── Scanning ──────────────────────────────────────────────────────────\n async *walkDirectory(dir) {\n const trailingDir = dir.endsWith('/') ? dir : dir + '/';\n const response = await this.query(trailingDir);\n const entries = await response.json();\n for (const entry of entries) {\n const path = `${trailingDir}${entry}`;\n if (entry.endsWith('/')) {\n yield* this.walkDirectory(path);\n }\n else {\n yield path;\n }\n }\n }\n /**\n * Scan a routes directory and build a RouteNode tree.\n * The filesystem structure maps directly to the tree — no intermediate array.\n */\n async scanRoutes(routesDir) {\n const root = {};\n const allFiles = [];\n for await (const file of this.walkDirectory(routesDir)) {\n allFiles.push(file);\n }\n for (const filePath of allFiles) {\n const relativePath = filePath.replace(`${routesDir}/`, '');\n const parts = relativePath.split('/');\n const filename = parts[parts.length - 1];\n const dirSegments = parts.slice(0, -1);\n // Parse filename: name.kind.ext (e.g. \"about.page.ts\", \"[id].page.html\", \"index.error.ts\")\n const match = filename.match(/^(.+?)\\.(page|error|redirect)\\.(ts|js|html|md|css)$/);\n if (!match)\n continue;\n const name = match[1];\n const kind = match[2];\n const ext = match[3];\n // Walk directory segments to reach the parent node\n let node = root;\n for (const dir of dirSegments) {\n if (dir.startsWith('[') && dir.endsWith(']')) {\n const param = dir.slice(1, -1);\n node.dynamic ??= { param, child: {} };\n node = node.dynamic.child;\n }\n else {\n node.children ??= {};\n node.children[dir] ??= {};\n node = node.children[dir];\n }\n }\n // Place the file on the correct node\n if (kind === 'error') {\n // Error boundary scopes to the directory it's in.\n // Root index.error.ts → root.errorBoundary (global handler).\n // projects/projects.error.ts → projects node errorBoundary.\n node.errorBoundary = filePath;\n continue;\n }\n // For page and redirect files, the name determines the final node\n const target = resolveTargetNode(node, name, dirSegments.length === 0);\n if (kind === 'redirect') {\n target.redirect = filePath;\n }\n else {\n // kind === 'page'\n target.files ??= {};\n target.files[ext] = filePath;\n }\n }\n return root;\n }\n async scanWidgets(widgetsDir, pathPrefix) {\n const COMPANION_EXTENSIONS = ['html', 'md', 'css'];\n const entries = [];\n const trailingDir = widgetsDir.endsWith('/') ? widgetsDir : widgetsDir + '/';\n const response = await this.query(trailingDir);\n const listing = await response.json();\n for (const item of listing) {\n if (!item.endsWith('/'))\n continue;\n const name = item.slice(0, -1);\n // Try .widget.ts first, then .widget.js\n let moduleFile = `${name}.widget.ts`;\n let modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404) {\n moduleFile = `${name}.widget.js`;\n modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404)\n continue;\n }\n const prefix = pathPrefix ? `${pathPrefix}/` : '';\n const entry = {\n name,\n modulePath: `${prefix}${name}/${moduleFile}`,\n tagName: `widget-${name}`,\n };\n const files = {};\n let hasFiles = false;\n const companionResults = await Promise.all(COMPANION_EXTENSIONS.map(async (ext) => {\n const companionFile = `${name}.widget.${ext}`;\n const companionPath = `${trailingDir}${name}/${companionFile}`;\n const exists = (await this.query(companionPath)).status !== 404;\n return { ext, exists, path: `${prefix}${name}/${companionFile}` };\n }));\n for (const { ext, exists, path } of companionResults) {\n if (exists) {\n files[ext] = path;\n hasFiles = true;\n }\n }\n if (hasFiles)\n entry.files = files;\n entries.push(entry);\n }\n entries.sort((a, b) => a.name.localeCompare(b.name));\n return entries;\n }\n async scanElements(elementsDir, pathPrefix) {\n const entries = [];\n const trailingDir = elementsDir.endsWith('/') ? elementsDir : elementsDir + '/';\n const response = await this.query(trailingDir);\n const listing = await response.json();\n for (const item of listing) {\n if (!item.endsWith('/'))\n continue;\n const name = item.slice(0, -1);\n // Custom element names must contain a hyphen (web spec requirement)\n if (!name.includes('-')) {\n console.warn(`[emroute] Skipping element \"${name}\": custom element names must contain a hyphen (e.g. \"my-element\")`);\n continue;\n }\n // Try .element.ts first, then .element.js\n let moduleFile = `${name}.element.ts`;\n let modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404) {\n moduleFile = `${name}.element.js`;\n modulePath = `${trailingDir}${name}/${moduleFile}`;\n if ((await this.query(modulePath)).status === 404)\n continue;\n }\n const prefix = pathPrefix ? `${pathPrefix}/` : '';\n entries.push({\n name,\n modulePath: `${prefix}${name}/${moduleFile}`,\n tagName: name,\n });\n }\n entries.sort((a, b) => a.name.localeCompare(b.name));\n return entries;\n }\n}\n//# sourceMappingURL=abstract.runtime.js.map",
|
|
26
26
|
"/**\n * Fetch Runtime\n *\n * Browser-compatible Runtime that delegates all reads to a remote server\n * via `fetch()`. Used by EmrouteApp in `root` mode — same Emroute\n * instance runs in the browser, but the Runtime fetches files from the\n * real server instead of reading from disk.\n *\n * No bundling, no transpiling, no filesystem access.\n * No directory scanning — the remote server already has manifests.\n */\nvar __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n};\nimport { Runtime, } from \"./abstract.runtime.js\";\nexport class FetchRuntime extends Runtime {\n origin;\n /**\n * @param origin — Server origin, e.g. `'http://localhost:4100'` or `location.origin`.\n */\n constructor(origin, config = {}) {\n super(config);\n this.origin = origin.endsWith('/') ? origin.slice(0, -1) : origin;\n }\n handle(resource, init) {\n const url = this.toUrl(resource);\n return fetch(url, init);\n }\n query(resource, options) {\n if (options?.as === 'text') {\n return fetch(this.toUrl(resource)).then((r) => r.text());\n }\n return this.handle(resource, options);\n }\n async loadModule(path) {\n const url = `${this.origin}${path}`;\n const response = await fetch(url);\n const js = await response.text();\n const blob = new Blob([js], { type: 'application/javascript' });\n const objectUrl = URL.createObjectURL(blob);\n try {\n return await import(__rewriteRelativeImportExtension(objectUrl));\n }\n finally {\n URL.revokeObjectURL(objectUrl);\n }\n }\n toUrl(resource) {\n if (typeof resource === 'string')\n return `${this.origin}${resource}`;\n if (resource instanceof URL)\n return `${this.origin}${resource.pathname}${resource.search}`;\n return `${this.origin}${new URL(resource.url).pathname}`;\n }\n}\n//# sourceMappingURL=fetch.runtime.js.map",
|
|
27
|
-
"/// <reference path=\"../../type/navigation-api.d.ts\" />\n/**\n * Emroute App\n *\n * Browser entry point for `/app/` routes. Wraps an Emroute instance\n * (same server, same pipeline) with Navigation API glue that intercepts\n * link clicks, calls `htmlRouter.render()`, and injects the result.\n */\nimport { Emroute } from \"../../../core/server/emroute.server.js\";\nimport { FetchRuntime } from \"../../../runtime/fetch.runtime.js\";\nimport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH } from \"../../../core/runtime/abstract.runtime.js\";\nimport { DEFAULT_BASE_PATH } from \"../../../core/server/emroute.server.js\";\nimport { assertSafeRedirect, escapeHtml } from \"../../../core/util/html.util.js\";\nimport { ComponentElement } from \"../../element/component.element.js\";\nimport { MarkdownElement } from \"../../element/markdown.element.js\";\n/** Browser app — Navigation API wired to an Emroute. */\nexport class EmrouteApp {\n server;\n appBase;\n slot = null;\n abortController = null;\n constructor(server, options) {\n this.server = server;\n if (options?.basePath) {\n this.appBase = options.basePath.app;\n }\n else if (typeof document !== 'undefined') {\n const base = document.querySelector('base')?.getAttribute('href');\n this.appBase = base ? base.replace(/\\/$/, '') : DEFAULT_BASE_PATH.app;\n }\n else {\n this.appBase = DEFAULT_BASE_PATH.app;\n }\n }\n async initialize(slotSelector = 'router-slot') {\n this.slot = document.querySelector(slotSelector);\n if (!this.slot) {\n console.error('[EmrouteApp] Slot not found:', slotSelector);\n return;\n }\n if (!('navigation' in globalThis)) {\n console.warn('[EmrouteApp] Navigation API not available');\n return;\n }\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n navigation.addEventListener('navigate', (event) => {\n if (!event.canIntercept)\n return;\n if (event.hashChange)\n return;\n if (event.downloadRequest !== null)\n return;\n const url = new URL(event.destination.url);\n if (!this.isAppPath(url.pathname))\n return;\n event.intercept({\n scroll: 'manual',\n handler: async () => {\n await this.handleNavigation(url, event.signal);\n event.scroll();\n },\n });\n }, { signal });\n // SSR adoption — server already rendered this page, skip re-render\n const ssrRoute = this.slot.getAttribute('data-ssr-route');\n if (ssrRoute && (location.pathname === ssrRoute || location.pathname === ssrRoute + '/')) {\n this.slot.removeAttribute('data-ssr-route');\n return;\n }\n // Initial render\n await this.handleNavigation(new URL(location.href), this.abortController.signal);\n }\n dispose() {\n this.abortController?.abort();\n this.abortController = null;\n this.slot = null;\n }\n async navigate(url, options = {}) {\n try {\n const { finished } = navigation.navigate(url, {\n state: options.state,\n history: options.replace ? 'replace' : 'auto',\n });\n await finished;\n }\n catch (e) {\n if (e instanceof DOMException && e.name === 'AbortError')\n return;\n throw e;\n }\n }\n isAppPath(pathname) {\n return pathname === this.appBase || pathname.startsWith(this.appBase + '/');\n }\n stripAppBase(pathname) {\n if (pathname === this.appBase)\n return '/';\n if (pathname.startsWith(this.appBase + '/'))\n return pathname.slice(this.appBase.length);\n return pathname;\n }\n async handleNavigation(url, signal) {\n if (!this.slot || !this.server.htmlRenderer)\n return;\n const routePath = this.stripAppBase(url.pathname);\n const routeUrl = new URL(routePath + url.search, url.origin);\n try {\n const { content, title, redirect } = await this.server.htmlRenderer.render(routeUrl, signal);\n if (signal.aborted)\n return;\n if (redirect) {\n assertSafeRedirect(redirect);\n const target = redirect.startsWith('/') ? this.appBase + redirect : redirect;\n navigation.navigate(target, { history: 'replace' });\n return;\n }\n if (document.startViewTransition) {\n const transition = document.startViewTransition(() => {\n this.slot.setHTMLUnsafe(content);\n });\n signal.addEventListener('abort', () => transition.skipTransition(), { once: true });\n await transition.updateCallbackDone;\n }\n else {\n this.slot.setHTMLUnsafe(content);\n }\n if (title)\n document.title = title;\n }\n catch (error) {\n if (signal.aborted)\n return;\n console.error('[EmrouteApp] Navigation error:', error);\n if (this.slot) {\n const message = error instanceof Error ? error.message : String(error);\n this.slot.setHTMLUnsafe(`<h1>Error</h1><p>${escapeHtml(message)}</p>`);\n }\n }\n }\n}\n/**\n * Create and initialize the browser app.\n *\n * Stored on `globalThis.__emroute_app` for programmatic access.\n */\nexport async function createEmrouteApp(server, options) {\n const g = globalThis;\n if (g.__emroute_app) {\n console.warn('eMroute: App already initialized.');\n return g.__emroute_app;\n }\n const app = new EmrouteApp(server, options);\n await app.initialize();\n g.__emroute_app = app;\n return app;\n}\n/**\n * Boot the browser app from runtime manifests.\n *\n * Fetches route tree and widget manifest as JSON, creates lazy module\n * loaders via FetchRuntime, registers widgets for deferred hydration,\n * and wires the Navigation API.\n *\n * Consumer `main.ts` calls this after setting up MarkdownElement renderer,\n * custom elements, etc.\n */\nexport async function bootEmrouteApp(options) {\n const origin = options?.origin ?? location.origin;\n const runtime = new FetchRuntime(origin);\n // Fetch route tree\n const routesResponse = await runtime.handle(ROUTES_MANIFEST_PATH);\n if (!routesResponse.ok) {\n throw new Error(`[emroute] Failed to fetch ${ROUTES_MANIFEST_PATH}: ${routesResponse.status}`);\n }\n const routeTree = await routesResponse.json();\n // Fetch widget manifest (optional — app may have no widgets)\n const widgetsResponse = await runtime.handle(WIDGETS_MANIFEST_PATH);\n const widgetEntries = widgetsResponse.ok\n ? await widgetsResponse.json()\n : [];\n // Fetch element manifest (optional — app may have no custom elements)\n const elementsResponse = await runtime.handle(ELEMENTS_MANIFEST_PATH);\n const elementEntries = elementsResponse.ok\n ? await elementsResponse.json()\n : [];\n // Build lazy module loaders for all route + widget + element modules\n const moduleLoaders = buildLazyLoaders(routeTree, widgetEntries, elementEntries, runtime);\n // Register widgets in DOM (module loads on connectedCallback for hydration).\n for (const entry of widgetEntries) {\n ComponentElement.registerLazy(entry.name, moduleLoaders[entry.modulePath]);\n }\n // Register custom elements — import all modules, define when loaded\n for (const entry of elementEntries) {\n const loader = moduleLoaders[entry.modulePath];\n if (loader) {\n loader().then((mod) => {\n const cls = mod.default;\n if (typeof cls === 'function' && !customElements.get(entry.tagName)) {\n customElements.define(entry.tagName, cls);\n }\n }).catch((e) => {\n console.error(`[emroute] Failed to load element ${entry.tagName}:`, e);\n });\n }\n }\n // Wire context provider for both pages (Pipeline) and widgets (ComponentElement)\n if (options?.extendContext) {\n ComponentElement.setContextProvider(options.extendContext);\n }\n // Create Emroute instance (same class as SSR)\n const mdRenderer = MarkdownElement.getConfiguredRenderer();\n const server = await Emroute.create({\n routeTree,\n moduleLoaders,\n ...(mdRenderer ? { markdownRenderer: mdRenderer } : {}),\n ...(options?.extendContext ? { extendContext: options.extendContext } : {}),\n }, runtime);\n return createEmrouteApp(server, options);\n}\n/**\n * Walk the route tree, widget entries, and element entries to build a map of\n * `path → () => runtime.loadModule(path)` lazy loaders.\n */\nfunction buildLazyLoaders(tree, widgetEntries, elementEntries, runtime) {\n const paths = new Set();\n function walk(node) {\n const modulePath = node.files?.ts ?? node.files?.js;\n if (modulePath)\n paths.add(modulePath);\n if (node.redirect)\n paths.add(node.redirect);\n if (node.errorBoundary)\n paths.add(node.errorBoundary);\n if (node.children) {\n for (const child of Object.values(node.children))\n walk(child);\n }\n if (node.dynamic)\n walk(node.dynamic.child);\n if (node.wildcard)\n walk(node.wildcard.child);\n }\n walk(tree);\n for (const entry of widgetEntries)\n paths.add(entry.modulePath);\n for (const entry of elementEntries)\n paths.add(entry.modulePath);\n const loaders = {};\n for (const path of paths) {\n const absolute = path.startsWith('/') ? path : '/' + path;\n loaders[path] = () => runtime.loadModule(absolute);\n }\n return loaders;\n}\n//# sourceMappingURL=emroute.app.js.map",
|
|
27
|
+
"/// <reference path=\"../../type/navigation-api.d.ts\" />\n/**\n * Emroute App\n *\n * Browser entry point for `/app/` routes. Wraps an Emroute instance\n * (same server, same pipeline) with Navigation API glue that intercepts\n * link clicks, calls `htmlRouter.render()`, and injects the result.\n */\nimport { Emroute } from \"../../../core/server/emroute.server.js\";\nimport { FetchRuntime } from \"../../../runtime/fetch.runtime.js\";\nimport { ROUTES_MANIFEST_PATH, WIDGETS_MANIFEST_PATH, ELEMENTS_MANIFEST_PATH } from \"../../../core/runtime/abstract.runtime.js\";\nimport { DEFAULT_BASE_PATH } from \"../../../core/server/emroute.server.js\";\nimport { assertSafeRedirect, escapeHtml } from \"../../../core/util/html.util.js\";\nimport { ComponentElement } from \"../../element/component.element.js\";\nimport { MarkdownElement } from \"../../element/markdown.element.js\";\n/** Browser app — Navigation API wired to an Emroute. */\nexport class EmrouteApp {\n server;\n appBase;\n slot = null;\n abortController = null;\n constructor(server, options) {\n this.server = server;\n if (options?.basePath) {\n this.appBase = options.basePath.app;\n }\n else if (typeof document !== 'undefined') {\n const base = document.querySelector('base')?.getAttribute('href');\n this.appBase = base ? base.replace(/\\/$/, '') : DEFAULT_BASE_PATH.app;\n }\n else {\n this.appBase = DEFAULT_BASE_PATH.app;\n }\n }\n async initialize(slotSelector = 'router-slot') {\n this.slot = document.querySelector(slotSelector);\n if (!this.slot) {\n console.error('[EmrouteApp] Slot not found:', slotSelector);\n return;\n }\n if (!('navigation' in globalThis)) {\n console.warn('[EmrouteApp] Navigation API not available');\n return;\n }\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n navigation.addEventListener('navigate', (event) => {\n if (!event.canIntercept)\n return;\n if (event.hashChange)\n return;\n if (event.downloadRequest !== null)\n return;\n const url = new URL(event.destination.url);\n if (!this.isAppPath(url.pathname))\n return;\n event.intercept({\n scroll: 'manual',\n handler: async () => {\n await this.handleNavigation(url, event.signal);\n event.scroll();\n },\n });\n }, { signal });\n // SSR adoption — server already rendered this page, skip re-render\n const ssrRoute = this.slot.getAttribute('data-ssr-route');\n if (ssrRoute && (location.pathname === ssrRoute || location.pathname === ssrRoute + '/')) {\n this.slot.removeAttribute('data-ssr-route');\n return;\n }\n // Initial render\n await this.handleNavigation(new URL(location.href), this.abortController.signal);\n }\n dispose() {\n this.abortController?.abort();\n this.abortController = null;\n this.slot = null;\n }\n async navigate(url, options = {}) {\n try {\n const { finished } = navigation.navigate(url, {\n state: options.state,\n history: options.replace ? 'replace' : 'auto',\n });\n await finished;\n }\n catch (e) {\n if (e instanceof DOMException && e.name === 'AbortError')\n return;\n throw e;\n }\n }\n isAppPath(pathname) {\n return pathname === this.appBase || pathname.startsWith(this.appBase + '/');\n }\n stripAppBase(pathname) {\n if (pathname === this.appBase)\n return '/';\n if (pathname.startsWith(this.appBase + '/'))\n return pathname.slice(this.appBase.length);\n return pathname;\n }\n async handleNavigation(url, signal) {\n if (!this.slot || !this.server.htmlRenderer)\n return;\n const routePath = this.stripAppBase(url.pathname);\n const routeUrl = new URL(routePath + url.search, url.origin);\n try {\n const { content, title, redirect } = await this.server.htmlRenderer.render(routeUrl, signal);\n if (signal.aborted)\n return;\n if (redirect) {\n assertSafeRedirect(redirect);\n const target = redirect.startsWith('/') ? this.appBase + redirect : redirect;\n navigation.navigate(target, { history: 'replace' });\n return;\n }\n if (document.startViewTransition) {\n const transition = document.startViewTransition(() => {\n this.slot.setHTMLUnsafe(content);\n });\n signal.addEventListener('abort', () => transition.skipTransition(), { once: true });\n await transition.updateCallbackDone;\n }\n else {\n this.slot.setHTMLUnsafe(content);\n }\n if (title)\n document.title = title;\n }\n catch (error) {\n if (signal.aborted)\n return;\n console.error('[EmrouteApp] Navigation error:', error);\n if (this.slot) {\n const message = error instanceof Error ? error.message : String(error);\n this.slot.setHTMLUnsafe(`<h1>Error</h1><p>${escapeHtml(message)}</p>`);\n }\n }\n }\n}\n/**\n * Create and initialize the browser app.\n *\n * Stored on `globalThis.__emroute_app` for programmatic access.\n */\nexport async function createEmrouteApp(server, options) {\n const g = globalThis;\n if (g.__emroute_app) {\n console.warn('eMroute: App already initialized.');\n return g.__emroute_app;\n }\n const app = new EmrouteApp(server, options);\n await app.initialize();\n g.__emroute_app = app;\n return app;\n}\n/**\n * Boot the browser app from runtime manifests.\n *\n * Fetches route tree and widget manifest as JSON, creates lazy module\n * loaders via FetchRuntime, registers widgets for deferred hydration,\n * and wires the Navigation API.\n *\n * Consumer `main.ts` calls this after setting up MarkdownElement renderer,\n * custom elements, etc.\n */\nexport async function bootEmrouteApp(options) {\n const origin = options?.origin ?? location.origin;\n const runtime = new FetchRuntime(origin);\n // Fetch route tree\n const routesResponse = await runtime.handle(ROUTES_MANIFEST_PATH);\n if (!routesResponse.ok) {\n throw new Error(`[emroute] Failed to fetch ${ROUTES_MANIFEST_PATH}: ${routesResponse.status}`);\n }\n const routeTree = await routesResponse.json();\n // Fetch widget manifest (optional — app may have no widgets)\n const widgetsResponse = await runtime.handle(WIDGETS_MANIFEST_PATH);\n const widgetEntries = widgetsResponse.ok\n ? await widgetsResponse.json()\n : [];\n // Fetch element manifest (optional — app may have no custom elements)\n const elementsResponse = await runtime.handle(ELEMENTS_MANIFEST_PATH);\n const elementEntries = elementsResponse.ok\n ? await elementsResponse.json()\n : [];\n // Build lazy module loaders for all route + widget + element modules\n const moduleLoaders = buildLazyLoaders(routeTree, widgetEntries, elementEntries, runtime);\n // Register widgets in DOM (module loads on connectedCallback for hydration).\n for (const entry of widgetEntries) {\n ComponentElement.registerLazy(entry.name, moduleLoaders[entry.modulePath]);\n }\n // Register custom elements — import all modules, define when loaded\n for (const entry of elementEntries) {\n const loader = moduleLoaders[entry.modulePath];\n if (loader) {\n loader().then((mod) => {\n const cls = mod.default;\n if (typeof cls === 'function' && !customElements.get(entry.tagName)) {\n customElements.define(entry.tagName, cls);\n }\n }).catch((e) => {\n console.error(`[emroute] Failed to load element ${entry.tagName}:`, e);\n });\n }\n }\n // Wire context provider for both pages (Pipeline) and widgets (ComponentElement)\n if (options?.extendContext) {\n ComponentElement.setContextProvider(options.extendContext);\n }\n // Create Emroute instance (same class as SSR)\n const mdRenderer = MarkdownElement.getConfiguredRenderer();\n const server = await Emroute.create({\n routeTree,\n moduleLoaders,\n shell: () => document.documentElement.outerHTML,\n ...(mdRenderer ? { markdownRenderer: mdRenderer } : {}),\n ...(options?.extendContext ? { extendContext: options.extendContext } : {}),\n }, runtime);\n return createEmrouteApp(server, options);\n}\n/**\n * Walk the route tree, widget entries, and element entries to build a map of\n * `path → () => runtime.loadModule(path)` lazy loaders.\n */\nfunction buildLazyLoaders(tree, widgetEntries, elementEntries, runtime) {\n const paths = new Set();\n function walk(node) {\n const modulePath = node.files?.ts ?? node.files?.js;\n if (modulePath)\n paths.add(modulePath);\n if (node.redirect)\n paths.add(node.redirect);\n if (node.errorBoundary)\n paths.add(node.errorBoundary);\n if (node.children) {\n for (const child of Object.values(node.children))\n walk(child);\n }\n if (node.dynamic)\n walk(node.dynamic.child);\n if (node.wildcard)\n walk(node.wildcard.child);\n }\n walk(tree);\n for (const entry of widgetEntries)\n paths.add(entry.modulePath);\n for (const entry of elementEntries)\n paths.add(entry.modulePath);\n const loaders = {};\n for (const path of paths) {\n const absolute = path.startsWith('/') ? path : '/' + path;\n loaders[path] = () => runtime.loadModule(absolute);\n }\n return loaders;\n}\n//# sourceMappingURL=emroute.app.js.map",
|
|
28
28
|
"/**\n * Widget Component\n *\n * Embeddable unit within page content. Everything reusable that is not\n * a page is a Widget. Widgets render across all contexts (HTML, Markdown, SPA)\n * and are resolved by name via the widgets manifest.\n *\n * Default rendering fallback chains (parallel to PageComponent):\n * - renderHTML: html file → md file in <mark-down> → base Component default\n * - renderMarkdown: md file → ''\n */\nimport { Component } from \"./abstract.component.js\";\nimport { escapeHtml } from \"../util/html.util.js\";\nexport class WidgetComponent extends Component {\n renderHTML(args) {\n const files = args.context.files;\n if (files?.html) {\n return files.html;\n }\n if (files?.md) {\n return `<mark-down>${escapeHtml(files.md)}</mark-down>`;\n }\n return super.renderHTML(args);\n }\n renderMarkdown(args) {\n const files = args.context.files;\n if (files?.md) {\n return files.md;\n }\n return '';\n }\n}\n//# sourceMappingURL=widget.component.js.map",
|
|
29
29
|
"/**\n * Overlay Default CSS\n *\n * Styles for modals, toasts, and popovers. Works for both declarative\n * (commandfor/command + HTML attributes) and programmatic (OverlayService)\n * overlays. Uses CSS custom properties for theming.\n */\nexport const overlayCSS = /* css */ `\n:root {\n --overlay-backdrop: oklch(0% 0 0 / 0.5);\n --overlay-surface: oklch(100% 0 0);\n --overlay-radius: 8px;\n --overlay-shadow: 0 8px 32px oklch(0% 0 0 / 0.2);\n --overlay-toast-gap: 8px;\n --overlay-toast-duration: 5s;\n --overlay-z: 1000;\n}\n\n/* --- Modal (dialog) --- */\n\ndialog[data-overlay-modal] {\n border: none;\n padding: 0;\n background: var(--overlay-surface);\n border-radius: var(--overlay-radius);\n box-shadow: var(--overlay-shadow);\n max-width: min(90vw, 560px);\n max-height: 85vh;\n overflow: auto;\n opacity: 1;\n translate: 0 0;\n transition:\n opacity 200ms,\n translate 200ms;\n}\n\ndialog[data-overlay-modal][open] {\n transition:\n opacity 200ms,\n translate 200ms,\n display 200ms allow-discrete,\n overlay 200ms allow-discrete;\n\n @starting-style {\n opacity: 0;\n translate: 0 20px;\n }\n}\n\ndialog[data-overlay-modal]::backdrop {\n background: var(--overlay-backdrop);\n opacity: 1;\n transition: opacity 200ms;\n}\n\ndialog[data-overlay-modal][open]::backdrop {\n transition:\n opacity 200ms,\n display 200ms allow-discrete,\n overlay 200ms allow-discrete;\n\n @starting-style {\n opacity: 0;\n }\n}\n\ndialog[data-overlay-modal][data-dismissing] {\n opacity: 0;\n translate: 0 20px;\n}\n\ndialog[data-overlay-modal][data-dismissing]::backdrop {\n opacity: 0;\n}\n\n/* --- Toast container --- */\n\n[data-overlay-toast-container] {\n position: fixed;\n bottom: 16px;\n right: 16px;\n z-index: var(--overlay-z);\n display: flex;\n flex-direction: column;\n gap: var(--overlay-toast-gap);\n pointer-events: none;\n}\n\n/* --- Toast item --- */\n\n[data-overlay-toast] {\n pointer-events: auto;\n background: var(--overlay-surface);\n border-radius: var(--overlay-radius);\n box-shadow: var(--overlay-shadow);\n padding: 12px 16px;\n animation: overlay-toast-auto var(--overlay-toast-duration, 5s) ease-in-out forwards;\n}\n\n/* Manual toast (timeout: 0): no auto-dismiss, entry transition only */\n[data-overlay-toast][data-toast-manual] {\n animation: none;\n opacity: 1;\n translate: 0 0;\n transition:\n opacity 200ms,\n translate 200ms;\n\n @starting-style {\n opacity: 0;\n translate: 20px 0;\n }\n}\n\n/* Dismissed toast: CSS exit animation */\n[data-overlay-toast][data-dismissing] {\n animation: overlay-toast-exit 200ms ease-in forwards;\n}\n\n@keyframes overlay-toast-auto {\n 0% { opacity: 0; translate: 20px 0; }\n 10% { opacity: 1; translate: 0 0; }\n 80% { opacity: 1; translate: 0 0; }\n 100% { opacity: 0; translate: 0 0; display: none; }\n}\n\n@keyframes overlay-toast-exit {\n to { opacity: 0; translate: 20px 0; display: none; }\n}\n\n/* --- Popover --- */\n\n[data-overlay-popover] {\n border: none;\n padding: 0;\n margin: 0;\n background: var(--overlay-surface);\n border-radius: var(--overlay-radius);\n box-shadow: var(--overlay-shadow);\n opacity: 1;\n scale: 1;\n transition:\n opacity 200ms,\n scale 200ms;\n}\n\n[data-overlay-popover]:popover-open {\n position-anchor: auto;\n inset: unset;\n top: anchor(bottom);\n left: anchor(start);\n margin-top: 4px;\n transition:\n opacity 200ms,\n scale 200ms,\n display 200ms allow-discrete,\n overlay 200ms allow-discrete;\n\n @starting-style {\n opacity: 0;\n scale: 0.95;\n }\n}\n\n[data-overlay-popover][data-dismissing] {\n opacity: 0;\n scale: 0.95;\n}\n`;\n//# sourceMappingURL=overlay.css.js.map",
|
|
30
30
|
"/**\n * Overlay Service\n *\n * Programmatic API for modals, toasts, and popovers. For simple trigger\n * patterns, use declarative HTML (commandfor/command + popover/dialog)\n * with zero JS. This service covers dynamic content, programmatic\n * triggers, and complex workflows.\n *\n * dismissAll() is DOM-aware: it closes both programmatic overlays\n * managed by this service AND declarative popovers/dialogs found\n * via DOM queries.\n */\nimport { overlayCSS } from \"./overlay.css.js\";\nconst ANIMATION_SAFETY_TIMEOUT = 300;\n/**\n * Animate an element out by setting `data-dismissing`, waiting for\n * `transitionend`, then calling the provided callback. Includes a\n * safety timeout in case the transition event never fires.\n */\nfunction animateDismiss(el, onDone) {\n el.setAttribute('data-dismissing', '');\n let done = false;\n const finish = () => {\n if (done)\n return;\n done = true;\n onDone();\n };\n el.addEventListener('transitionend', finish, { once: true });\n setTimeout(finish, ANIMATION_SAFETY_TIMEOUT);\n}\n/**\n * Populate a toast element from a cloned template.\n * Sets `[data-toast-message]` textContent, `data-toast-type` attribute,\n * and unhides confirm/reject buttons when labels are provided.\n */\nfunction fillTemplate(el, options, onConfirm, onReject) {\n const msgEl = el.querySelector('[data-toast-message]');\n if (msgEl && options.message) {\n msgEl.textContent = options.message;\n }\n if (options.type) {\n el.setAttribute('data-toast-type', options.type);\n }\n const confirmBtn = el.querySelector('[data-toast-confirm]');\n if (confirmBtn) {\n if (options.confirm) {\n confirmBtn.textContent = options.confirm;\n confirmBtn.hidden = false;\n if (onConfirm)\n confirmBtn.addEventListener('click', onConfirm, { once: true });\n }\n else {\n confirmBtn.hidden = true;\n }\n }\n const rejectBtn = el.querySelector('[data-toast-reject]');\n if (rejectBtn) {\n if (options.reject) {\n rejectBtn.textContent = options.reject;\n rejectBtn.hidden = false;\n if (onReject)\n rejectBtn.addEventListener('click', onReject, { once: true });\n }\n else {\n rejectBtn.hidden = true;\n }\n }\n}\n/**\n * Build toast inner content when no `<template id=\"overlay-toast\">` exists.\n * Creates a `<span>` with the message text, plus confirm/reject buttons\n * if labels are provided.\n */\nfunction buildFallback(el, options, onConfirm, onReject) {\n if (options.type) {\n el.setAttribute('data-toast-type', options.type);\n }\n const span = document.createElement('span');\n span.setAttribute('data-toast-message', '');\n span.textContent = options.message ?? '';\n el.appendChild(span);\n if (options.confirm) {\n const btn = document.createElement('button');\n btn.setAttribute('data-toast-confirm', '');\n btn.textContent = options.confirm;\n if (onConfirm)\n btn.addEventListener('click', onConfirm, { once: true });\n el.appendChild(btn);\n }\n if (options.reject) {\n const btn = document.createElement('button');\n btn.setAttribute('data-toast-reject', '');\n btn.textContent = options.reject;\n if (onReject)\n btn.addEventListener('click', onReject, { once: true });\n el.appendChild(btn);\n }\n}\nexport function createOverlayService() {\n let styleInjected = false;\n // Modal state\n let dialog = null;\n // Uses `any` because modalResolve is reassigned across multiple modal() calls\n // with different type parameters T. Each call creates a Promise.withResolvers<T>(),\n // so the resolver function signature changes (accepts T | PromiseLike<T | undefined>).\n // Type safety is maintained by closeModal<T>(value?: T) which ensures only valid\n // types are passed to the resolver.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let modalResolve = null;\n let modalOnClose;\n // Toast state\n let toastContainer = null;\n // Popover state\n let popoverEl = null;\n let popoverAnchorObserver = null;\n const supportsAnchor = typeof CSS !== 'undefined' &&\n CSS.supports('anchor-name', '--a');\n function injectCSS() {\n if (styleInjected)\n return;\n styleInjected = true;\n const style = document.createElement('style');\n style.textContent = overlayCSS;\n document.head.appendChild(style);\n }\n function ensureDialog() {\n if (dialog)\n return dialog;\n injectCSS();\n dialog = document.createElement('dialog');\n dialog.setAttribute('data-overlay-modal', '');\n document.body.appendChild(dialog);\n dialog.addEventListener('click', (e) => {\n if (e.target === dialog) {\n closeModal(undefined);\n }\n });\n return dialog;\n }\n function ensureToastContainer() {\n if (toastContainer)\n return toastContainer;\n injectCSS();\n toastContainer = document.createElement('div');\n toastContainer.setAttribute('data-overlay-toast-container', '');\n document.body.appendChild(toastContainer);\n return toastContainer;\n }\n function ensurePopover() {\n if (popoverEl)\n return popoverEl;\n injectCSS();\n popoverEl = document.createElement('div');\n popoverEl.setAttribute('data-overlay-popover', '');\n popoverEl.setAttribute('popover', '');\n document.body.appendChild(popoverEl);\n return popoverEl;\n }\n // --- Modal ---\n function modal(options) {\n const d = ensureDialog();\n // Clean up any lingering dismiss state from a previous close\n d.removeAttribute('data-dismissing');\n // Immediately dismiss popover — modal takes over the top layer\n hidePopoverImmediate();\n // Last wins: close current modal if open\n if (d.open) {\n d.close();\n if (modalResolve) {\n modalResolve(undefined);\n modalResolve = null;\n }\n if (modalOnClose) {\n modalOnClose();\n modalOnClose = undefined;\n }\n }\n d.innerHTML = '';\n options.render(d);\n modalOnClose = options.onClose;\n const { promise, resolve } = Promise.withResolvers();\n modalResolve = resolve;\n d.showModal();\n return promise;\n }\n function closeModal(value) {\n if (!dialog || !dialog.open)\n return;\n const resolve = modalResolve;\n const onClose = modalOnClose;\n const dialogRef = dialog;\n modalResolve = null;\n modalOnClose = undefined;\n animateDismiss(dialogRef, () => {\n if (dialogRef && dialogRef.open) {\n dialogRef.close();\n if (resolve)\n resolve(value);\n if (onClose)\n onClose();\n }\n });\n }\n // --- Toast ---\n /** Remove dead toasts (dismissed or animation-finished) from container. */\n function clearDeadToasts(container) {\n for (const child of [...container.children]) {\n const el = child;\n if (el.hasAttribute('data-dismissing')) {\n el.remove();\n }\n }\n }\n function toast(options) {\n const container = ensureToastContainer();\n // Clean up dead toasts before adding a new one\n clearDeadToasts(container);\n const el = document.createElement('div');\n el.setAttribute('data-overlay-toast', '');\n const isConfirmation = !!(options.confirm || options.reject);\n const timeout = isConfirmation ? 0 : (options.timeout ?? 0);\n if (timeout === 0) {\n el.setAttribute('data-toast-manual', '');\n }\n else {\n el.style.setProperty('--overlay-toast-duration', `${timeout}ms`);\n }\n // Confirmation promise plumbing\n let confirmResolve;\n let confirmPromise;\n if (isConfirmation) {\n const resolvers = Promise.withResolvers();\n confirmResolve = resolvers.resolve;\n confirmPromise = resolvers.promise;\n }\n const onConfirm = confirmResolve\n ? () => { confirmResolve(true); dismiss(); }\n : undefined;\n const onReject = confirmResolve\n ? () => { confirmResolve(false); dismiss(); }\n : undefined;\n // Render content\n if (options.render) {\n // Escape hatch: caller takes full control\n options.render(el);\n }\n else {\n // Template-based or fallback\n const template = document.querySelector('#overlay-toast');\n if (template) {\n const clone = template.content.cloneNode(true);\n el.appendChild(clone);\n fillTemplate(el, options, onConfirm, onReject);\n }\n else {\n buildFallback(el, options, onConfirm, onReject);\n }\n }\n container.appendChild(el);\n const id = performance.now();\n let dismissed = false;\n function dismiss() {\n if (dismissed)\n return;\n dismissed = true;\n el.setAttribute('data-dismissing', '');\n }\n function update(opts) {\n if (opts.message !== undefined) {\n const msgEl = el.querySelector('[data-toast-message]');\n if (msgEl)\n msgEl.textContent = opts.message;\n }\n if (opts.type !== undefined) {\n el.setAttribute('data-toast-type', opts.type);\n }\n if (opts.timeout !== undefined) {\n el.style.setProperty('--overlay-toast-duration', `${opts.timeout}ms`);\n // Restart animation by removing and re-adding the manual flag\n if (opts.timeout === 0) {\n el.setAttribute('data-toast-manual', '');\n }\n else {\n el.removeAttribute('data-toast-manual');\n }\n }\n }\n const handle = { id, dismiss, update };\n // For confirmation toasts, return a handle that is also PromiseLike<boolean>\n if (confirmPromise) {\n handle.then = confirmPromise.then.bind(confirmPromise);\n }\n return handle;\n }\n // Attach convenience methods\n toast.success = (message, timeout) => toast({ message, type: 'success', timeout: timeout ?? 5000 });\n toast.error = (message, timeout) => toast({ message, type: 'error', timeout: timeout ?? 5000 });\n toast.warning = (message, timeout) => toast({ message, type: 'warning', timeout: timeout ?? 5000 });\n toast.info = (message, timeout) => toast({ message, type: 'info', timeout: timeout ?? 5000 });\n // --- Popover ---\n function popover(options) {\n const el = ensurePopover();\n // Last wins: hide current popover if showing\n cleanupPopoverAnchorObserver();\n try {\n el.hidePopover();\n }\n catch {\n // Not shown — ignore\n }\n el.removeAttribute('data-dismissing');\n el.innerHTML = '';\n options.render(el);\n // Anchor positioning\n if (supportsAnchor) {\n const anchorName = '--overlay-anchor';\n options.anchor.style.setProperty('anchor-name', anchorName);\n el.style.setProperty('position-anchor', anchorName);\n el.style.removeProperty('top');\n el.style.removeProperty('left');\n }\n else {\n const rect = options.anchor.getBoundingClientRect();\n el.style.top = `${rect.bottom + globalThis.scrollY}px`;\n el.style.left = `${rect.left + globalThis.scrollX}px`;\n el.style.position = 'absolute';\n }\n el.showPopover();\n // Watch for anchor disconnect\n watchAnchorDisconnect(options.anchor);\n }\n function watchAnchorDisconnect(anchor) {\n cleanupPopoverAnchorObserver();\n const parent = anchor.parentNode;\n if (!parent) {\n closePopover();\n return;\n }\n popoverAnchorObserver = new MutationObserver(() => {\n if (!document.contains(anchor)) {\n closePopover();\n }\n });\n popoverAnchorObserver.observe(parent, { childList: true });\n }\n /** Hide popover instantly without dismiss animation. */\n function hidePopoverImmediate() {\n cleanupPopoverAnchorObserver();\n if (!popoverEl)\n return;\n try {\n popoverEl.hidePopover();\n }\n catch {\n // Not shown — ignore\n }\n popoverEl.removeAttribute('data-dismissing');\n }\n function cleanupPopoverAnchorObserver() {\n if (popoverAnchorObserver) {\n popoverAnchorObserver.disconnect();\n popoverAnchorObserver = null;\n }\n }\n function closePopover() {\n cleanupPopoverAnchorObserver();\n if (!popoverEl)\n return;\n // Check if popover is showing via matches(':popover-open')\n let isOpen;\n try {\n isOpen = popoverEl.matches(':popover-open');\n }\n catch {\n // :popover-open may not be supported — fall back\n isOpen = popoverEl.hasAttribute('popover') && popoverEl.style.display !== 'none';\n }\n if (!isOpen)\n return;\n animateDismiss(popoverEl, () => {\n try {\n popoverEl.hidePopover();\n }\n catch {\n // Already hidden\n }\n });\n }\n // --- Dismiss all ---\n function dismissAll() {\n // Close programmatic modal\n if (dialog && dialog.open) {\n const resolve = modalResolve;\n const onClose = modalOnClose;\n modalResolve = null;\n modalOnClose = undefined;\n dialog.removeAttribute('data-dismissing');\n dialog.close();\n if (resolve)\n resolve(undefined);\n if (onClose)\n onClose();\n }\n // Hide programmatic popover\n hidePopoverImmediate();\n // Dismiss all toasts via CSS\n if (toastContainer) {\n for (const child of toastContainer.children) {\n child.setAttribute('data-dismissing', '');\n }\n }\n // Close declarative popovers found in the DOM\n try {\n for (const el of document.querySelectorAll(':popover-open')) {\n el.hidePopover();\n }\n }\n catch {\n // :popover-open not supported\n }\n // Close declarative dialogs found in the DOM (skip our own)\n for (const el of document.querySelectorAll('dialog[open]')) {\n if (el !== dialog)\n el.close();\n }\n }\n return {\n modal,\n closeModal,\n toast: toast,\n popover,\n closePopover,\n dismissAll,\n };\n}\n//# sourceMappingURL=overlay.service.js.map",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"/**\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
36
|
"/**\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
37
|
],
|
|
38
|
-
"mappings": "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",
|
|
39
|
-
"debugId": "
|
|
38
|
+
"mappings": "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",
|
|
39
|
+
"debugId": "9CD9A42AC721D72C64756E2164756E21",
|
|
40
40
|
"names": []
|
|
41
41
|
}
|