flexium 0.16.1 → 0.16.3
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/dist/chunk-5WWZ7UPE.js +2 -0
- package/dist/chunk-5WWZ7UPE.js.map +1 -0
- package/dist/chunk-EROGYZGA.js +2 -0
- package/dist/chunk-EROGYZGA.js.map +1 -0
- package/dist/chunk-FU4W2BKL.mjs +2 -0
- package/dist/chunk-FU4W2BKL.mjs.map +1 -0
- package/dist/chunk-HBBTT5I5.mjs +2 -0
- package/dist/chunk-HBBTT5I5.mjs.map +1 -0
- package/dist/chunk-HUE2TOCR.js +2 -0
- package/dist/chunk-HUE2TOCR.js.map +1 -0
- package/dist/chunk-JNWUZKHF.js +2 -0
- package/dist/chunk-JNWUZKHF.js.map +1 -0
- package/dist/chunk-PPPU2XSA.mjs +2 -0
- package/dist/chunk-PPPU2XSA.mjs.map +1 -0
- package/dist/chunk-S5DHAAMO.mjs +2 -0
- package/dist/chunk-S5DHAAMO.mjs.map +1 -0
- package/dist/chunk-UA2YQBD6.mjs +2 -0
- package/dist/chunk-UA2YQBD6.mjs.map +1 -0
- package/dist/chunk-ZJZRDYA2.js +2 -0
- package/dist/chunk-ZJZRDYA2.js.map +1 -0
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +1 -1
- package/dist/core.mjs.map +1 -1
- package/dist/css.js +1 -1
- package/dist/css.js.map +1 -1
- package/dist/css.mjs +1 -1
- package/dist/css.mjs.map +1 -1
- package/dist/dom.d.cts +2 -37
- package/dist/dom.d.ts +2 -37
- package/dist/dom.js +1 -1
- package/dist/dom.js.map +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/dom.mjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/router.js +1 -1
- package/dist/router.js.map +1 -1
- package/dist/router.mjs +1 -1
- package/dist/router.mjs.map +1 -1
- package/dist/server.d.cts +2 -2
- package/dist/server.d.ts +2 -2
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +1 -1
- package/dist/server.mjs.map +1 -1
- package/dist/{types-CxlS2F2j.d.cts → types-C5UPsdAS.d.cts} +1 -1
- package/dist/{types-CxlS2F2j.d.ts → types-C5UPsdAS.d.ts} +1 -1
- package/package.json +1 -1
package/dist/server.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export{a as getIsServer,c as renderToStaticMarkup,b as renderToString}from'./chunk-S5DHAAMO.mjs';import'./chunk-WHRUAZR4.mjs';//# sourceMappingURL=server.mjs.map
|
|
2
2
|
//# sourceMappingURL=server.mjs.map
|
package/dist/server.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/escape.ts","../src/server/serverState.ts","../src/server/renderToString.ts"],"names":["ESCAPE_MAP","ESCAPE_REGEX","escapeHtml","str","char","escapeAttribute","isServerRendering","serverStateCollector","hydrationIdCounter","getIsServer","enterServerRender","exitServerRender","states","generateHydrationId","VOID_ELEMENTS","BOOLEAN_ATTRS","ATTR_ALIASES","renderToString","app","options","hydrate","fnode","isFNode","html","renderNodeToString","state","error","renderToStaticMarkup","value","includeHydrationMarkers","child","renderComponentToString","renderElementToString","tag","attrs","renderAttributes","innerHTML","childrenHtml","props","parts","fid","key","attrName","styleStr","v","k","kebabCase","Component","contextId","isProvider","prevContextValue","pushContext","instance","result","runWithComponent","popContext"],"mappings":"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","file":"server.mjs","sourcesContent":["const ESCAPE_MAP: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\n\nconst ESCAPE_REGEX = /[&<>\"']/g\n\nexport function escapeHtml(str: string): string {\n return String(str).replace(ESCAPE_REGEX, char => ESCAPE_MAP[char])\n}\n\nexport function escapeAttribute(str: string): string {\n return escapeHtml(str)\n}\n","import type { SerializedState } from './types'\n\nlet isServerRendering = false\nlet serverStateCollector: Map<string, unknown> | null = null\nlet hydrationIdCounter = 0\n\nexport function getIsServer(): boolean {\n return isServerRendering\n}\n\nexport function enterServerRender(): void {\n isServerRendering = true\n serverStateCollector = new Map()\n hydrationIdCounter = 0\n}\n\nexport function exitServerRender(): SerializedState {\n isServerRendering = false\n const states = Object.fromEntries(serverStateCollector || new Map())\n serverStateCollector = null\n\n return { states }\n}\n\nexport function collectServerState(key: string, value: unknown): void {\n if (serverStateCollector) {\n serverStateCollector.set(key, value)\n }\n}\n\nexport function generateHydrationId(): string {\n return `fid-${hydrationIdCounter++}`\n}\n\nexport function resetHydrationIdCounter(): void {\n hydrationIdCounter = 0\n}\n","import type { FNode, FNodeChild } from '../dom/types'\nimport type { SSROptions, SSRResult } from './types'\nimport { escapeHtml, escapeAttribute } from './escape'\nimport {\n enterServerRender,\n exitServerRender,\n generateHydrationId\n} from './serverState'\nimport { runWithComponent, ComponentInstance } from '../core/hook'\nimport { pushContext, popContext } from '../core/context'\n\n// Self-closing HTML tags\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr'\n])\n\n// Attributes that should be rendered as boolean\nconst BOOLEAN_ATTRS = new Set([\n 'disabled', 'checked', 'readonly', 'required', 'hidden',\n 'selected', 'autofocus', 'autoplay', 'controls', 'loop', 'muted',\n 'multiple', 'open', 'defer', 'async', 'novalidate'\n])\n\n// Attributes that need special handling\nconst ATTR_ALIASES: Record<string, string> = {\n className: 'class',\n htmlFor: 'for'\n}\n\n/**\n * Render component tree to HTML string with hydration markers\n */\nexport function renderToString(\n app: FNodeChild | (() => FNodeChild),\n options: SSROptions = {}\n): SSRResult {\n const { hydrate = true } = options\n\n enterServerRender()\n\n try {\n // Normalize input - wrap function in FNode if needed\n let fnode: FNodeChild\n if (typeof app === 'function' && !isFNode(app)) {\n fnode = { type: app, props: {}, children: [], key: undefined }\n } else {\n fnode = app\n }\n\n const html = renderNodeToString(fnode, hydrate)\n const state = exitServerRender()\n\n return { html, state }\n } catch (error) {\n exitServerRender()\n throw error\n }\n}\n\n/**\n * Render component tree to static HTML (no hydration markers)\n * Use for email templates, static pages, etc.\n */\nexport function renderToStaticMarkup(app: FNodeChild | (() => FNodeChild)): string {\n const { html } = renderToString(app, { hydrate: false })\n return html\n}\n\nfunction isFNode(value: any): value is FNode {\n return value && typeof value === 'object' && 'type' in value && 'props' in value\n}\n\nfunction renderNodeToString(fnode: FNodeChild, includeHydrationMarkers: boolean): string {\n // Null/undefined/boolean -> empty string\n if (fnode === null || fnode === undefined || typeof fnode === 'boolean') {\n return ''\n }\n\n // String/number -> escaped text\n if (typeof fnode === 'string' || typeof fnode === 'number') {\n return escapeHtml(String(fnode))\n }\n\n // Array -> concatenate children\n if (Array.isArray(fnode)) {\n return fnode.map(child => renderNodeToString(child, includeHydrationMarkers)).join('')\n }\n\n // Function (standalone) -> wrap in FNode and render\n if (typeof fnode === 'function') {\n const wrappedFnode: FNode = { type: fnode, props: {}, children: [], key: undefined }\n return renderComponentToString(wrappedFnode, includeHydrationMarkers)\n }\n\n // Object (FNode)\n if (typeof fnode === 'object' && isFNode(fnode)) {\n // HTML element\n if (typeof fnode.type === 'string') {\n return renderElementToString(fnode, includeHydrationMarkers)\n }\n\n // Function component\n if (typeof fnode.type === 'function') {\n return renderComponentToString(fnode, includeHydrationMarkers)\n }\n }\n\n return ''\n}\n\nfunction renderElementToString(fnode: FNode, includeHydrationMarkers: boolean): string {\n const tag = fnode.type as string\n const attrs = renderAttributes(fnode.props, includeHydrationMarkers)\n\n // Handle dangerouslySetInnerHTML\n if (fnode.props?.dangerouslySetInnerHTML) {\n const innerHTML = fnode.props.dangerouslySetInnerHTML.__html || ''\n return `<${tag}${attrs}>${innerHTML}</${tag}>`\n }\n\n // Void elements (self-closing)\n if (VOID_ELEMENTS.has(tag)) {\n return `<${tag}${attrs}>`\n }\n\n // Render children\n const childrenHtml = (fnode.children || [])\n .map(child => renderNodeToString(child, includeHydrationMarkers))\n .join('')\n\n return `<${tag}${attrs}>${childrenHtml}</${tag}>`\n}\n\nfunction renderAttributes(props: Record<string, any>, includeHydrationMarkers: boolean): string {\n if (!props) return ''\n\n const parts: string[] = []\n\n // Add hydration ID if needed\n if (includeHydrationMarkers) {\n const fid = generateHydrationId()\n parts.push(`data-fid=\"${fid}\"`)\n }\n\n for (const [key, value] of Object.entries(props)) {\n // Skip event handlers, refs, and internal props\n if (key.startsWith('on') || key === 'ref' || key === 'key' || key === 'children') continue\n if (key === 'dangerouslySetInnerHTML') continue\n\n // Skip undefined/null values\n if (value === undefined || value === null) continue\n\n // Handle aliased attributes\n const attrName = ATTR_ALIASES[key] || key\n\n // Handle style object\n if (key === 'style' && typeof value === 'object') {\n const styleStr = Object.entries(value)\n .filter(([, v]) => v !== null && v !== undefined)\n .map(([k, v]) => `${kebabCase(k)}:${v}`)\n .join(';')\n if (styleStr) {\n parts.push(`style=\"${escapeAttribute(styleStr)}\"`)\n }\n continue\n }\n\n // Handle boolean attributes\n if (BOOLEAN_ATTRS.has(attrName)) {\n if (value) parts.push(attrName)\n continue\n }\n\n // Handle false boolean values - skip entirely\n if (value === false) continue\n\n // Regular attribute\n parts.push(`${attrName}=\"${escapeAttribute(String(value))}\"`)\n }\n\n return parts.length ? ' ' + parts.join(' ') : ''\n}\n\nfunction renderComponentToString(fnode: FNode, includeHydrationMarkers: boolean): string {\n const Component = fnode.type as Function\n\n // Merge props with children\n const props = { ...fnode.props }\n if (fnode.children && fnode.children.length > 0) {\n props.children = fnode.children.length === 1\n ? fnode.children[0]\n : fnode.children\n }\n\n // Check if this is a Context Provider\n const contextId = (Component as any)._contextId\n const isProvider = contextId !== undefined\n let prevContextValue: any\n\n if (isProvider) {\n prevContextValue = pushContext(contextId, props.value)\n }\n\n // Create minimal component instance for server (hooks support)\n const instance: ComponentInstance = {\n hooks: [],\n hookIndex: 0\n }\n\n try {\n // Run component with hook context\n const result = runWithComponent(instance, () => Component(props))\n\n // Render result\n return renderNodeToString(result, includeHydrationMarkers)\n } finally {\n // Restore context if it was a provider\n if (isProvider) {\n popContext(contextId, prevContextValue)\n }\n }\n}\n\nfunction kebabCase(str: string): string {\n return str.replace(/([A-Z])/g, '-$1').toLowerCase()\n}\n"]}
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"server.mjs"}
|