From 530ded7e6886152d24b26ebda9e606699ee84b47 Mon Sep 17 00:00:00 2001 From: Vladimir Kutepov Date: Thu, 14 May 2020 10:20:32 +0300 Subject: [PATCH] 3.2.0 --- CHANGELOG.md | 8 +++++++- dist/hyperapp-render.js | 8 ++++++-- dist/hyperapp-render.js.map | 2 +- dist/hyperapp-render.min.js | 2 +- dist/hyperapp-render.min.js.map | 2 +- package.json | 2 +- src/index.js | 1 - tools/build.js | 1 + 8 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e76c7cc..94979cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [3.2.0] - 2020-05-14 + +- Add support for `Lazy` component from Hyperapp v2 + ([#16](https://github.com/kriasoft/hyperapp-render/pull/16)). + ## [3.1.0] - 2019-03-18 - Ignore `innerHTML` attribute when child nodes exist. @@ -46,7 +51,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Initial public release. -[unreleased]: https://github.com/kriasoft/hyperapp-render/compare/v3.1.0...HEAD +[unreleased]: https://github.com/kriasoft/hyperapp-render/compare/v3.2.0...HEAD +[3.2.0]: https://github.com/kriasoft/hyperapp-render/compare/v3.1.0...v3.2.0 [3.1.0]: https://github.com/kriasoft/hyperapp-render/compare/v3.0.0...v3.1.0 [3.0.0]: https://github.com/kriasoft/hyperapp-render/compare/v2.1.0...v3.0.0 [2.1.0]: https://github.com/kriasoft/hyperapp-render/compare/v2.0.0...v2.1.0 diff --git a/dist/hyperapp-render.js b/dist/hyperapp-render.js index d625fe0..76f2350 100644 --- a/dist/hyperapp-render.js +++ b/dist/hyperapp-render.js @@ -4,7 +4,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.hyperappRender = {})); -}(this, function (exports) { 'use strict'; +}(this, (function (exports) { 'use strict'; var isArray = Array.isArray; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -189,6 +189,10 @@ return resolveNode(node(state, actions), state, actions); } + if (node && node.type === 2) { + return resolveNode(node.lazy.view(node.lazy), state, actions); + } + return node; } @@ -249,5 +253,5 @@ Object.defineProperty(exports, '__esModule', { value: true }); -})); +}))); //# sourceMappingURL=hyperapp-render.js.map diff --git a/dist/hyperapp-render.js.map b/dist/hyperapp-render.js.map index ec919ea..8463ead 100644 --- a/dist/hyperapp-render.js.map +++ b/dist/hyperapp-render.js.map @@ -1 +1 @@ -{"version":3,"file":"hyperapp-render.js","sources":["src/index.js"],"sourcesContent":["const { isArray } = Array\nconst { hasOwnProperty } = Object.prototype\nconst styleNameCache = new Map()\nconst uppercasePattern = /[A-Z]/g\nconst msPattern = /^ms-/\n\n// https://www.w3.org/International/questions/qa-escapes#use\nconst escapeRegExp = /[\"&'<>]/\n\n// https://www.w3.org/TR/html/syntax.html#void-elements\nconst voidElements = new Set([\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\n// credits to https://github.com/component/escape-html\nexport function escapeHtml(value) {\n const str = '' + value\n if (typeof value === 'number') {\n // better performance for safe values\n return str\n }\n\n const match = escapeRegExp.exec(str)\n if (!match) {\n return str\n }\n\n let { index } = match\n let lastIndex = 0\n let out = ''\n\n for (let escape = ''; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"'\n break\n case 38: // &\n escape = '&'\n break\n case 39: // '\n escape = ''' // shorter than \"'\" and \"'\" plus supports HTML4\n break\n case 60: // <\n escape = '<'\n break\n case 62: // >\n escape = '>'\n break\n default:\n continue\n }\n\n if (lastIndex !== index) {\n out += str.substring(lastIndex, index)\n }\n\n lastIndex = index + 1\n out += escape\n }\n\n return lastIndex !== index ? out + str.substring(lastIndex, index) : out\n}\n\n// credits to https://github.com/jorgebucaran/classcat\nexport function concatClassNames(value) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value || ''\n }\n\n let out = ''\n let delimiter = ''\n\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const name = concatClassNames(value[i])\n if (name !== '') {\n out += delimiter + name\n delimiter = ' '\n }\n }\n } else {\n for (const name in value) {\n if (hasOwnProperty.call(value, name) && value[name]) {\n out += delimiter + name\n delimiter = ' '\n }\n }\n }\n\n return out\n}\n\n// \"backgroundColor\" => \"background-color\"\n// \"MozTransition\" => \"-moz-transition\"\n// \"msTransition\" => \"-ms-transition\"\nfunction hyphenateStyleName(styleName) {\n if (!styleNameCache.has(styleName)) {\n const name = styleName\n .replace(uppercasePattern, '-$&')\n .toLowerCase()\n .replace(msPattern, '-ms-')\n\n // returns 'undefined' instead of the 'Map' object in IE11\n styleNameCache.set(styleName, name)\n }\n return styleNameCache.get(styleName)\n}\n\nexport function stringifyStyles(style) {\n let out = ''\n let delimiter = ''\n\n for (const name in style) {\n if (hasOwnProperty.call(style, name)) {\n const value = style[name]\n\n if (value != null) {\n if (name === 'cssText') {\n out += delimiter + value\n } else {\n out += delimiter + hyphenateStyleName(name) + ':' + value\n }\n delimiter = ';'\n }\n }\n }\n\n return out\n}\n\n// https://www.w3.org/TR/html51/syntax.html#serializing-html-fragments\nfunction renderFragment(name, props, children, stack) {\n let out = ''\n let footer = ''\n\n if (name) {\n out += '<' + name\n\n for (let prop in props) {\n if (hasOwnProperty.call(props, prop)) {\n let value = props[prop]\n\n if (\n value != null &&\n prop !== 'key' &&\n prop !== 'innerHTML' &&\n prop !== '__source' && // babel-plugin-transform-react-jsx-source\n !(prop[0] === 'o' && prop[1] === 'n')\n ) {\n if (prop === 'class' || prop === 'className') {\n prop = 'class'\n value = concatClassNames(value) || false\n } else if (prop === 'style' && typeof value === 'object') {\n value = stringifyStyles(value) || false\n }\n\n if (value !== false) {\n out += ' ' + prop\n\n if (value !== true) {\n out += '=\"' + escapeHtml(value) + '\"'\n }\n }\n }\n }\n }\n\n if (voidElements.has(name)) {\n out += '/>'\n } else {\n out += '>'\n footer = ''\n }\n }\n\n if (children.length > 0) {\n stack.push({\n childIndex: 0,\n children,\n footer,\n })\n } else {\n const { innerHTML } = props\n\n if (innerHTML != null) {\n out += innerHTML\n }\n\n out += footer\n }\n\n return out\n}\n\nfunction resolveNode(node, state, actions) {\n if (typeof node === 'function') {\n return resolveNode(node(state, actions), state, actions)\n }\n\n return node\n}\n\nexport function renderer(view, state, actions) {\n const stack = [\n {\n childIndex: 0,\n children: [view],\n footer: '',\n },\n ]\n let end = false\n\n return (bytes) => {\n if (end) {\n return null\n }\n\n let out = ''\n\n while (out.length < bytes) {\n if (stack.length === 0) {\n end = true\n break\n }\n\n const frame = stack[stack.length - 1]\n\n if (frame.childIndex >= frame.children.length) {\n out += frame.footer\n stack.pop()\n } else {\n const node = resolveNode(frame.children[frame.childIndex++], state, actions)\n\n if (node != null && typeof node !== 'boolean') {\n if (isArray(node)) {\n stack.push({\n childIndex: 0,\n children: node,\n footer: '',\n })\n } else if (node.type === 3) {\n out += escapeHtml(node.name)\n } else if (typeof node === 'object') {\n out += renderFragment(\n node.name || node.nodeName,\n node.props || node.attributes,\n node.children,\n stack,\n )\n } else {\n out += escapeHtml(node)\n }\n }\n }\n }\n\n return out\n }\n}\n\nexport function renderToString(view, state, actions) {\n return renderer(view, state, actions)(Infinity)\n}\n"],"names":["isArray","Array","hasOwnProperty","Object","prototype","styleNameCache","Map","uppercasePattern","msPattern","escapeRegExp","voidElements","Set","escapeHtml","value","str","match","exec","index","lastIndex","out","escape","length","charCodeAt","substring","concatClassNames","delimiter","i","name","call","hyphenateStyleName","styleName","has","replace","toLowerCase","set","get","stringifyStyles","style","renderFragment","props","children","stack","footer","prop","push","childIndex","innerHTML","resolveNode","node","state","actions","renderer","view","end","bytes","frame","pop","type","nodeName","attributes","renderToString","Infinity"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"hyperapp-render.js","sources":["src/index.js"],"sourcesContent":["const { isArray } = Array\nconst { hasOwnProperty } = Object.prototype\nconst styleNameCache = new Map()\nconst uppercasePattern = /[A-Z]/g\nconst msPattern = /^ms-/\n\n// https://www.w3.org/International/questions/qa-escapes#use\nconst escapeRegExp = /[\"&'<>]/\n\n// https://www.w3.org/TR/html/syntax.html#void-elements\nconst voidElements = new Set([\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\n// credits to https://github.com/component/escape-html\nexport function escapeHtml(value) {\n const str = '' + value\n if (typeof value === 'number') {\n // better performance for safe values\n return str\n }\n\n const match = escapeRegExp.exec(str)\n if (!match) {\n return str\n }\n\n let { index } = match\n let lastIndex = 0\n let out = ''\n\n for (let escape = ''; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"'\n break\n case 38: // &\n escape = '&'\n break\n case 39: // '\n escape = ''' // shorter than \"'\" and \"'\" plus supports HTML4\n break\n case 60: // <\n escape = '<'\n break\n case 62: // >\n escape = '>'\n break\n default:\n continue\n }\n\n if (lastIndex !== index) {\n out += str.substring(lastIndex, index)\n }\n\n lastIndex = index + 1\n out += escape\n }\n\n return lastIndex !== index ? out + str.substring(lastIndex, index) : out\n}\n\n// credits to https://github.com/jorgebucaran/classcat\nexport function concatClassNames(value) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value || ''\n }\n\n let out = ''\n let delimiter = ''\n\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const name = concatClassNames(value[i])\n if (name !== '') {\n out += delimiter + name\n delimiter = ' '\n }\n }\n } else {\n for (const name in value) {\n if (hasOwnProperty.call(value, name) && value[name]) {\n out += delimiter + name\n delimiter = ' '\n }\n }\n }\n\n return out\n}\n\n// \"backgroundColor\" => \"background-color\"\n// \"MozTransition\" => \"-moz-transition\"\n// \"msTransition\" => \"-ms-transition\"\nfunction hyphenateStyleName(styleName) {\n if (!styleNameCache.has(styleName)) {\n const name = styleName\n .replace(uppercasePattern, '-$&')\n .toLowerCase()\n .replace(msPattern, '-ms-')\n\n // returns 'undefined' instead of the 'Map' object in IE11\n styleNameCache.set(styleName, name)\n }\n return styleNameCache.get(styleName)\n}\n\nexport function stringifyStyles(style) {\n let out = ''\n let delimiter = ''\n\n for (const name in style) {\n if (hasOwnProperty.call(style, name)) {\n const value = style[name]\n\n if (value != null) {\n if (name === 'cssText') {\n out += delimiter + value\n } else {\n out += delimiter + hyphenateStyleName(name) + ':' + value\n }\n delimiter = ';'\n }\n }\n }\n\n return out\n}\n\n// https://www.w3.org/TR/html51/syntax.html#serializing-html-fragments\nfunction renderFragment(name, props, children, stack) {\n let out = ''\n let footer = ''\n\n if (name) {\n out += '<' + name\n\n for (let prop in props) {\n if (hasOwnProperty.call(props, prop)) {\n let value = props[prop]\n\n if (\n value != null &&\n prop !== 'key' &&\n prop !== 'innerHTML' &&\n prop !== '__source' && // babel-plugin-transform-react-jsx-source\n !(prop[0] === 'o' && prop[1] === 'n')\n ) {\n if (prop === 'class' || prop === 'className') {\n prop = 'class'\n value = concatClassNames(value) || false\n } else if (prop === 'style' && typeof value === 'object') {\n value = stringifyStyles(value) || false\n }\n\n if (value !== false) {\n out += ' ' + prop\n\n if (value !== true) {\n out += '=\"' + escapeHtml(value) + '\"'\n }\n }\n }\n }\n }\n\n if (voidElements.has(name)) {\n out += '/>'\n } else {\n out += '>'\n footer = ''\n }\n }\n\n if (children.length > 0) {\n stack.push({\n childIndex: 0,\n children,\n footer,\n })\n } else {\n const { innerHTML } = props\n\n if (innerHTML != null) {\n out += innerHTML\n }\n\n out += footer\n }\n\n return out\n}\n\nfunction resolveNode(node, state, actions) {\n if (typeof node === 'function') {\n return resolveNode(node(state, actions), state, actions)\n }\n if (node && node.type === 2) {\n return resolveNode(node.lazy.view(node.lazy), state, actions)\n }\n return node\n}\n\nexport function renderer(view, state, actions) {\n const stack = [\n {\n childIndex: 0,\n children: [view],\n footer: '',\n },\n ]\n let end = false\n\n return (bytes) => {\n if (end) {\n return null\n }\n\n let out = ''\n\n while (out.length < bytes) {\n if (stack.length === 0) {\n end = true\n break\n }\n\n const frame = stack[stack.length - 1]\n\n if (frame.childIndex >= frame.children.length) {\n out += frame.footer\n stack.pop()\n } else {\n const node = resolveNode(frame.children[frame.childIndex++], state, actions)\n\n if (node != null && typeof node !== 'boolean') {\n if (isArray(node)) {\n stack.push({\n childIndex: 0,\n children: node,\n footer: '',\n })\n } else if (node.type === 3) {\n out += escapeHtml(node.name)\n } else if (typeof node === 'object') {\n out += renderFragment(\n node.name || node.nodeName,\n node.props || node.attributes,\n node.children,\n stack,\n )\n } else {\n out += escapeHtml(node)\n }\n }\n }\n }\n\n return out\n }\n}\n\nexport function renderToString(view, state, actions) {\n return renderer(view, state, actions)(Infinity)\n}\n"],"names":["isArray","Array","hasOwnProperty","Object","prototype","styleNameCache","Map","uppercasePattern","msPattern","escapeRegExp","voidElements","Set","escapeHtml","value","str","match","exec","index","lastIndex","out","escape","length","charCodeAt","substring","concatClassNames","delimiter","i","name","call","hyphenateStyleName","styleName","has","replace","toLowerCase","set","get","stringifyStyles","style","renderFragment","props","children","stack","footer","prop","push","childIndex","innerHTML","resolveNode","node","state","actions","type","lazy","view","renderer","end","bytes","frame","pop","nodeName","attributes","renderToString","Infinity"],"mappings":"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"} \ No newline at end of file diff --git a/dist/hyperapp-render.min.js b/dist/hyperapp-render.min.js index 54a3e53..48e0fa0 100644 --- a/dist/hyperapp-render.min.js +++ b/dist/hyperapp-render.min.js @@ -1,3 +1,3 @@ /*! Hyperapp Render | MIT Licence | https://github.com/kriasoft/hyperapp-render */ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e=e||self).hyperappRender={})}(this,function(e){"use strict";var c=Array.isArray,f=Object.prototype.hasOwnProperty,n=new Map,t=/[A-Z]/g,a=/^ms-/,l=/["&'<>]/,u=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function s(e){var r=""+e;if("number"==typeof e)return r;var n=l.exec(r);if(!n)return r;for(var t=n.index,a=0,o="",i="";t":(a+=">",o="")}if(0=n.children.length)r+=n.footer,i.pop();else{var t=b(n.children[n.childIndex++],a,o);null!=t&&"boolean"!=typeof t&&(c(t)?i.push({childIndex:0,children:t,footer:""}):3===t.type?r+=s(t.name):r+="object"==typeof t?h(t.name||t.nodeName,t.props||t.attributes,t.children,i):s(t))}}return r}(1/0);var a,o,i,l},Object.defineProperty(e,"__esModule",{value:!0})}); +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e=e||self).hyperappRender={})}(this,function(e){"use strict";var u=Array.isArray,f=Object.prototype.hasOwnProperty,l=new Map,c=/[A-Z]/g,s=/^ms-/,p=/["&'<>]/,d=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function h(e){var r=""+e;if("number"==typeof e)return r;var n=p.exec(r);if(!n)return r;for(var t=n.index,o=0,a="",i="";t":(i+=">",l="")}return 0=t.children.length?(r+=t.footer,i.pop()):null!=(n=function e(r,n,t){return"function"==typeof r?e(r(n,t),n,t):r&&2===r.type?e(r.lazy.view(r.lazy),n,t):r}(t.children[t.childIndex++],o,a))&&"boolean"!=typeof n&&(u(n)?i.push({childIndex:0,children:n,footer:""}):3===n.type?r+=h(n.name):r+="object"==typeof n?b(n.name||n.nodeName,n.props||n.attributes,n.children,i):h(n))}return r}}e.renderToString=function(e,r,n){return t(e,r,n)(1/0)},Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=hyperapp-render.min.js.map diff --git a/dist/hyperapp-render.min.js.map b/dist/hyperapp-render.min.js.map index 502695d..b5787c6 100644 --- a/dist/hyperapp-render.min.js.map +++ b/dist/hyperapp-render.min.js.map @@ -1 +1 @@ -{"version":3,"file":"hyperapp-render.min.js","sources":["src/index.js"],"sourcesContent":["const { isArray } = Array\nconst { hasOwnProperty } = Object.prototype\nconst styleNameCache = new Map()\nconst uppercasePattern = /[A-Z]/g\nconst msPattern = /^ms-/\n\n// https://www.w3.org/International/questions/qa-escapes#use\nconst escapeRegExp = /[\"&'<>]/\n\n// https://www.w3.org/TR/html/syntax.html#void-elements\nconst voidElements = new Set([\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\n// credits to https://github.com/component/escape-html\nexport function escapeHtml(value) {\n const str = '' + value\n if (typeof value === 'number') {\n // better performance for safe values\n return str\n }\n\n const match = escapeRegExp.exec(str)\n if (!match) {\n return str\n }\n\n let { index } = match\n let lastIndex = 0\n let out = ''\n\n for (let escape = ''; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"'\n break\n case 38: // &\n escape = '&'\n break\n case 39: // '\n escape = ''' // shorter than \"'\" and \"'\" plus supports HTML4\n break\n case 60: // <\n escape = '<'\n break\n case 62: // >\n escape = '>'\n break\n default:\n continue\n }\n\n if (lastIndex !== index) {\n out += str.substring(lastIndex, index)\n }\n\n lastIndex = index + 1\n out += escape\n }\n\n return lastIndex !== index ? out + str.substring(lastIndex, index) : out\n}\n\n// credits to https://github.com/jorgebucaran/classcat\nexport function concatClassNames(value) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value || ''\n }\n\n let out = ''\n let delimiter = ''\n\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const name = concatClassNames(value[i])\n if (name !== '') {\n out += delimiter + name\n delimiter = ' '\n }\n }\n } else {\n for (const name in value) {\n if (hasOwnProperty.call(value, name) && value[name]) {\n out += delimiter + name\n delimiter = ' '\n }\n }\n }\n\n return out\n}\n\n// \"backgroundColor\" => \"background-color\"\n// \"MozTransition\" => \"-moz-transition\"\n// \"msTransition\" => \"-ms-transition\"\nfunction hyphenateStyleName(styleName) {\n if (!styleNameCache.has(styleName)) {\n const name = styleName\n .replace(uppercasePattern, '-$&')\n .toLowerCase()\n .replace(msPattern, '-ms-')\n\n // returns 'undefined' instead of the 'Map' object in IE11\n styleNameCache.set(styleName, name)\n }\n return styleNameCache.get(styleName)\n}\n\nexport function stringifyStyles(style) {\n let out = ''\n let delimiter = ''\n\n for (const name in style) {\n if (hasOwnProperty.call(style, name)) {\n const value = style[name]\n\n if (value != null) {\n if (name === 'cssText') {\n out += delimiter + value\n } else {\n out += delimiter + hyphenateStyleName(name) + ':' + value\n }\n delimiter = ';'\n }\n }\n }\n\n return out\n}\n\n// https://www.w3.org/TR/html51/syntax.html#serializing-html-fragments\nfunction renderFragment(name, props, children, stack) {\n let out = ''\n let footer = ''\n\n if (name) {\n out += '<' + name\n\n for (let prop in props) {\n if (hasOwnProperty.call(props, prop)) {\n let value = props[prop]\n\n if (\n value != null &&\n prop !== 'key' &&\n prop !== 'innerHTML' &&\n prop !== '__source' && // babel-plugin-transform-react-jsx-source\n !(prop[0] === 'o' && prop[1] === 'n')\n ) {\n if (prop === 'class' || prop === 'className') {\n prop = 'class'\n value = concatClassNames(value) || false\n } else if (prop === 'style' && typeof value === 'object') {\n value = stringifyStyles(value) || false\n }\n\n if (value !== false) {\n out += ' ' + prop\n\n if (value !== true) {\n out += '=\"' + escapeHtml(value) + '\"'\n }\n }\n }\n }\n }\n\n if (voidElements.has(name)) {\n out += '/>'\n } else {\n out += '>'\n footer = ''\n }\n }\n\n if (children.length > 0) {\n stack.push({\n childIndex: 0,\n children,\n footer,\n })\n } else {\n const { innerHTML } = props\n\n if (innerHTML != null) {\n out += innerHTML\n }\n\n out += footer\n }\n\n return out\n}\n\nfunction resolveNode(node, state, actions) {\n if (typeof node === 'function') {\n return resolveNode(node(state, actions), state, actions)\n }\n\n return node\n}\n\nexport function renderer(view, state, actions) {\n const stack = [\n {\n childIndex: 0,\n children: [view],\n footer: '',\n },\n ]\n let end = false\n\n return (bytes) => {\n if (end) {\n return null\n }\n\n let out = ''\n\n while (out.length < bytes) {\n if (stack.length === 0) {\n end = true\n break\n }\n\n const frame = stack[stack.length - 1]\n\n if (frame.childIndex >= frame.children.length) {\n out += frame.footer\n stack.pop()\n } else {\n const node = resolveNode(frame.children[frame.childIndex++], state, actions)\n\n if (node != null && typeof node !== 'boolean') {\n if (isArray(node)) {\n stack.push({\n childIndex: 0,\n children: node,\n footer: '',\n })\n } else if (node.type === 3) {\n out += escapeHtml(node.name)\n } else if (typeof node === 'object') {\n out += renderFragment(\n node.name || node.nodeName,\n node.props || node.attributes,\n node.children,\n stack,\n )\n } else {\n out += escapeHtml(node)\n }\n }\n }\n }\n\n return out\n }\n}\n\nexport function renderToString(view, state, actions) {\n return renderer(view, state, actions)(Infinity)\n}\n"],"names":["isArray","Array","hasOwnProperty","Object","prototype","styleNameCache","Map","uppercasePattern","msPattern","escapeRegExp","voidElements","Set","escapeHtml","value","str","match","exec","index","lastIndex","out","escape","length","charCodeAt","substring","concatClassNames","delimiter","i","name","call","hyphenateStyleName","styleName","has","replace","toLowerCase","set","get","stringifyStyles","style","renderFragment","props","children","stack","footer","prop","push","childIndex","innerHTML","resolveNode","node","state","actions","view","end","bytes","frame","pop","type","nodeName","attributes","renderer","Infinity"],"mappings":";+MAAQA,EAAYC,MAAZD,QACAE,EAAmBC,OAAOC,UAA1BF,eACFG,EAAiB,IAAIC,IACrBC,EAAmB,SACnBC,EAAY,OAGZC,EAAe,UAGfC,EAAe,IAAIC,IAAI,CAC3B,OACA,OACA,KACA,MACA,QACA,KACA,MACA,QACA,OACA,OACA,QACA,SACA,QACA,QAIK,SAASC,EAAWC,OACnBC,EAAM,GAAKD,KACI,iBAAVA,SAEFC,MAGHC,EAAQN,EAAaO,KAAKF,OAC3BC,SACID,UAGHG,EAAUF,EAAVE,MACFC,EAAY,EACZC,EAAM,GAEDC,EAAS,GAAIH,EAAQH,EAAIO,OAAQJ,IAAS,QACzCH,EAAIQ,WAAWL,SAChB,GACHG,EAAS,oBAEN,GACHA,EAAS,mBAEN,GACHA,EAAS,mBAEN,GACHA,EAAS,kBAEN,GACHA,EAAS,8BAMTF,IAAcD,IAChBE,GAAOL,EAAIS,UAAUL,EAAWD,IAGlCC,EAAYD,EAAQ,EACpBE,GAAOC,SAGFF,IAAcD,EAAQE,EAAML,EAAIS,UAAUL,EAAWD,GAASE,EAIhE,SAASK,EAAiBX,MACV,iBAAVA,GAAuC,iBAAVA,SAC/BA,GAAS,OAGdM,EAAM,GACNM,EAAY,MAEZzB,EAAQa,OACL,IAAIa,EAAI,EAAGA,EAAIb,EAAMQ,OAAQK,IAAK,KAC/BC,EAAOH,EAAiBX,EAAMa,IACvB,KAATC,IACFR,GAAOM,EAAYE,EACnBF,EAAY,cAIX,IAAME,KAAQd,EACbX,EAAe0B,KAAKf,EAAOc,IAASd,EAAMc,KAC5CR,GAAOM,EAAYE,EACnBF,EAAY,YAKXN,EAMT,SAASU,EAAmBC,OACrBzB,EAAe0B,IAAID,GAAY,KAC5BH,EAAOG,EACVE,QAAQzB,EAAkB,OAC1B0B,cACAD,QAAQxB,EAAW,QAGtBH,EAAe6B,IAAIJ,EAAWH,UAEzBtB,EAAe8B,IAAIL,GAGrB,SAASM,EAAgBC,OAC1BlB,EAAM,GACNM,EAAY,OAEX,IAAME,KAAQU,KACbnC,EAAe0B,KAAKS,EAAOV,GAAO,KAC9Bd,EAAQwB,EAAMV,GAEP,MAATd,IAEAM,GADW,YAATQ,EACKF,EAAYZ,EAEZY,EAAYI,EAAmBF,GAAQ,IAAMd,EAEtDY,EAAY,YAKXN,EAIT,SAASmB,EAAeX,EAAMY,EAAOC,EAAUC,OACzCtB,EAAM,GACNuB,EAAS,MAETf,EAAM,KAGH,IAAIgB,KAFTxB,GAAO,IAAMQ,EAEIY,KACXrC,EAAe0B,KAAKW,EAAOI,GAAO,KAChC9B,EAAQ0B,EAAMI,GAGP,MAAT9B,GACS,QAAT8B,GACS,cAATA,GACS,aAATA,GACc,MAAZA,EAAK,IAA0B,MAAZA,EAAK,KAEb,UAATA,GAA6B,cAATA,GACtBA,EAAO,QACP9B,EAAQW,EAAiBX,KAAU,GACjB,UAAT8B,GAAqC,iBAAV9B,IACpCA,EAAQuB,EAAgBvB,KAAU,IAGtB,IAAVA,IACFM,GAAO,IAAMwB,GAEC,IAAV9B,IACFM,GAAO,KAAOP,EAAWC,GAAS,OAOxCH,EAAaqB,IAAIJ,GACnBR,GAAO,MAEPA,GAAO,IACPuB,EAAS,KAAOf,EAAO,QAIL,EAAlBa,EAASnB,OACXoB,EAAMG,KAAK,CACTC,WAAY,EACZL,SAAAA,EACAE,OAAAA,QAEG,KACGI,EAAcP,EAAdO,UAES,MAAbA,IACF3B,GAAO2B,GAGT3B,GAAOuB,SAGFvB,EAGT,SAAS4B,EAAYC,EAAMC,EAAOC,SACZ,mBAATF,EACFD,EAAYC,EAAKC,EAAOC,GAAUD,EAAOC,GAG3CF,mBA6DF,SAAwBG,EAAMF,EAAOC,UA1DbD,EA2DPA,EA3DcC,EA2DPA,EA1DvBT,EAAQ,CACZ,CACEI,WAAY,EACZL,SAAU,CAuDEW,GAtDZT,OAAQ,KAGRU,GAAM,EAEH,SAACC,MACFD,SACK,aAGLjC,EAAM,GAEHA,EAAIE,OAASgC,GAAO,IACJ,IAAjBZ,EAAMpB,OAAc,CACtB+B,GAAM,YAIFE,EAAQb,EAAMA,EAAMpB,OAAS,MAE/BiC,EAAMT,YAAcS,EAAMd,SAASnB,OACrCF,GAAOmC,EAAMZ,OACbD,EAAMc,UACD,KACCP,EAAOD,EAAYO,EAAMd,SAASc,EAAMT,cAAeI,EAAOC,GAExD,MAARF,GAAgC,kBAATA,IACrBhD,EAAQgD,GACVP,EAAMG,KAAK,CACTC,WAAY,EACZL,SAAUQ,EACVN,OAAQ,KAEa,IAAdM,EAAKQ,KACdrC,GAAOP,EAAWoC,EAAKrB,MAEvBR,GADyB,iBAAT6B,EACTV,EACLU,EAAKrB,MAAQqB,EAAKS,SAClBT,EAAKT,OAASS,EAAKU,WACnBV,EAAKR,SACLC,GAGK7B,EAAWoC,YAMnB7B,EAKFwC,CAA+BC,EAAAA,GA3DjC,IAAwBX,EAAOC,EAC9BT,EAOFW"} \ No newline at end of file +{"version":3,"file":"hyperapp-render.min.js","sources":["src/index.js"],"sourcesContent":["const { isArray } = Array\nconst { hasOwnProperty } = Object.prototype\nconst styleNameCache = new Map()\nconst uppercasePattern = /[A-Z]/g\nconst msPattern = /^ms-/\n\n// https://www.w3.org/International/questions/qa-escapes#use\nconst escapeRegExp = /[\"&'<>]/\n\n// https://www.w3.org/TR/html/syntax.html#void-elements\nconst voidElements = new Set([\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\n// credits to https://github.com/component/escape-html\nexport function escapeHtml(value) {\n const str = '' + value\n if (typeof value === 'number') {\n // better performance for safe values\n return str\n }\n\n const match = escapeRegExp.exec(str)\n if (!match) {\n return str\n }\n\n let { index } = match\n let lastIndex = 0\n let out = ''\n\n for (let escape = ''; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"'\n break\n case 38: // &\n escape = '&'\n break\n case 39: // '\n escape = ''' // shorter than \"'\" and \"'\" plus supports HTML4\n break\n case 60: // <\n escape = '<'\n break\n case 62: // >\n escape = '>'\n break\n default:\n continue\n }\n\n if (lastIndex !== index) {\n out += str.substring(lastIndex, index)\n }\n\n lastIndex = index + 1\n out += escape\n }\n\n return lastIndex !== index ? out + str.substring(lastIndex, index) : out\n}\n\n// credits to https://github.com/jorgebucaran/classcat\nexport function concatClassNames(value) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value || ''\n }\n\n let out = ''\n let delimiter = ''\n\n if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const name = concatClassNames(value[i])\n if (name !== '') {\n out += delimiter + name\n delimiter = ' '\n }\n }\n } else {\n for (const name in value) {\n if (hasOwnProperty.call(value, name) && value[name]) {\n out += delimiter + name\n delimiter = ' '\n }\n }\n }\n\n return out\n}\n\n// \"backgroundColor\" => \"background-color\"\n// \"MozTransition\" => \"-moz-transition\"\n// \"msTransition\" => \"-ms-transition\"\nfunction hyphenateStyleName(styleName) {\n if (!styleNameCache.has(styleName)) {\n const name = styleName\n .replace(uppercasePattern, '-$&')\n .toLowerCase()\n .replace(msPattern, '-ms-')\n\n // returns 'undefined' instead of the 'Map' object in IE11\n styleNameCache.set(styleName, name)\n }\n return styleNameCache.get(styleName)\n}\n\nexport function stringifyStyles(style) {\n let out = ''\n let delimiter = ''\n\n for (const name in style) {\n if (hasOwnProperty.call(style, name)) {\n const value = style[name]\n\n if (value != null) {\n if (name === 'cssText') {\n out += delimiter + value\n } else {\n out += delimiter + hyphenateStyleName(name) + ':' + value\n }\n delimiter = ';'\n }\n }\n }\n\n return out\n}\n\n// https://www.w3.org/TR/html51/syntax.html#serializing-html-fragments\nfunction renderFragment(name, props, children, stack) {\n let out = ''\n let footer = ''\n\n if (name) {\n out += '<' + name\n\n for (let prop in props) {\n if (hasOwnProperty.call(props, prop)) {\n let value = props[prop]\n\n if (\n value != null &&\n prop !== 'key' &&\n prop !== 'innerHTML' &&\n prop !== '__source' && // babel-plugin-transform-react-jsx-source\n !(prop[0] === 'o' && prop[1] === 'n')\n ) {\n if (prop === 'class' || prop === 'className') {\n prop = 'class'\n value = concatClassNames(value) || false\n } else if (prop === 'style' && typeof value === 'object') {\n value = stringifyStyles(value) || false\n }\n\n if (value !== false) {\n out += ' ' + prop\n\n if (value !== true) {\n out += '=\"' + escapeHtml(value) + '\"'\n }\n }\n }\n }\n }\n\n if (voidElements.has(name)) {\n out += '/>'\n } else {\n out += '>'\n footer = ''\n }\n }\n\n if (children.length > 0) {\n stack.push({\n childIndex: 0,\n children,\n footer,\n })\n } else {\n const { innerHTML } = props\n\n if (innerHTML != null) {\n out += innerHTML\n }\n\n out += footer\n }\n\n return out\n}\n\nfunction resolveNode(node, state, actions) {\n if (typeof node === 'function') {\n return resolveNode(node(state, actions), state, actions)\n }\n if (node && node.type === 2) {\n return resolveNode(node.lazy.view(node.lazy), state, actions)\n }\n return node\n}\n\nexport function renderer(view, state, actions) {\n const stack = [\n {\n childIndex: 0,\n children: [view],\n footer: '',\n },\n ]\n let end = false\n\n return (bytes) => {\n if (end) {\n return null\n }\n\n let out = ''\n\n while (out.length < bytes) {\n if (stack.length === 0) {\n end = true\n break\n }\n\n const frame = stack[stack.length - 1]\n\n if (frame.childIndex >= frame.children.length) {\n out += frame.footer\n stack.pop()\n } else {\n const node = resolveNode(frame.children[frame.childIndex++], state, actions)\n\n if (node != null && typeof node !== 'boolean') {\n if (isArray(node)) {\n stack.push({\n childIndex: 0,\n children: node,\n footer: '',\n })\n } else if (node.type === 3) {\n out += escapeHtml(node.name)\n } else if (typeof node === 'object') {\n out += renderFragment(\n node.name || node.nodeName,\n node.props || node.attributes,\n node.children,\n stack,\n )\n } else {\n out += escapeHtml(node)\n }\n }\n }\n }\n\n return out\n }\n}\n\nexport function renderToString(view, state, actions) {\n return renderer(view, state, actions)(Infinity)\n}\n"],"names":["isArray","Array","hasOwnProperty","Object","prototype","styleNameCache","Map","uppercasePattern","msPattern","escapeRegExp","voidElements","Set","escapeHtml","value","str","match","exec","index","lastIndex","out","escape","length","charCodeAt","substring","stringifyStyles","style","styleName","name","delimiter","call","has","replace","toLowerCase","set","get","renderFragment","props","children","stack","innerHTML","footer","prop","concatClassNames","i","push","childIndex","renderer","view","state","actions","end","bytes","node","frame","pop","resolveNode","type","lazy","nodeName","attributes","Infinity"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 561f320..1b64310 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "hyperapp-render", - "version": "3.1.0", + "version": "3.2.0", "description": "Render Hyperapp to an HTML string with SSR and Node.js streaming support", "repository": "kriasoft/hyperapp-render", "author": "Vladimir Kutepov", diff --git a/src/index.js b/src/index.js index 51e4c24..6fa88d6 100644 --- a/src/index.js +++ b/src/index.js @@ -212,7 +212,6 @@ function resolveNode(node, state, actions) { if (node && node.type === 2) { return resolveNode(node.lazy.view(node.lazy), state, actions) } - return node } diff --git a/tools/build.js b/tools/build.js index 40ea0b0..0b8d97c 100644 --- a/tools/build.js +++ b/tools/build.js @@ -66,6 +66,7 @@ async function build() { loose: true, useBuiltIns: 'entry', exclude: ['transform-typeof-symbol'], + corejs: 3, }, ], ],