@withl5e/l5e 0.3.1 → 0.3.2
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/entry-server.js +3 -3
- package/dist/{generateMetadata-Cn2uJjg_.js → generateMetadata-DmoLxT6v.js} +2 -2
- package/dist/{generateMetadata-Cn2uJjg_.js.map → generateMetadata-DmoLxT6v.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/island.js +1 -1
- package/dist/{jsx-runtime-Bokflh8Q.js → jsx-runtime-5m2ZiNtU.js} +92 -82
- package/dist/jsx-runtime-5m2ZiNtU.js.map +1 -0
- package/dist/jsx-runtime.js +1 -1
- package/dist/{render-DTXfJu0d.js → render-BaTAJ4Ha.js} +2 -2
- package/dist/{render-DTXfJu0d.js.map → render-BaTAJ4Ha.js.map} +1 -1
- package/dist/seo.js +2 -2
- package/dist/server.js +33 -33
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/src/core/jsx-runtime.ts +23 -4
- package/src/core/server.ts +8 -1
- package/dist/jsx-runtime-Bokflh8Q.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-DTXfJu0d.js","sources":["../../../node_modules/.pnpm/serialize-javascript@7.0.5/node_modules/serialize-javascript/index.js","../src/core/render.ts"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\n// Generate an internal UID to make the regexp pattern harder to guess.\nvar UID_LENGTH = 16;\nvar UID = generateUID();\nvar PLACE_HOLDER_REGEXP = new RegExp('(\\\\\\\\)?\"@__(F|R|D|M|S|A|U|I|B|L)-' + UID + '-(\\\\d+)__@\"', 'g');\n\nvar IS_NATIVE_CODE_REGEXP = /\\{\\s*\\[native code\\]\\s*\\}/g;\nvar IS_PURE_FUNCTION = /function.*?\\(/;\nvar IS_ARROW_FUNCTION = /.*?=>.*?/;\nvar UNSAFE_CHARS_REGEXP = /[<>\\/\\u2028\\u2029]/g;\n// Regex to match </script> and variations (case-insensitive) for XSS protection\n// Matches </script followed by optional whitespace/attributes and >\nvar SCRIPT_CLOSE_REGEXP = /<\\/script[^>]*>/gi;\n\nvar RESERVED_SYMBOLS = ['*', 'async'];\n\n// Mapping of unsafe HTML and invalid JavaScript line terminator chars to their\n// Unicode char counterparts which are safe to use in JavaScript strings.\nvar ESCAPED_CHARS = {\n '<' : '\\\\u003C',\n '>' : '\\\\u003E',\n '/' : '\\\\u002F',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029'\n};\n\nfunction escapeUnsafeChars(unsafeChar) {\n return ESCAPED_CHARS[unsafeChar];\n}\n\n// Escape function body for XSS protection while preserving arrow function syntax\nfunction escapeFunctionBody(str) {\n // Escape </script> sequences and variations (case-insensitive) - the main XSS risk\n // Matches </script followed by optional whitespace/attributes and >\n // This must be done first before other replacements\n str = str.replace(SCRIPT_CLOSE_REGEXP, function(match) {\n // Escape all <, /, and > characters in the closing script tag\n return match.replace(/</g, '\\\\u003C').replace(/\\//g, '\\\\u002F').replace(/>/g, '\\\\u003E');\n });\n // Escape line terminators (these are always unsafe)\n str = str.replace(/\\u2028/g, '\\\\u2028');\n str = str.replace(/\\u2029/g, '\\\\u2029');\n return str;\n}\n\nfunction generateUID() {\n var bytes = crypto.getRandomValues(new Uint8Array(UID_LENGTH));\n var result = '';\n for(var i=0; i<UID_LENGTH; ++i) {\n result += bytes[i].toString(16);\n }\n return result;\n}\n\nfunction deleteFunctions(obj){\n var functionKeys = [];\n for (var key in obj) {\n if (typeof obj[key] === \"function\") {\n functionKeys.push(key);\n }\n }\n for (var i = 0; i < functionKeys.length; i++) {\n delete obj[functionKeys[i]];\n }\n}\n\nmodule.exports = function serialize(obj, options) {\n options || (options = {});\n\n // Backwards-compatibility for `space` as the second argument.\n if (typeof options === 'number' || typeof options === 'string') {\n options = {space: options};\n }\n\n var functions = [];\n var regexps = [];\n var dates = [];\n var maps = [];\n var sets = [];\n var arrays = [];\n var undefs = [];\n var infinities= [];\n var bigInts = [];\n var urls = [];\n\n // Returns placeholders for functions and regexps (identified by index)\n // which are later replaced by their string representation.\n function replacer(key, value) {\n\n // For nested function\n if(options.ignoreFunction){\n deleteFunctions(value);\n }\n\n if (!value && value !== undefined && value !== BigInt(0)) {\n return value;\n }\n\n // If the value is an object w/ a toJSON method, toJSON is called before\n // the replacer runs, so we use this[key] to get the non-toJSONed value.\n var origValue = this[key];\n var type = typeof origValue;\n\n if (type === 'object') {\n if(origValue instanceof RegExp) {\n return '@__R-' + UID + '-' + (regexps.push(origValue) - 1) + '__@';\n }\n\n if(origValue instanceof Date) {\n return '@__D-' + UID + '-' + (dates.push(origValue) - 1) + '__@';\n }\n\n if(origValue instanceof Map) {\n return '@__M-' + UID + '-' + (maps.push(origValue) - 1) + '__@';\n }\n\n if(origValue instanceof Set) {\n return '@__S-' + UID + '-' + (sets.push(origValue) - 1) + '__@';\n }\n\n if(Array.isArray(origValue)) {\n var isSparse = Object.keys(origValue).length !== origValue.length;\n if (isSparse) {\n return '@__A-' + UID + '-' + (arrays.push(origValue) - 1) + '__@';\n }\n }\n\n if(origValue instanceof URL) {\n return '@__L-' + UID + '-' + (urls.push(origValue) - 1) + '__@';\n }\n }\n\n if (type === 'function') {\n return '@__F-' + UID + '-' + (functions.push(origValue) - 1) + '__@';\n }\n\n if (type === 'undefined') {\n return '@__U-' + UID + '-' + (undefs.push(origValue) - 1) + '__@';\n }\n\n if (type === 'number' && !isNaN(origValue) && !isFinite(origValue)) {\n return '@__I-' + UID + '-' + (infinities.push(origValue) - 1) + '__@';\n }\n\n if (type === 'bigint') {\n return '@__B-' + UID + '-' + (bigInts.push(origValue) - 1) + '__@';\n }\n\n return value;\n }\n\n function serializeFunc(fn, options) {\n var serializedFn = fn.toString();\n if (IS_NATIVE_CODE_REGEXP.test(serializedFn)) {\n throw new TypeError('Serializing native function: ' + fn.name);\n }\n\n // Escape unsafe HTML characters in function body for XSS protection\n // This must preserve arrow function syntax (=>) while escaping </script>\n if (options && options.unsafe !== true) {\n serializedFn = escapeFunctionBody(serializedFn);\n }\n\n // pure functions, example: {key: function() {}}\n if(IS_PURE_FUNCTION.test(serializedFn)) {\n return serializedFn;\n }\n\n // arrow functions, example: arg1 => arg1+5\n if(IS_ARROW_FUNCTION.test(serializedFn)) {\n return serializedFn;\n }\n\n var argsStartsAt = serializedFn.indexOf('(');\n var def = serializedFn.substr(0, argsStartsAt)\n .trim()\n .split(' ')\n .filter(function(val) { return val.length > 0 });\n\n var nonReservedSymbols = def.filter(function(val) {\n return RESERVED_SYMBOLS.indexOf(val) === -1\n });\n\n // enhanced literal objects, example: {key() {}}\n if(nonReservedSymbols.length > 0) {\n return (def.indexOf('async') > -1 ? 'async ' : '') + 'function'\n + (def.join('').indexOf('*') > -1 ? '*' : '')\n + serializedFn.substr(argsStartsAt);\n }\n\n // arrow functions\n return serializedFn;\n }\n\n // Check if the parameter is function\n if (options.ignoreFunction && typeof obj === \"function\") {\n obj = undefined;\n }\n // Protects against `JSON.stringify()` returning `undefined`, by serializing\n // to the literal string: \"undefined\".\n if (obj === undefined) {\n return String(obj);\n }\n\n var str;\n\n // Creates a JSON string representation of the value.\n // NOTE: Node 0.12 goes into slow mode with extra JSON.stringify() args.\n if (options.isJSON && !options.space) {\n str = JSON.stringify(obj);\n } else {\n str = JSON.stringify(obj, options.isJSON ? null : replacer, options.space);\n }\n\n // Protects against `JSON.stringify()` returning `undefined`, by serializing\n // to the literal string: \"undefined\".\n if (typeof str !== 'string') {\n return String(str);\n }\n\n // Replace unsafe HTML and invalid JavaScript line terminator chars with\n // their safe Unicode char counterpart. This _must_ happen before the\n // regexps and functions are serialized and added back to the string.\n if (options.unsafe !== true) {\n str = str.replace(UNSAFE_CHARS_REGEXP, escapeUnsafeChars);\n }\n\n if (functions.length === 0 && regexps.length === 0 && dates.length === 0 && maps.length === 0 && sets.length === 0 && arrays.length === 0 && undefs.length === 0 && infinities.length === 0 && bigInts.length === 0 && urls.length === 0) {\n return str;\n }\n\n // Replaces all occurrences of function, regexp, date, map and set placeholders in the\n // JSON string with their string representations. If the original value can\n // not be found, then `undefined` is used.\n return str.replace(PLACE_HOLDER_REGEXP, function (match, backSlash, type, valueIndex) {\n // The placeholder may not be preceded by a backslash. This is to prevent\n // replacing things like `\"a\\\"@__R-<UID>-0__@\"` and thus outputting\n // invalid JS.\n if (backSlash) {\n return match;\n }\n\n if (type === 'D') {\n // Validate ISO string format to prevent code injection via spoofed toISOString()\n var isoStr = String(dates[valueIndex].toISOString());\n if (!/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/.test(isoStr)) {\n throw new TypeError('Invalid Date ISO string');\n }\n return \"new Date(\\\"\" + isoStr + \"\\\")\";\n }\n\n if (type === 'R') {\n // Sanitize flags to prevent code injection (only allow valid RegExp flag characters)\n var flags = String(regexps[valueIndex].flags).replace(/[^gimsuydv]/g, '');\n return \"new RegExp(\" + serialize(regexps[valueIndex].source) + \", \\\"\" + flags + \"\\\")\";\n }\n\n if (type === 'M') {\n return \"new Map(\" + serialize(Array.from(maps[valueIndex].entries()), options) + \")\";\n }\n\n if (type === 'S') {\n return \"new Set(\" + serialize(Array.from(sets[valueIndex].values()), options) + \")\";\n }\n\n if (type === 'A') {\n return \"Array.prototype.slice.call(\" + serialize(Object.assign({ length: arrays[valueIndex].length }, arrays[valueIndex]), options) + \")\";\n }\n\n if (type === 'U') {\n return 'undefined'\n }\n\n if (type === 'I') {\n return infinities[valueIndex];\n }\n\n if (type === 'B') {\n return \"BigInt(\\\"\" + bigInts[valueIndex] + \"\\\")\";\n }\n\n if (type === 'L') {\n return \"new URL(\" + serialize(urls[valueIndex].toString(), options) + \")\";\n }\n\n var fn = functions[valueIndex];\n\n return serializeFunc(fn, options);\n });\n}\n","import { RAW_HTML_MARKER } from './const';\nimport {\n addCacheTag,\n type HtmlContentObject,\n type JSXChild,\n type JSXNode,\n type RenderedNode,\n} from './jsx-runtime';\n\nif (true) {\n console.log('render.ts');\n}\n\nconst VOID_ELEMENTS = new Set<string>([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nfunction classList(input: unknown): string {\n if (!input) return '';\n if (typeof input === 'string') return input;\n if (Array.isArray(input)) {\n return input.map(classList).filter(Boolean).join(' ');\n }\n if (typeof input === 'object') {\n return Object.keys(input as Record<string, boolean>)\n .filter((key) => (input as Record<string, boolean>)[key])\n .join(' ');\n }\n return '';\n}\n\n// Attribute-name validation, ported verbatim from React's react-dom\n// (DOMProperty.js `isAttributeNameSafe`). Untrusted spread props can carry\n// keys like `blah\" onclick=\"x` or `></div><script>…`; if such a key were\n// written as `${key}=\"…\"` it would inject new attributes / break out of the\n// tag. Names that don't match this grammar are dropped instead of emitted.\nconst ATTRIBUTE_NAME_START_CHAR =\n ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst ATTRIBUTE_NAME_CHAR =\n ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst VALID_ATTRIBUTE_NAME_REGEX = new RegExp(\n '^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$',\n);\nconst validatedAttributeNameCache: Record<string, boolean> = {};\nconst illegalAttributeNameCache: Record<string, boolean> = {};\n\nexport function isAttributeNameSafe(attributeName: string): boolean {\n if (Object.prototype.hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n return true;\n }\n if (Object.prototype.hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n if (process.env.NODE_ENV !== 'production') {\n console.error('Invalid attribute name: `%s`', attributeName);\n }\n return false;\n}\n\nexport function escapeProp(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('\"', '"')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\\n', ' ')\n .trim();\n}\n\nexport function escapeHTML(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\\n', '<br/>');\n}\n\nfunction renderAttributes(props?: Record<string, any>): string {\n if (!props) return '';\n\n let classValue = '';\n if (props.classList !== undefined) {\n classValue = classList(props.classList);\n }\n if (props.class) {\n const existingClass = typeof props.class === 'string' ? props.class : '';\n classValue = classValue ? `${classValue} ${existingClass}`.trim() : existingClass;\n }\n\n const attrs = Object.entries(props)\n .filter(\n ([key]) =>\n key !== 'children' &&\n key !== 'classList' &&\n key !== 'setHtml' &&\n key !== 'setText' &&\n key !== 'class' &&\n key !== 'key' &&\n key !== 'cacheTag',\n )\n .map(([key, value]) => {\n // Drop attribute names that could break out of the tag (injection guard).\n if (!isAttributeNameSafe(key)) return '';\n\n // HTML standard behavior with function execution support\n if (value === false || value === null || value === undefined) return '';\n if (value === true) return key;\n\n // Execute function props and get result (new feature)\n if (typeof value === 'function') {\n const result = value();\n return `${key}=\"${escapeProp(result?.toString() || '')}\"`;\n }\n\n return `${key}=\"${escapeProp(value?.toString() || '')}\"`;\n })\n .filter(Boolean) as string[];\n\n if (classValue) {\n attrs.push(`class=\"${escapeProp(classValue)}\"`);\n }\n\n return attrs.join(' ');\n}\n\nfunction renderJsxToHtmlStringInternal(element: JSXChild): string {\n // HTML standard: skip boolean, null, undefined children\n if (element === null || typeof element === 'boolean' || element === undefined) return '';\n\n if (element && typeof element === 'object' && (element as any)[RAW_HTML_MARKER]) {\n return (element as any).content || '';\n }\n\n // Support htmlContent object (new feature)\n if (element && typeof element === 'object' && 'htmlContent' in element) {\n return (element as HtmlContentObject).htmlContent;\n }\n\n if (typeof element === 'string') return escapeHTML(element.toString());\n if (typeof element === 'number') return element.toString();\n\n if (Array.isArray(element)) {\n return (element as JSXChild[]).map((el) => renderJsxToHtmlStringInternal(el)).join('');\n }\n\n const { type, props, children } = element as JSXNode;\n\n // Collect cache tags from props\n if (props?.cacheTag) {\n addCacheTag(props.cacheTag);\n }\n\n if (typeof type === 'function') {\n const componentResult = (type as any)({ ...(props || {}), children });\n // Check if component returned a RenderedNode\n if (componentResult && typeof componentResult === 'object' && 'string' in componentResult) {\n return (componentResult as RenderedNode).string;\n }\n return renderJsxToHtmlStringInternal(componentResult as JSXChild);\n }\n\n const attrs = renderAttributes(props);\n const isVoidElement = VOID_ELEMENTS.has((type as string).toLowerCase());\n\n if (isVoidElement) {\n return `<${type}${attrs ? ' ' + attrs : ''} />`;\n }\n\n let childrenHtml = '';\n if (props?.setHtml !== undefined) {\n childrenHtml = props.setHtml?.toString() || '';\n } else if (props?.setText !== undefined) {\n childrenHtml = escapeHTML(props.setText?.toString() || '');\n } else {\n childrenHtml = (children as JSXChild[]).map((el) => renderJsxToHtmlStringInternal(el)).join('');\n }\n\n return `<${type}${attrs ? ' ' + attrs : ''}>${childrenHtml}</${type}>`;\n}\n\nexport function renderJsxToHtmlString(element: JSXChild | RenderedNode): string {\n // If already a RenderedNode, return its string\n if (element && typeof element === 'object' && 'string' in element) {\n return (element as RenderedNode).string;\n }\n return renderJsxToHtmlStringInternal(element as JSXChild);\n}\n\nexport function renderToRenderedNode(element: JSXChild | RenderedNode): RenderedNode {\n // If already a RenderedNode, return as is\n if (element && typeof element === 'object' && 'string' in element) {\n return element as RenderedNode;\n }\n return {\n string: renderJsxToHtmlStringInternal(element as JSXChild),\n };\n}\n"],"names":["UID_LENGTH","UID","generateUID","PLACE_HOLDER_REGEXP","IS_NATIVE_CODE_REGEXP","IS_PURE_FUNCTION","IS_ARROW_FUNCTION","UNSAFE_CHARS_REGEXP","SCRIPT_CLOSE_REGEXP","RESERVED_SYMBOLS","ESCAPED_CHARS","escapeUnsafeChars","unsafeChar","escapeFunctionBody","str","match","bytes","result","i","deleteFunctions","obj","functionKeys","key","serializeJavascript","serialize","options","functions","regexps","dates","maps","sets","arrays","undefs","infinities","bigInts","urls","replacer","value","origValue","type","isSparse","serializeFunc","fn","serializedFn","argsStartsAt","def","val","nonReservedSymbols","backSlash","valueIndex","isoStr","flags","VOID_ELEMENTS","classList","input","ATTRIBUTE_NAME_START_CHAR","ATTRIBUTE_NAME_CHAR","VALID_ATTRIBUTE_NAME_REGEX","validatedAttributeNameCache","illegalAttributeNameCache","isAttributeNameSafe","attributeName","escapeProp","escapeHTML","renderAttributes","props","classValue","existingClass","attrs","renderJsxToHtmlStringInternal","element","RAW_HTML_MARKER","el","children","addCacheTag","componentResult","childrenHtml","renderJsxToHtmlString","renderToRenderedNode"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"render-BaTAJ4Ha.js","sources":["../../../node_modules/.pnpm/serialize-javascript@7.0.5/node_modules/serialize-javascript/index.js","../src/core/render.ts"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\n// Generate an internal UID to make the regexp pattern harder to guess.\nvar UID_LENGTH = 16;\nvar UID = generateUID();\nvar PLACE_HOLDER_REGEXP = new RegExp('(\\\\\\\\)?\"@__(F|R|D|M|S|A|U|I|B|L)-' + UID + '-(\\\\d+)__@\"', 'g');\n\nvar IS_NATIVE_CODE_REGEXP = /\\{\\s*\\[native code\\]\\s*\\}/g;\nvar IS_PURE_FUNCTION = /function.*?\\(/;\nvar IS_ARROW_FUNCTION = /.*?=>.*?/;\nvar UNSAFE_CHARS_REGEXP = /[<>\\/\\u2028\\u2029]/g;\n// Regex to match </script> and variations (case-insensitive) for XSS protection\n// Matches </script followed by optional whitespace/attributes and >\nvar SCRIPT_CLOSE_REGEXP = /<\\/script[^>]*>/gi;\n\nvar RESERVED_SYMBOLS = ['*', 'async'];\n\n// Mapping of unsafe HTML and invalid JavaScript line terminator chars to their\n// Unicode char counterparts which are safe to use in JavaScript strings.\nvar ESCAPED_CHARS = {\n '<' : '\\\\u003C',\n '>' : '\\\\u003E',\n '/' : '\\\\u002F',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029'\n};\n\nfunction escapeUnsafeChars(unsafeChar) {\n return ESCAPED_CHARS[unsafeChar];\n}\n\n// Escape function body for XSS protection while preserving arrow function syntax\nfunction escapeFunctionBody(str) {\n // Escape </script> sequences and variations (case-insensitive) - the main XSS risk\n // Matches </script followed by optional whitespace/attributes and >\n // This must be done first before other replacements\n str = str.replace(SCRIPT_CLOSE_REGEXP, function(match) {\n // Escape all <, /, and > characters in the closing script tag\n return match.replace(/</g, '\\\\u003C').replace(/\\//g, '\\\\u002F').replace(/>/g, '\\\\u003E');\n });\n // Escape line terminators (these are always unsafe)\n str = str.replace(/\\u2028/g, '\\\\u2028');\n str = str.replace(/\\u2029/g, '\\\\u2029');\n return str;\n}\n\nfunction generateUID() {\n var bytes = crypto.getRandomValues(new Uint8Array(UID_LENGTH));\n var result = '';\n for(var i=0; i<UID_LENGTH; ++i) {\n result += bytes[i].toString(16);\n }\n return result;\n}\n\nfunction deleteFunctions(obj){\n var functionKeys = [];\n for (var key in obj) {\n if (typeof obj[key] === \"function\") {\n functionKeys.push(key);\n }\n }\n for (var i = 0; i < functionKeys.length; i++) {\n delete obj[functionKeys[i]];\n }\n}\n\nmodule.exports = function serialize(obj, options) {\n options || (options = {});\n\n // Backwards-compatibility for `space` as the second argument.\n if (typeof options === 'number' || typeof options === 'string') {\n options = {space: options};\n }\n\n var functions = [];\n var regexps = [];\n var dates = [];\n var maps = [];\n var sets = [];\n var arrays = [];\n var undefs = [];\n var infinities= [];\n var bigInts = [];\n var urls = [];\n\n // Returns placeholders for functions and regexps (identified by index)\n // which are later replaced by their string representation.\n function replacer(key, value) {\n\n // For nested function\n if(options.ignoreFunction){\n deleteFunctions(value);\n }\n\n if (!value && value !== undefined && value !== BigInt(0)) {\n return value;\n }\n\n // If the value is an object w/ a toJSON method, toJSON is called before\n // the replacer runs, so we use this[key] to get the non-toJSONed value.\n var origValue = this[key];\n var type = typeof origValue;\n\n if (type === 'object') {\n if(origValue instanceof RegExp) {\n return '@__R-' + UID + '-' + (regexps.push(origValue) - 1) + '__@';\n }\n\n if(origValue instanceof Date) {\n return '@__D-' + UID + '-' + (dates.push(origValue) - 1) + '__@';\n }\n\n if(origValue instanceof Map) {\n return '@__M-' + UID + '-' + (maps.push(origValue) - 1) + '__@';\n }\n\n if(origValue instanceof Set) {\n return '@__S-' + UID + '-' + (sets.push(origValue) - 1) + '__@';\n }\n\n if(Array.isArray(origValue)) {\n var isSparse = Object.keys(origValue).length !== origValue.length;\n if (isSparse) {\n return '@__A-' + UID + '-' + (arrays.push(origValue) - 1) + '__@';\n }\n }\n\n if(origValue instanceof URL) {\n return '@__L-' + UID + '-' + (urls.push(origValue) - 1) + '__@';\n }\n }\n\n if (type === 'function') {\n return '@__F-' + UID + '-' + (functions.push(origValue) - 1) + '__@';\n }\n\n if (type === 'undefined') {\n return '@__U-' + UID + '-' + (undefs.push(origValue) - 1) + '__@';\n }\n\n if (type === 'number' && !isNaN(origValue) && !isFinite(origValue)) {\n return '@__I-' + UID + '-' + (infinities.push(origValue) - 1) + '__@';\n }\n\n if (type === 'bigint') {\n return '@__B-' + UID + '-' + (bigInts.push(origValue) - 1) + '__@';\n }\n\n return value;\n }\n\n function serializeFunc(fn, options) {\n var serializedFn = fn.toString();\n if (IS_NATIVE_CODE_REGEXP.test(serializedFn)) {\n throw new TypeError('Serializing native function: ' + fn.name);\n }\n\n // Escape unsafe HTML characters in function body for XSS protection\n // This must preserve arrow function syntax (=>) while escaping </script>\n if (options && options.unsafe !== true) {\n serializedFn = escapeFunctionBody(serializedFn);\n }\n\n // pure functions, example: {key: function() {}}\n if(IS_PURE_FUNCTION.test(serializedFn)) {\n return serializedFn;\n }\n\n // arrow functions, example: arg1 => arg1+5\n if(IS_ARROW_FUNCTION.test(serializedFn)) {\n return serializedFn;\n }\n\n var argsStartsAt = serializedFn.indexOf('(');\n var def = serializedFn.substr(0, argsStartsAt)\n .trim()\n .split(' ')\n .filter(function(val) { return val.length > 0 });\n\n var nonReservedSymbols = def.filter(function(val) {\n return RESERVED_SYMBOLS.indexOf(val) === -1\n });\n\n // enhanced literal objects, example: {key() {}}\n if(nonReservedSymbols.length > 0) {\n return (def.indexOf('async') > -1 ? 'async ' : '') + 'function'\n + (def.join('').indexOf('*') > -1 ? '*' : '')\n + serializedFn.substr(argsStartsAt);\n }\n\n // arrow functions\n return serializedFn;\n }\n\n // Check if the parameter is function\n if (options.ignoreFunction && typeof obj === \"function\") {\n obj = undefined;\n }\n // Protects against `JSON.stringify()` returning `undefined`, by serializing\n // to the literal string: \"undefined\".\n if (obj === undefined) {\n return String(obj);\n }\n\n var str;\n\n // Creates a JSON string representation of the value.\n // NOTE: Node 0.12 goes into slow mode with extra JSON.stringify() args.\n if (options.isJSON && !options.space) {\n str = JSON.stringify(obj);\n } else {\n str = JSON.stringify(obj, options.isJSON ? null : replacer, options.space);\n }\n\n // Protects against `JSON.stringify()` returning `undefined`, by serializing\n // to the literal string: \"undefined\".\n if (typeof str !== 'string') {\n return String(str);\n }\n\n // Replace unsafe HTML and invalid JavaScript line terminator chars with\n // their safe Unicode char counterpart. This _must_ happen before the\n // regexps and functions are serialized and added back to the string.\n if (options.unsafe !== true) {\n str = str.replace(UNSAFE_CHARS_REGEXP, escapeUnsafeChars);\n }\n\n if (functions.length === 0 && regexps.length === 0 && dates.length === 0 && maps.length === 0 && sets.length === 0 && arrays.length === 0 && undefs.length === 0 && infinities.length === 0 && bigInts.length === 0 && urls.length === 0) {\n return str;\n }\n\n // Replaces all occurrences of function, regexp, date, map and set placeholders in the\n // JSON string with their string representations. If the original value can\n // not be found, then `undefined` is used.\n return str.replace(PLACE_HOLDER_REGEXP, function (match, backSlash, type, valueIndex) {\n // The placeholder may not be preceded by a backslash. This is to prevent\n // replacing things like `\"a\\\"@__R-<UID>-0__@\"` and thus outputting\n // invalid JS.\n if (backSlash) {\n return match;\n }\n\n if (type === 'D') {\n // Validate ISO string format to prevent code injection via spoofed toISOString()\n var isoStr = String(dates[valueIndex].toISOString());\n if (!/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/.test(isoStr)) {\n throw new TypeError('Invalid Date ISO string');\n }\n return \"new Date(\\\"\" + isoStr + \"\\\")\";\n }\n\n if (type === 'R') {\n // Sanitize flags to prevent code injection (only allow valid RegExp flag characters)\n var flags = String(regexps[valueIndex].flags).replace(/[^gimsuydv]/g, '');\n return \"new RegExp(\" + serialize(regexps[valueIndex].source) + \", \\\"\" + flags + \"\\\")\";\n }\n\n if (type === 'M') {\n return \"new Map(\" + serialize(Array.from(maps[valueIndex].entries()), options) + \")\";\n }\n\n if (type === 'S') {\n return \"new Set(\" + serialize(Array.from(sets[valueIndex].values()), options) + \")\";\n }\n\n if (type === 'A') {\n return \"Array.prototype.slice.call(\" + serialize(Object.assign({ length: arrays[valueIndex].length }, arrays[valueIndex]), options) + \")\";\n }\n\n if (type === 'U') {\n return 'undefined'\n }\n\n if (type === 'I') {\n return infinities[valueIndex];\n }\n\n if (type === 'B') {\n return \"BigInt(\\\"\" + bigInts[valueIndex] + \"\\\")\";\n }\n\n if (type === 'L') {\n return \"new URL(\" + serialize(urls[valueIndex].toString(), options) + \")\";\n }\n\n var fn = functions[valueIndex];\n\n return serializeFunc(fn, options);\n });\n}\n","import { RAW_HTML_MARKER } from './const';\nimport {\n addCacheTag,\n type HtmlContentObject,\n type JSXChild,\n type JSXNode,\n type RenderedNode,\n} from './jsx-runtime';\n\nif (true) {\n console.log('render.ts');\n}\n\nconst VOID_ELEMENTS = new Set<string>([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nfunction classList(input: unknown): string {\n if (!input) return '';\n if (typeof input === 'string') return input;\n if (Array.isArray(input)) {\n return input.map(classList).filter(Boolean).join(' ');\n }\n if (typeof input === 'object') {\n return Object.keys(input as Record<string, boolean>)\n .filter((key) => (input as Record<string, boolean>)[key])\n .join(' ');\n }\n return '';\n}\n\n// Attribute-name validation, ported verbatim from React's react-dom\n// (DOMProperty.js `isAttributeNameSafe`). Untrusted spread props can carry\n// keys like `blah\" onclick=\"x` or `></div><script>…`; if such a key were\n// written as `${key}=\"…\"` it would inject new attributes / break out of the\n// tag. Names that don't match this grammar are dropped instead of emitted.\nconst ATTRIBUTE_NAME_START_CHAR =\n ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst ATTRIBUTE_NAME_CHAR =\n ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst VALID_ATTRIBUTE_NAME_REGEX = new RegExp(\n '^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$',\n);\nconst validatedAttributeNameCache: Record<string, boolean> = {};\nconst illegalAttributeNameCache: Record<string, boolean> = {};\n\nexport function isAttributeNameSafe(attributeName: string): boolean {\n if (Object.prototype.hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n return true;\n }\n if (Object.prototype.hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n if (process.env.NODE_ENV !== 'production') {\n console.error('Invalid attribute name: `%s`', attributeName);\n }\n return false;\n}\n\nexport function escapeProp(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('\"', '"')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\\n', ' ')\n .trim();\n}\n\nexport function escapeHTML(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\\n', '<br/>');\n}\n\nfunction renderAttributes(props?: Record<string, any>): string {\n if (!props) return '';\n\n let classValue = '';\n if (props.classList !== undefined) {\n classValue = classList(props.classList);\n }\n if (props.class) {\n const existingClass = typeof props.class === 'string' ? props.class : '';\n classValue = classValue ? `${classValue} ${existingClass}`.trim() : existingClass;\n }\n\n const attrs = Object.entries(props)\n .filter(\n ([key]) =>\n key !== 'children' &&\n key !== 'classList' &&\n key !== 'setHtml' &&\n key !== 'setText' &&\n key !== 'class' &&\n key !== 'key' &&\n key !== 'cacheTag',\n )\n .map(([key, value]) => {\n // Drop attribute names that could break out of the tag (injection guard).\n if (!isAttributeNameSafe(key)) return '';\n\n // HTML standard behavior with function execution support\n if (value === false || value === null || value === undefined) return '';\n if (value === true) return key;\n\n // Execute function props and get result (new feature)\n if (typeof value === 'function') {\n const result = value();\n return `${key}=\"${escapeProp(result?.toString() || '')}\"`;\n }\n\n return `${key}=\"${escapeProp(value?.toString() || '')}\"`;\n })\n .filter(Boolean) as string[];\n\n if (classValue) {\n attrs.push(`class=\"${escapeProp(classValue)}\"`);\n }\n\n return attrs.join(' ');\n}\n\nfunction renderJsxToHtmlStringInternal(element: JSXChild): string {\n // HTML standard: skip boolean, null, undefined children\n if (element === null || typeof element === 'boolean' || element === undefined) return '';\n\n if (element && typeof element === 'object' && (element as any)[RAW_HTML_MARKER]) {\n return (element as any).content || '';\n }\n\n // Support htmlContent object (new feature)\n if (element && typeof element === 'object' && 'htmlContent' in element) {\n return (element as HtmlContentObject).htmlContent;\n }\n\n if (typeof element === 'string') return escapeHTML(element.toString());\n if (typeof element === 'number') return element.toString();\n\n if (Array.isArray(element)) {\n return (element as JSXChild[]).map((el) => renderJsxToHtmlStringInternal(el)).join('');\n }\n\n const { type, props, children } = element as JSXNode;\n\n // Collect cache tags from props\n if (props?.cacheTag) {\n addCacheTag(props.cacheTag);\n }\n\n if (typeof type === 'function') {\n const componentResult = (type as any)({ ...(props || {}), children });\n // Check if component returned a RenderedNode\n if (componentResult && typeof componentResult === 'object' && 'string' in componentResult) {\n return (componentResult as RenderedNode).string;\n }\n return renderJsxToHtmlStringInternal(componentResult as JSXChild);\n }\n\n const attrs = renderAttributes(props);\n const isVoidElement = VOID_ELEMENTS.has((type as string).toLowerCase());\n\n if (isVoidElement) {\n return `<${type}${attrs ? ' ' + attrs : ''} />`;\n }\n\n let childrenHtml = '';\n if (props?.setHtml !== undefined) {\n childrenHtml = props.setHtml?.toString() || '';\n } else if (props?.setText !== undefined) {\n childrenHtml = escapeHTML(props.setText?.toString() || '');\n } else {\n childrenHtml = (children as JSXChild[]).map((el) => renderJsxToHtmlStringInternal(el)).join('');\n }\n\n return `<${type}${attrs ? ' ' + attrs : ''}>${childrenHtml}</${type}>`;\n}\n\nexport function renderJsxToHtmlString(element: JSXChild | RenderedNode): string {\n // If already a RenderedNode, return its string\n if (element && typeof element === 'object' && 'string' in element) {\n return (element as RenderedNode).string;\n }\n return renderJsxToHtmlStringInternal(element as JSXChild);\n}\n\nexport function renderToRenderedNode(element: JSXChild | RenderedNode): RenderedNode {\n // If already a RenderedNode, return as is\n if (element && typeof element === 'object' && 'string' in element) {\n return element as RenderedNode;\n }\n return {\n string: renderJsxToHtmlStringInternal(element as JSXChild),\n };\n}\n"],"names":["UID_LENGTH","UID","generateUID","PLACE_HOLDER_REGEXP","IS_NATIVE_CODE_REGEXP","IS_PURE_FUNCTION","IS_ARROW_FUNCTION","UNSAFE_CHARS_REGEXP","SCRIPT_CLOSE_REGEXP","RESERVED_SYMBOLS","ESCAPED_CHARS","escapeUnsafeChars","unsafeChar","escapeFunctionBody","str","match","bytes","result","i","deleteFunctions","obj","functionKeys","key","serializeJavascript","serialize","options","functions","regexps","dates","maps","sets","arrays","undefs","infinities","bigInts","urls","replacer","value","origValue","type","isSparse","serializeFunc","fn","serializedFn","argsStartsAt","def","val","nonReservedSymbols","backSlash","valueIndex","isoStr","flags","VOID_ELEMENTS","classList","input","ATTRIBUTE_NAME_START_CHAR","ATTRIBUTE_NAME_CHAR","VALID_ATTRIBUTE_NAME_REGEX","validatedAttributeNameCache","illegalAttributeNameCache","isAttributeNameSafe","attributeName","escapeProp","escapeHTML","renderAttributes","props","classValue","existingClass","attrs","renderJsxToHtmlStringInternal","element","RAW_HTML_MARKER","el","children","addCacheTag","componentResult","childrenHtml","renderJsxToHtmlString","renderToRenderedNode"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/seo.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as r } from "./generateMetadata-
|
|
2
|
-
import { m } from "./jsx-runtime-
|
|
1
|
+
import { M as r } from "./generateMetadata-DmoLxT6v.js";
|
|
2
|
+
import { m } from "./jsx-runtime-5m2ZiNtU.js";
|
|
3
3
|
export {
|
|
4
4
|
r as MetadataRenderer,
|
|
5
5
|
m as mergeMetadata
|
package/dist/server.js
CHANGED
|
@@ -3,7 +3,7 @@ import H from "node:fs/promises";
|
|
|
3
3
|
import d from "node:path";
|
|
4
4
|
import { pathToFileURL as I } from "node:url";
|
|
5
5
|
import V from "request-ip";
|
|
6
|
-
import { a as ot, s as J } from "./render-
|
|
6
|
+
import { a as ot, s as J } from "./render-BaTAJ4Ha.js";
|
|
7
7
|
import { c as G, p as tt, a as it } from "./index-CybB8Tdk.js";
|
|
8
8
|
import { createHash as at } from "node:crypto";
|
|
9
9
|
import { createRequire as ct } from "node:module";
|
|
@@ -199,7 +199,7 @@ function vt(t) {
|
|
|
199
199
|
}
|
|
200
200
|
return e.push(t.slice(n).trim()), e.filter(Boolean);
|
|
201
201
|
}
|
|
202
|
-
function
|
|
202
|
+
function St(t) {
|
|
203
203
|
if (!t.rawResponse)
|
|
204
204
|
return null;
|
|
205
205
|
const { body: e, contentType: n, statusCode: s, headers: i } = t.rawResponse, l = new Headers(i);
|
|
@@ -208,7 +208,7 @@ function xt(t) {
|
|
|
208
208
|
headers: l
|
|
209
209
|
});
|
|
210
210
|
}
|
|
211
|
-
async function
|
|
211
|
+
async function xt({
|
|
212
212
|
rendered: t,
|
|
213
213
|
template: e,
|
|
214
214
|
manifest: n,
|
|
@@ -216,7 +216,7 @@ async function St({
|
|
|
216
216
|
distClientDir: i,
|
|
217
217
|
isProduction: l
|
|
218
218
|
}) {
|
|
219
|
-
const c =
|
|
219
|
+
const c = St(t);
|
|
220
220
|
if (c)
|
|
221
221
|
return c;
|
|
222
222
|
if (t.redirect)
|
|
@@ -234,8 +234,8 @@ async function St({
|
|
|
234
234
|
if (l && n) {
|
|
235
235
|
let x = function(r) {
|
|
236
236
|
const m = n[r];
|
|
237
|
-
return m ? (m.css && m.css.forEach((
|
|
238
|
-
const P = n[
|
|
237
|
+
return m ? (m.css && m.css.forEach((v) => g.add(v)), m.imports && m.imports.forEach((v) => {
|
|
238
|
+
const P = n[v];
|
|
239
239
|
P?.file && T.add(P.file), P?.css && P.css.forEach((A) => g.add(A)), P?.imports && P.imports.forEach((A) => {
|
|
240
240
|
const j = n[A];
|
|
241
241
|
j?.file && T.add(j.file), j?.css && j.css.forEach((O) => g.add(O));
|
|
@@ -245,13 +245,13 @@ async function St({
|
|
|
245
245
|
a = a.filter((r) => !r.includes(".global.")), f = f.filter((r) => !r.includes(".global."));
|
|
246
246
|
const g = /* @__PURE__ */ new Set(), T = /* @__PURE__ */ new Set(), M = [];
|
|
247
247
|
for (const r of a) {
|
|
248
|
-
const m = r.replace(/^\//, ""), { file:
|
|
249
|
-
|
|
248
|
+
const m = r.replace(/^\//, ""), { file: v } = x(m);
|
|
249
|
+
v && M.push(`/${v}`);
|
|
250
250
|
}
|
|
251
251
|
const L = [];
|
|
252
252
|
for (const r of f) {
|
|
253
|
-
const m = r.replace(/^\//, ""), { file:
|
|
254
|
-
|
|
253
|
+
const m = r.replace(/^\//, ""), { file: v } = x(m);
|
|
254
|
+
v && (L.push(`/${v}`), g.add(v));
|
|
255
255
|
}
|
|
256
256
|
if (M.length > 0) {
|
|
257
257
|
const r = await pt(M, i);
|
|
@@ -267,26 +267,26 @@ async function St({
|
|
|
267
267
|
}), h.file && p.push(`/${h.file}`)), u.length > 0) {
|
|
268
268
|
const r = {};
|
|
269
269
|
for (const m of u) {
|
|
270
|
-
const
|
|
271
|
-
|
|
270
|
+
const v = n[m.src];
|
|
271
|
+
v?.file && (r[m.key] = `/${v.file}`);
|
|
272
272
|
}
|
|
273
273
|
Object.keys(r).length > 0 && (w = `<script>window.__L5E_ISLANDS__=${J(r)}<\/script>`);
|
|
274
274
|
}
|
|
275
275
|
f.length > 0 && (o += f.map((r) => `<link rel="stylesheet" crossorigin href="${r}">`).join(""));
|
|
276
276
|
}
|
|
277
277
|
let y = "";
|
|
278
|
-
l || (y = f.map((x) => `<link rel="stylesheet" href="${x}">`).join(""));
|
|
279
|
-
let
|
|
278
|
+
l || (y = [...new Set(f)].map((x) => `<link rel="stylesheet" href="${x}">`).join(""));
|
|
279
|
+
let b = [...p, ...a];
|
|
280
280
|
if (!l) {
|
|
281
281
|
const x = d.join(s, "src", "client.global.ts");
|
|
282
|
-
if (Q(x) && (
|
|
282
|
+
if (Q(x) && (b = ["/src/client.global.ts", ...b]), b = [...new Set(b)], u.length > 0) {
|
|
283
283
|
const g = {};
|
|
284
284
|
for (const T of u)
|
|
285
285
|
g[T.key] = `/${T.src}`;
|
|
286
286
|
w = `<script>window.__L5E_ISLANDS__=${J(g)}<\/script>`;
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
|
-
const
|
|
289
|
+
const S = w + b.map((x) => `<script type="module" src="${x}"><\/script>`).join(""), E = t.lang ? gt(e, t.lang) : e, $ = t.rawHtml ? t.html || "" : E.replace("<!--app-head-->", () => (t.head ?? "") + o + y).replace("<!--app-html-->", () => t.html ?? "").replace("<!--app-scripts-->", () => S), C = new Headers({
|
|
290
290
|
"Content-Type": "text/html"
|
|
291
291
|
}), R = ["public"];
|
|
292
292
|
return _ !== void 0 && R.push(`max-age=${_}`), N !== void 0 && R.push(`s-maxage=${N}`), U !== void 0 && R.push(`stale-while-revalidate=${U}`), R.length > 1 && l && C.set("Cache-Control", R.join(", ")), process.env.NODE_ENV === "production" && (k = Ct(k)), C.set("Cache-Tag", ["global", ...k].join(",")), new globalThis.Response($, {
|
|
@@ -308,15 +308,15 @@ async function $t(t = {}) {
|
|
|
308
308
|
`${n === "/" ? "" : n}/bundle-:hash.:ext`,
|
|
309
309
|
async (w, y) => {
|
|
310
310
|
try {
|
|
311
|
-
const { hash:
|
|
311
|
+
const { hash: b, ext: S } = w.params, E = `bundle-${b}.${S}`, $ = wt(E);
|
|
312
312
|
if (!$)
|
|
313
313
|
return y.status(404).send("Bundled file not found");
|
|
314
314
|
y.set({
|
|
315
315
|
"Content-Type": $.mimeType,
|
|
316
316
|
"Cache-Control": "public, max-age=31536000, immutable"
|
|
317
317
|
}), y.send($.content);
|
|
318
|
-
} catch (
|
|
319
|
-
console.error("[server] Error serving bundled file:",
|
|
318
|
+
} catch (b) {
|
|
319
|
+
console.error("[server] Error serving bundled file:", b), y.status(500).end("Internal server error");
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
);
|
|
@@ -367,21 +367,21 @@ async function $t(t = {}) {
|
|
|
367
367
|
const { actionKey: w } = o.params;
|
|
368
368
|
if (!u.test(w))
|
|
369
369
|
return p.status(400).send("Invalid action key");
|
|
370
|
-
const
|
|
371
|
-
if (!
|
|
370
|
+
const b = (await N())[w];
|
|
371
|
+
if (!b)
|
|
372
372
|
return p.status(404).send("Action not found");
|
|
373
|
-
const { modulePath:
|
|
373
|
+
const { modulePath: S, actionName: E } = b;
|
|
374
374
|
let $;
|
|
375
375
|
if (s) {
|
|
376
|
-
const A = await U(), j = A[`/src/${
|
|
376
|
+
const A = await U(), j = A[`/src/${S}/actions.tsx`] ? `/src/${S}/actions.tsx` : A[`/src/${S}/actions.ts`] ? `/src/${S}/actions.ts` : null;
|
|
377
377
|
if (!j)
|
|
378
378
|
return p.status(404).send("Action module not found");
|
|
379
379
|
$ = await A[j]();
|
|
380
380
|
} else
|
|
381
381
|
try {
|
|
382
|
-
$ = await a.ssrLoadModule(`/src/${
|
|
382
|
+
$ = await a.ssrLoadModule(`/src/${S}/actions.tsx`);
|
|
383
383
|
} catch {
|
|
384
|
-
$ = await a.ssrLoadModule(`/src/${
|
|
384
|
+
$ = await a.ssrLoadModule(`/src/${S}/actions.ts`);
|
|
385
385
|
}
|
|
386
386
|
if (!Object.prototype.hasOwnProperty.call($, E))
|
|
387
387
|
return p.status(404).send("Action not found");
|
|
@@ -406,7 +406,7 @@ async function $t(t = {}) {
|
|
|
406
406
|
return M(rt);
|
|
407
407
|
},
|
|
408
408
|
O,
|
|
409
|
-
|
|
409
|
+
S
|
|
410
410
|
);
|
|
411
411
|
return new Response(st, { headers: { "Content-Type": "text/html" } });
|
|
412
412
|
});
|
|
@@ -417,11 +417,11 @@ async function $t(t = {}) {
|
|
|
417
417
|
}), c.use(async (o, p) => {
|
|
418
418
|
try {
|
|
419
419
|
const w = o.originalUrl.replace(n, "");
|
|
420
|
-
let y,
|
|
420
|
+
let y, b, S, E;
|
|
421
421
|
if (s) {
|
|
422
422
|
y = i;
|
|
423
423
|
const h = d.join(e, "./dist/server/entry-server.js"), r = await import(I(h).href);
|
|
424
|
-
|
|
424
|
+
b = r.render, S = r.loadMiddleware;
|
|
425
425
|
const m = await H.readFile(
|
|
426
426
|
d.join(e, "./dist/client/.vite/manifest.json"),
|
|
427
427
|
"utf-8"
|
|
@@ -435,17 +435,17 @@ async function $t(t = {}) {
|
|
|
435
435
|
const h = await a.ssrLoadModule(
|
|
436
436
|
"@withl5e/l5e/entry-server"
|
|
437
437
|
);
|
|
438
|
-
|
|
438
|
+
b = h.render, S = h.loadMiddleware;
|
|
439
439
|
}
|
|
440
|
-
const $ = await
|
|
440
|
+
const $ = await S?.(), C = typeof $ == "function" ? $ : (h, r) => r(), R = {}, x = Y(o), g = G({
|
|
441
441
|
request: x,
|
|
442
442
|
requestInfo: D(o, x, n, R),
|
|
443
443
|
locals: R,
|
|
444
444
|
clientAddress: V.getClientIp(o)
|
|
445
445
|
}), T = async (h) => {
|
|
446
|
-
const r = D(o, h, n, R), m = nt(r.url, n),
|
|
447
|
-
return
|
|
448
|
-
rendered:
|
|
446
|
+
const r = D(o, h, n, R), m = nt(r.url, n), v = await b(m, r);
|
|
447
|
+
return xt({
|
|
448
|
+
rendered: v,
|
|
449
449
|
template: y,
|
|
450
450
|
manifest: E,
|
|
451
451
|
root: e,
|