@b9g/crank 0.5.6 → 0.6.0

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/jsx-tag.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-tag.cjs","sources":["../src/jsx-tag.ts"],"sourcesContent":["import {createElement} from \"./crank.js\";\nimport type {Element} from \"./crank.js\";\n\nconst cache = new Map<string, ParseResult>();\nexport function jsx(\n\tspans: TemplateStringsArray,\n\t...expressions: Array<unknown>\n): Element {\n\tconst key = JSON.stringify(spans.raw);\n\tlet parseResult = cache.get(key);\n\tif (parseResult == null) {\n\t\tparseResult = parse(spans.raw);\n\t\tcache.set(key, parseResult);\n\t}\n\n\tconst {element, targets} = parseResult;\n\tfor (let i = 0; i < expressions.length; i++) {\n\t\tconst exp = expressions[i];\n\t\tconst target = targets[i];\n\t\tif (target) {\n\t\t\tif (target.type === \"error\") {\n\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\ttarget.message.replace(\"${}\", formatTagForError(exp)),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttarget.value = exp;\n\t\t}\n\t}\n\n\treturn build(element);\n}\n\n// Type definitions for a bare-bones AST\ninterface ParseElement {\n\ttype: \"element\";\n\topen: ParseTag;\n\tclose: ParseTag | null;\n\t// ParseValue is used to represent spread props.\n\tprops: Array<ParseProp | ParseValue>;\n\tchildren: Array<ParseElement | ParseValue>;\n}\n\ninterface ParseValue {\n\ttype: \"value\";\n\tvalue: any;\n}\n\ninterface ParseTag {\n\ttype: \"tag\";\n\tslash: string;\n\tvalue: any;\n}\n\ninterface ParseProp {\n\ttype: \"prop\";\n\tname: string;\n\tvalue: ParseValue | ParsePropString;\n}\n\ninterface ParsePropString {\n\ttype: \"propString\";\n\tparts: Array<string | ParseValue>;\n}\n\ninterface ParseError {\n\ttype: \"error\";\n\tmessage: string;\n\tvalue: any;\n}\n\n// The parse result includes an array of targets, references to objects in the\n// parse tree whose `value` property is overwritten with expressions when the\n// template function is called. By separating the logic of parsing static\n// template spans from the handling of dynamic expressions, we can cache parse\n// results for successive calls.\ntype ExpressionTarget = ParseValue | ParseTag | ParseProp | ParseError;\n\ninterface ParseResult {\n\telement: ParseElement;\n\ttargets: Array<ExpressionTarget | null>;\n}\n\n/**\n * Matches first significant character in children mode.\n *\n * Group 1: newline\n * Group 2: comment\n * Group 3: tag\n * Group 4: closing slash\n * Group 5: tag name\n *\n * The comment group must appear first because the tag group can potentially\n * match a comment, so that we can handle tag expressions where we’ve reached\n * the end of a span.\n */\nconst CHILDREN_RE =\n\t/((?:\\r|\\n|\\r\\n)\\s*)|(<!--[\\S\\s]*?(?:-->|$))|(<\\s*(\\/{0,2})\\s*([-_$\\w]*))/g;\n\n/**\n * Matches props after element tags.\n *\n * Group 1: tag end\n * Group 2: spread props\n * Group 3: prop name\n * Group 4: equals\n * Group 5: prop value string\n */\nconst PROPS_RE =\n\t/\\s*(?:(\\/?\\s*>)|(\\.\\.\\.\\s*)|(?:([-_$\\w]+)\\s*(=)?\\s*(?:(\"(\\\\\"|[\\S\\s])*?(?:\"|$)|'(?:\\\\'|[\\S\\s])*?(?:'|$)))?))/g;\n\nconst CLOSING_BRACKET_RE = />/g;\n\nconst CLOSING_SINGLE_QUOTE_RE = /[^\\\\]?'/g;\n\nconst CLOSING_DOUBLE_QUOTE_RE = /[^\\\\]?\"/g;\n\nconst CLOSING_COMMENT_RE = /-->/g;\n\nfunction parse(spans: ArrayLike<string>): ParseResult {\n\tlet matcher = CHILDREN_RE;\n\tconst stack: Array<ParseElement> = [];\n\tlet element: ParseElement = {\n\t\ttype: \"element\",\n\t\topen: {type: \"tag\", slash: \"\", value: \"\"},\n\t\tclose: null,\n\t\tprops: [],\n\t\tchildren: [],\n\t};\n\n\tconst targets: Array<ExpressionTarget | null> = [];\n\tlet lineStart = true;\n\tfor (let s = 0; s < spans.length; s++) {\n\t\tconst span = spans[s];\n\t\t// Whether or not an expression is upcoming. Used to provide better errors.\n\t\tconst expressing = s < spans.length - 1;\n\t\tlet expressionTarget: ExpressionTarget | null = null;\n\t\tfor (let i = 0, end = i; i < span.length; i = end) {\n\t\t\tmatcher.lastIndex = i;\n\t\t\tconst match = matcher.exec(span);\n\t\t\tend = match ? match.index + match[0].length : span.length;\n\t\t\tswitch (matcher) {\n\t\t\t\tcase CHILDREN_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst [, newline, comment, tag, closingSlash, tagName] = match;\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tlet before = span.slice(i, match.index);\n\t\t\t\t\t\t\tif (lineStart) {\n\t\t\t\t\t\t\t\tbefore = before.replace(/^\\s*/, \"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (newline) {\n\t\t\t\t\t\t\t\tif (span[Math.max(0, match.index - 1)] === \"\\\\\") {\n\t\t\t\t\t\t\t\t\t// We preserve whitespace before escaped newlines and have to\n\t\t\t\t\t\t\t\t\t// remove the backslash.\n\t\t\t\t\t\t\t\t\t// jsx` \\\n\t\t\t\t\t\t\t\t\t// `\n\t\t\t\t\t\t\t\t\tbefore = before.slice(0, -1);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbefore = before.replace(/\\s*$/, \"\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\t\telement.children.push({type: \"value\", value: before});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineStart = !!newline;\n\t\t\t\t\t\tif (comment) {\n\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t// Expression in a comment:\n\t\t\t\t\t\t\t\t// jsx`<!-- ${exp} -->`\n\t\t\t\t\t\t\t\tmatcher = CLOSING_COMMENT_RE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (tag) {\n\t\t\t\t\t\t\tif (closingSlash) {\n\t\t\t\t\t\t\t\telement.close = {\n\t\t\t\t\t\t\t\t\ttype: \"tag\",\n\t\t\t\t\t\t\t\t\tslash: closingSlash,\n\t\t\t\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (!stack.length) {\n\t\t\t\t\t\t\t\t\tif (end !== span.length) {\n\t\t\t\t\t\t\t\t\t\tthrow new SyntaxError(`Unmatched closing tag \"${tagName}\"`);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// ERROR EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = {\n\t\t\t\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\t\t\t\tmessage: \"Unmatched closing tag ${}\",\n\t\t\t\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\t\t// TAG EXPRESSION\n\t\t\t\t\t\t\t\t\t\texpressionTarget = element.close;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\telement = stack.pop()!;\n\t\t\t\t\t\t\t\t\tmatcher = CLOSING_BRACKET_RE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst next: ParseElement = {\n\t\t\t\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\t\t\t\topen: {\n\t\t\t\t\t\t\t\t\t\ttype: \"tag\",\n\t\t\t\t\t\t\t\t\t\tslash: \"\",\n\t\t\t\t\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tclose: null,\n\t\t\t\t\t\t\t\t\tprops: [],\n\t\t\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\telement.children.push(next);\n\t\t\t\t\t\t\t\tstack.push(element);\n\t\t\t\t\t\t\t\telement = next;\n\t\t\t\t\t\t\t\tmatcher = PROPS_RE;\n\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\t// TAG EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = element.open;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (i < span.length) {\n\t\t\t\t\t\t\tlet after = span.slice(i);\n\t\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\t\t// trim trailing whitespace\n\t\t\t\t\t\t\t\tafter = after.replace(/\\s*$/, \"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\t\telement.children.push({type: \"value\", value: after});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase PROPS_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst [, tagEnd, spread, name, equals, string] = match;\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, match.index).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tagEnd) {\n\t\t\t\t\t\t\tif (tagEnd[0] === \"/\") {\n\t\t\t\t\t\t\t\t// This is a self-closing element, so there will always be a\n\t\t\t\t\t\t\t\t// result on the stack.\n\t\t\t\t\t\t\t\telement = stack.pop()!;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t\t} else if (spread) {\n\t\t\t\t\t\t\tconst value = {\n\t\t\t\t\t\t\t\ttype: \"value\" as const,\n\t\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telement.props.push(value);\n\t\t\t\t\t\t\t// SPREAD PROP EXPRESSION\n\t\t\t\t\t\t\texpressionTarget = value;\n\t\t\t\t\t\t\tif (!(expressing && end === span.length)) {\n\t\t\t\t\t\t\t\tthrow new SyntaxError('Expression expected after \"...\"');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (name) {\n\t\t\t\t\t\t\tlet value: ParseValue | ParsePropString;\n\t\t\t\t\t\t\tif (string == null) {\n\t\t\t\t\t\t\t\tif (!equals) {\n\t\t\t\t\t\t\t\t\tvalue = {type: \"value\", value: true};\n\t\t\t\t\t\t\t\t} else if (end < span.length) {\n\t\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(end, end + 20)}\\``,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = {type: \"value\" as const, value: null};\n\t\t\t\t\t\t\t\t\t// PROP EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = value;\n\t\t\t\t\t\t\t\t\tif (!(expressing && end === span.length)) {\n\t\t\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t\t\t`Expression expected for prop \"${name}\"`,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst quote = string[0];\n\t\t\t\t\t\t\t\tvalue = {type: \"propString\", parts: []};\n\t\t\t\t\t\t\t\tvalue.parts.push(string);\n\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\tmatcher =\n\t\t\t\t\t\t\t\t\t\tquote === \"'\"\n\t\t\t\t\t\t\t\t\t\t\t? CLOSING_SINGLE_QUOTE_RE\n\t\t\t\t\t\t\t\t\t\t\t: CLOSING_DOUBLE_QUOTE_RE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst prop = {\n\t\t\t\t\t\t\t\ttype: \"prop\" as const,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telement.props.push(prop);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tif (i === span.length) {\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t`Expected props but reached end of document`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, i + 20).trim()}\\``,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Unexpected expression errors are handled in the outer loop.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// This would most likely be the starting point for the logic of\n\t\t\t\t\t\t// prop name expressions.\n\t\t\t\t\t\t// jsx`<p ${name}=${value}>`\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_BRACKET_RE: {\n\t\t\t\t\t// We’re in a closing tag and looking for the >.\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, match.index).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, i + 20).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_SINGLE_QUOTE_RE:\n\t\t\t\tcase CLOSING_DOUBLE_QUOTE_RE: {\n\t\t\t\t\tconst string = span.slice(i, end);\n\t\t\t\t\tconst prop = element.props[element.props.length - 1] as ParseProp;\n\t\t\t\t\tconst propString = prop.value as ParsePropString;\n\t\t\t\t\tpropString.parts.push(string);\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tmatcher = PROPS_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Missing \\`${\n\t\t\t\t\t\t\t\t\tmatcher === CLOSING_SINGLE_QUOTE_RE ? \"'\" : '\"'\n\t\t\t\t\t\t\t\t}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_COMMENT_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\"Expected `-->` but reached end of template\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expressing) {\n\t\t\tif (expressionTarget) {\n\t\t\t\ttargets.push(expressionTarget);\n\t\t\t\tif (expressionTarget.type === \"error\") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tswitch (matcher) {\n\t\t\t\tcase CHILDREN_RE: {\n\t\t\t\t\tconst target = {type: \"value\" as const, value: null};\n\t\t\t\t\telement.children.push(target);\n\t\t\t\t\ttargets.push(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_SINGLE_QUOTE_RE:\n\t\t\t\tcase CLOSING_DOUBLE_QUOTE_RE: {\n\t\t\t\t\tconst prop = element.props[element.props.length - 1] as ParseProp;\n\t\t\t\t\tconst target = {type: \"value\" as const, value: null};\n\t\t\t\t\t(prop.value as ParsePropString).parts.push(target);\n\t\t\t\t\ttargets.push(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_COMMENT_RE:\n\t\t\t\t\ttargets.push(null);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new SyntaxError(\"Unexpected expression\");\n\t\t\t}\n\t\t} else if (expressionTarget) {\n\t\t\tthrow new SyntaxError(\"Expression expected\");\n\t\t}\n\n\t\tlineStart = false;\n\t}\n\n\tif (stack.length) {\n\t\tconst ti = targets.indexOf(element.open);\n\t\tif (ti === -1) {\n\t\t\tthrow new SyntaxError(`Unmatched opening tag \"${element.open.value}\"`);\n\t\t}\n\n\t\ttargets[ti] = {\n\t\t\ttype: \"error\",\n\t\t\tmessage: \"Unmatched opening tag ${}\",\n\t\t\tvalue: null,\n\t\t};\n\t}\n\n\tif (element.children.length === 1 && element.children[0].type === \"element\") {\n\t\telement = element.children[0];\n\t}\n\n\treturn {element, targets};\n}\n\nfunction build(parsed: ParseElement): Element {\n\tif (\n\t\tparsed.close !== null &&\n\t\tparsed.close.slash !== \"//\" &&\n\t\tparsed.open.value !== parsed.close.value\n\t) {\n\t\tthrow new SyntaxError(\n\t\t\t`Unmatched closing tag ${formatTagForError(\n\t\t\t\tparsed.close.value,\n\t\t\t)}, expected ${formatTagForError(parsed.open.value)}`,\n\t\t);\n\t}\n\n\tconst children: Array<unknown> = [];\n\tfor (let i = 0; i < parsed.children.length; i++) {\n\t\tconst child = parsed.children[i];\n\t\tchildren.push(child.type === \"element\" ? build(child) : child.value);\n\t}\n\n\tlet props = parsed.props.length ? ({} as Record<string, unknown>) : null;\n\tfor (let i = 0; i < parsed.props.length; i++) {\n\t\tconst prop = parsed.props[i];\n\t\tif (prop.type === \"prop\") {\n\t\t\tlet value: any;\n\t\t\tif (prop.value.type === \"value\") {\n\t\t\t\tvalue = prop.value.value;\n\t\t\t} else {\n\t\t\t\tlet string = \"\";\n\t\t\t\tfor (let i = 0; i < prop.value.parts.length; i++) {\n\t\t\t\t\tconst part = prop.value.parts[i];\n\t\t\t\t\tif (typeof part === \"string\") {\n\t\t\t\t\t\tstring += part;\n\t\t\t\t\t} else if (typeof part.value !== \"boolean\" && part.value != null) {\n\t\t\t\t\t\tstring +=\n\t\t\t\t\t\t\ttypeof part.value === \"string\" ? part.value : String(part.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = string\n\t\t\t\t\t// remove quotes\n\t\t\t\t\t.slice(1, -1)\n\t\t\t\t\t// unescape things\n\t\t\t\t\t// adapted from https://stackoverflow.com/a/57330383/1825413\n\t\t\t\t\t.replace(\n\t\t\t\t\t\t/\\\\x[0-9a-f]{2}|\\\\u[0-9a-f]{4}|\\\\u\\{[0-9a-f]+\\}|\\\\./gi,\n\t\t\t\t\t\t(match) => {\n\t\t\t\t\t\t\tswitch (match[1]) {\n\t\t\t\t\t\t\t\tcase \"b\":\n\t\t\t\t\t\t\t\t\treturn \"\\b\";\n\t\t\t\t\t\t\t\tcase \"f\":\n\t\t\t\t\t\t\t\t\treturn \"\\f\";\n\t\t\t\t\t\t\t\tcase \"n\":\n\t\t\t\t\t\t\t\t\treturn \"\\n\";\n\t\t\t\t\t\t\t\tcase \"r\":\n\t\t\t\t\t\t\t\t\treturn \"\\r\";\n\t\t\t\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\t\t\t\treturn \"\\t\";\n\t\t\t\t\t\t\t\tcase \"v\":\n\t\t\t\t\t\t\t\t\treturn \"\\v\";\n\t\t\t\t\t\t\t\tcase \"x\":\n\t\t\t\t\t\t\t\t\treturn String.fromCharCode(parseInt(match.slice(2), 16));\n\t\t\t\t\t\t\t\tcase \"u\":\n\t\t\t\t\t\t\t\t\tif (match[2] === \"{\") {\n\t\t\t\t\t\t\t\t\t\treturn String.fromCodePoint(\n\t\t\t\t\t\t\t\t\t\t\tparseInt(match.slice(3, -1), 16),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn String.fromCharCode(parseInt(match.slice(2), 16));\n\t\t\t\t\t\t\t\tcase \"0\":\n\t\t\t\t\t\t\t\t\treturn \"\\0\";\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn match.slice(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tprops![prop.name] = value;\n\t\t} else {\n\t\t\t// spread prop\n\t\t\tprops = {...props, ...(prop.value as any)};\n\t\t}\n\t}\n\n\treturn createElement(parsed.open.value, props, ...children);\n}\n\nfunction formatTagForError(tag: unknown): string {\n\treturn typeof tag === \"function\"\n\t\t? tag.name + \"()\"\n\t\t: typeof tag === \"string\"\n\t\t? `\"${tag}\"`\n\t\t: JSON.stringify(tag);\n}\n"],"names":["createElement"],"mappings":"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"}
1
+ {"version":3,"file":"jsx-tag.cjs","sources":["../src/jsx-tag.ts"],"sourcesContent":["import {createElement} from \"./crank.js\";\nimport type {Element} from \"./crank.js\";\n\nconst cache = new Map<string, ParseResult>();\nexport function jsx(\n\tspans: TemplateStringsArray,\n\t...expressions: Array<unknown>\n): Element {\n\tconst key = JSON.stringify(spans.raw);\n\tlet parseResult = cache.get(key);\n\tif (parseResult == null) {\n\t\tparseResult = parse(spans.raw);\n\t\tcache.set(key, parseResult);\n\t}\n\n\tconst {element, targets} = parseResult;\n\tfor (let i = 0; i < expressions.length; i++) {\n\t\tconst exp = expressions[i];\n\t\tconst target = targets[i];\n\t\tif (target) {\n\t\t\tif (target.type === \"error\") {\n\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\ttarget.message.replace(\"${}\", formatTagForError(exp)),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttarget.value = exp;\n\t\t}\n\t}\n\n\treturn build(element);\n}\n\n// Type definitions for a bare-bones AST\ninterface ParseElement {\n\ttype: \"element\";\n\topen: ParseTag;\n\tclose: ParseTag | null;\n\t// ParseValue is used to represent spread props.\n\tprops: Array<ParseProp | ParseValue>;\n\tchildren: Array<ParseElement | ParseValue>;\n}\n\ninterface ParseValue {\n\ttype: \"value\";\n\tvalue: any;\n}\n\ninterface ParseTag {\n\ttype: \"tag\";\n\tslash: string;\n\tvalue: any;\n}\n\ninterface ParseProp {\n\ttype: \"prop\";\n\tname: string;\n\tvalue: ParseValue | ParsePropString;\n}\n\ninterface ParsePropString {\n\ttype: \"propString\";\n\tparts: Array<string | ParseValue>;\n}\n\ninterface ParseError {\n\ttype: \"error\";\n\tmessage: string;\n\tvalue: any;\n}\n\n// The parse result includes an array of targets, references to objects in the\n// parse tree whose `value` property is overwritten with expressions when the\n// template function is called. By separating the logic of parsing static\n// template spans from the handling of dynamic expressions, we can cache parse\n// results for successive calls.\ntype ExpressionTarget = ParseValue | ParseTag | ParseProp | ParseError;\n\ninterface ParseResult {\n\telement: ParseElement;\n\ttargets: Array<ExpressionTarget | null>;\n}\n\n/**\n * Matches first significant character in children mode.\n *\n * Group 1: newline\n * Group 2: comment\n * Group 3: tag\n * Group 4: closing slash\n * Group 5: tag name\n *\n * The comment group must appear first because the tag group can potentially\n * match a comment, so that we can handle tag expressions where we’ve reached\n * the end of a span.\n */\nconst CHILDREN_RE =\n\t/((?:\\r|\\n|\\r\\n)\\s*)|(<!--[\\S\\s]*?(?:-->|$))|(<\\s*(\\/{0,2})\\s*([-_$\\w]*))/g;\n\n/**\n * Matches props after element tags.\n *\n * Group 1: tag end\n * Group 2: spread props\n * Group 3: prop name\n * Group 4: equals\n * Group 5: prop value string\n */\nconst PROPS_RE =\n\t/\\s*(?:(\\/?\\s*>)|(\\.\\.\\.\\s*)|(?:([-_$\\w]+)\\s*(=)?\\s*(?:(\"(\\\\\"|[\\S\\s])*?(?:\"|$)|'(?:\\\\'|[\\S\\s])*?(?:'|$)))?))/g;\n\nconst CLOSING_BRACKET_RE = />/g;\n\nconst CLOSING_SINGLE_QUOTE_RE = /[^\\\\]?'/g;\n\nconst CLOSING_DOUBLE_QUOTE_RE = /[^\\\\]?\"/g;\n\nconst CLOSING_COMMENT_RE = /-->/g;\n\nfunction parse(spans: ArrayLike<string>): ParseResult {\n\tlet matcher = CHILDREN_RE;\n\tconst stack: Array<ParseElement> = [];\n\tlet element: ParseElement = {\n\t\ttype: \"element\",\n\t\topen: {type: \"tag\", slash: \"\", value: \"\"},\n\t\tclose: null,\n\t\tprops: [],\n\t\tchildren: [],\n\t};\n\n\tconst targets: Array<ExpressionTarget | null> = [];\n\tlet lineStart = true;\n\tfor (let s = 0; s < spans.length; s++) {\n\t\tconst span = spans[s];\n\t\t// Whether or not an expression is upcoming. Used to provide better errors.\n\t\tconst expressing = s < spans.length - 1;\n\t\tlet expressionTarget: ExpressionTarget | null = null;\n\t\tfor (let i = 0, end = i; i < span.length; i = end) {\n\t\t\tmatcher.lastIndex = i;\n\t\t\tconst match = matcher.exec(span);\n\t\t\tend = match ? match.index + match[0].length : span.length;\n\t\t\tswitch (matcher) {\n\t\t\t\tcase CHILDREN_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst [, newline, comment, tag, closingSlash, tagName] = match;\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tlet before = span.slice(i, match.index);\n\t\t\t\t\t\t\tif (lineStart) {\n\t\t\t\t\t\t\t\tbefore = before.replace(/^\\s*/, \"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (newline) {\n\t\t\t\t\t\t\t\tif (span[Math.max(0, match.index - 1)] === \"\\\\\") {\n\t\t\t\t\t\t\t\t\t// We preserve whitespace before escaped newlines and have to\n\t\t\t\t\t\t\t\t\t// remove the backslash.\n\t\t\t\t\t\t\t\t\t// jsx` \\\n\t\t\t\t\t\t\t\t\t// `\n\t\t\t\t\t\t\t\t\tbefore = before.slice(0, -1);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbefore = before.replace(/\\s*$/, \"\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\t\telement.children.push({type: \"value\", value: before});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineStart = !!newline;\n\t\t\t\t\t\tif (comment) {\n\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t// Expression in a comment:\n\t\t\t\t\t\t\t\t// jsx`<!-- ${exp} -->`\n\t\t\t\t\t\t\t\tmatcher = CLOSING_COMMENT_RE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (tag) {\n\t\t\t\t\t\t\tif (closingSlash) {\n\t\t\t\t\t\t\t\telement.close = {\n\t\t\t\t\t\t\t\t\ttype: \"tag\",\n\t\t\t\t\t\t\t\t\tslash: closingSlash,\n\t\t\t\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (!stack.length) {\n\t\t\t\t\t\t\t\t\tif (end !== span.length) {\n\t\t\t\t\t\t\t\t\t\tthrow new SyntaxError(`Unmatched closing tag \"${tagName}\"`);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// ERROR EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = {\n\t\t\t\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\t\t\t\tmessage: \"Unmatched closing tag ${}\",\n\t\t\t\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\t\t// TAG EXPRESSION\n\t\t\t\t\t\t\t\t\t\texpressionTarget = element.close;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\telement = stack.pop()!;\n\t\t\t\t\t\t\t\t\tmatcher = CLOSING_BRACKET_RE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst next: ParseElement = {\n\t\t\t\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\t\t\t\topen: {\n\t\t\t\t\t\t\t\t\t\ttype: \"tag\",\n\t\t\t\t\t\t\t\t\t\tslash: \"\",\n\t\t\t\t\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tclose: null,\n\t\t\t\t\t\t\t\t\tprops: [],\n\t\t\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\telement.children.push(next);\n\t\t\t\t\t\t\t\tstack.push(element);\n\t\t\t\t\t\t\t\telement = next;\n\t\t\t\t\t\t\t\tmatcher = PROPS_RE;\n\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\t// TAG EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = element.open;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (i < span.length) {\n\t\t\t\t\t\t\tlet after = span.slice(i);\n\t\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\t\t// trim trailing whitespace\n\t\t\t\t\t\t\t\tafter = after.replace(/\\s*$/, \"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\t\telement.children.push({type: \"value\", value: after});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase PROPS_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst [, tagEnd, spread, name, equals, string] = match;\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, match.index).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tagEnd) {\n\t\t\t\t\t\t\tif (tagEnd[0] === \"/\") {\n\t\t\t\t\t\t\t\t// This is a self-closing element, so there will always be a\n\t\t\t\t\t\t\t\t// result on the stack.\n\t\t\t\t\t\t\t\telement = stack.pop()!;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t\t} else if (spread) {\n\t\t\t\t\t\t\tconst value = {\n\t\t\t\t\t\t\t\ttype: \"value\" as const,\n\t\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telement.props.push(value);\n\t\t\t\t\t\t\t// SPREAD PROP EXPRESSION\n\t\t\t\t\t\t\texpressionTarget = value;\n\t\t\t\t\t\t\tif (!(expressing && end === span.length)) {\n\t\t\t\t\t\t\t\tthrow new SyntaxError('Expression expected after \"...\"');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (name) {\n\t\t\t\t\t\t\tlet value: ParseValue | ParsePropString;\n\t\t\t\t\t\t\tif (string == null) {\n\t\t\t\t\t\t\t\tif (!equals) {\n\t\t\t\t\t\t\t\t\tvalue = {type: \"value\", value: true};\n\t\t\t\t\t\t\t\t} else if (end < span.length) {\n\t\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(end, end + 20)}\\``,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = {type: \"value\" as const, value: null};\n\t\t\t\t\t\t\t\t\t// PROP EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = value;\n\t\t\t\t\t\t\t\t\tif (!(expressing && end === span.length)) {\n\t\t\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t\t\t`Expression expected for prop \"${name}\"`,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst quote = string[0];\n\t\t\t\t\t\t\t\tvalue = {type: \"propString\", parts: []};\n\t\t\t\t\t\t\t\tvalue.parts.push(string);\n\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\tmatcher =\n\t\t\t\t\t\t\t\t\t\tquote === \"'\"\n\t\t\t\t\t\t\t\t\t\t\t? CLOSING_SINGLE_QUOTE_RE\n\t\t\t\t\t\t\t\t\t\t\t: CLOSING_DOUBLE_QUOTE_RE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst prop = {\n\t\t\t\t\t\t\t\ttype: \"prop\" as const,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telement.props.push(prop);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tif (i === span.length) {\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t`Expected props but reached end of document`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, i + 20).trim()}\\``,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Unexpected expression errors are handled in the outer loop.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// This would most likely be the starting point for the logic of\n\t\t\t\t\t\t// prop name expressions.\n\t\t\t\t\t\t// jsx`<p ${name}=${value}>`\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_BRACKET_RE: {\n\t\t\t\t\t// We’re in a closing tag and looking for the >.\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, match.index).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, i + 20).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_SINGLE_QUOTE_RE:\n\t\t\t\tcase CLOSING_DOUBLE_QUOTE_RE: {\n\t\t\t\t\tconst string = span.slice(i, end);\n\t\t\t\t\tconst prop = element.props[element.props.length - 1] as ParseProp;\n\t\t\t\t\tconst propString = prop.value as ParsePropString;\n\t\t\t\t\tpropString.parts.push(string);\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tmatcher = PROPS_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Missing \\`${\n\t\t\t\t\t\t\t\t\tmatcher === CLOSING_SINGLE_QUOTE_RE ? \"'\" : '\"'\n\t\t\t\t\t\t\t\t}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_COMMENT_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\"Expected `-->` but reached end of template\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expressing) {\n\t\t\tif (expressionTarget) {\n\t\t\t\ttargets.push(expressionTarget);\n\t\t\t\tif (expressionTarget.type === \"error\") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tswitch (matcher) {\n\t\t\t\tcase CHILDREN_RE: {\n\t\t\t\t\tconst target = {type: \"value\" as const, value: null};\n\t\t\t\t\telement.children.push(target);\n\t\t\t\t\ttargets.push(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_SINGLE_QUOTE_RE:\n\t\t\t\tcase CLOSING_DOUBLE_QUOTE_RE: {\n\t\t\t\t\tconst prop = element.props[element.props.length - 1] as ParseProp;\n\t\t\t\t\tconst target = {type: \"value\" as const, value: null};\n\t\t\t\t\t(prop.value as ParsePropString).parts.push(target);\n\t\t\t\t\ttargets.push(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_COMMENT_RE:\n\t\t\t\t\ttargets.push(null);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new SyntaxError(\"Unexpected expression\");\n\t\t\t}\n\t\t} else if (expressionTarget) {\n\t\t\tthrow new SyntaxError(\"Expression expected\");\n\t\t}\n\n\t\tlineStart = false;\n\t}\n\n\tif (stack.length) {\n\t\tconst ti = targets.indexOf(element.open);\n\t\tif (ti === -1) {\n\t\t\tthrow new SyntaxError(`Unmatched opening tag \"${element.open.value}\"`);\n\t\t}\n\n\t\ttargets[ti] = {\n\t\t\ttype: \"error\",\n\t\t\tmessage: \"Unmatched opening tag ${}\",\n\t\t\tvalue: null,\n\t\t};\n\t}\n\n\tif (element.children.length === 1 && element.children[0].type === \"element\") {\n\t\telement = element.children[0];\n\t}\n\n\treturn {element, targets};\n}\n\nfunction build(parsed: ParseElement): Element {\n\tif (\n\t\tparsed.close !== null &&\n\t\tparsed.close.slash !== \"//\" &&\n\t\tparsed.open.value !== parsed.close.value\n\t) {\n\t\tthrow new SyntaxError(\n\t\t\t`Unmatched closing tag ${formatTagForError(\n\t\t\t\tparsed.close.value,\n\t\t\t)}, expected ${formatTagForError(parsed.open.value)}`,\n\t\t);\n\t}\n\n\tconst children: Array<unknown> = [];\n\tfor (let i = 0; i < parsed.children.length; i++) {\n\t\tconst child = parsed.children[i];\n\t\tchildren.push(child.type === \"element\" ? build(child) : child.value);\n\t}\n\n\tlet props = parsed.props.length ? ({} as Record<string, unknown>) : null;\n\tfor (let i = 0; i < parsed.props.length; i++) {\n\t\tconst prop = parsed.props[i];\n\t\tif (prop.type === \"prop\") {\n\t\t\tlet value: any;\n\t\t\tif (prop.value.type === \"value\") {\n\t\t\t\tvalue = prop.value.value;\n\t\t\t} else {\n\t\t\t\tlet string = \"\";\n\t\t\t\tfor (let i = 0; i < prop.value.parts.length; i++) {\n\t\t\t\t\tconst part = prop.value.parts[i];\n\t\t\t\t\tif (typeof part === \"string\") {\n\t\t\t\t\t\tstring += part;\n\t\t\t\t\t} else if (typeof part.value !== \"boolean\" && part.value != null) {\n\t\t\t\t\t\tstring +=\n\t\t\t\t\t\t\ttypeof part.value === \"string\" ? part.value : String(part.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = string\n\t\t\t\t\t// remove quotes\n\t\t\t\t\t.slice(1, -1)\n\t\t\t\t\t// unescape things\n\t\t\t\t\t// adapted from https://stackoverflow.com/a/57330383/1825413\n\t\t\t\t\t.replace(\n\t\t\t\t\t\t/\\\\x[0-9a-f]{2}|\\\\u[0-9a-f]{4}|\\\\u\\{[0-9a-f]+\\}|\\\\./gi,\n\t\t\t\t\t\t(match) => {\n\t\t\t\t\t\t\tswitch (match[1]) {\n\t\t\t\t\t\t\t\tcase \"b\":\n\t\t\t\t\t\t\t\t\treturn \"\\b\";\n\t\t\t\t\t\t\t\tcase \"f\":\n\t\t\t\t\t\t\t\t\treturn \"\\f\";\n\t\t\t\t\t\t\t\tcase \"n\":\n\t\t\t\t\t\t\t\t\treturn \"\\n\";\n\t\t\t\t\t\t\t\tcase \"r\":\n\t\t\t\t\t\t\t\t\treturn \"\\r\";\n\t\t\t\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\t\t\t\treturn \"\\t\";\n\t\t\t\t\t\t\t\tcase \"v\":\n\t\t\t\t\t\t\t\t\treturn \"\\v\";\n\t\t\t\t\t\t\t\tcase \"x\":\n\t\t\t\t\t\t\t\t\treturn String.fromCharCode(parseInt(match.slice(2), 16));\n\t\t\t\t\t\t\t\tcase \"u\":\n\t\t\t\t\t\t\t\t\tif (match[2] === \"{\") {\n\t\t\t\t\t\t\t\t\t\treturn String.fromCodePoint(\n\t\t\t\t\t\t\t\t\t\t\tparseInt(match.slice(3, -1), 16),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn String.fromCharCode(parseInt(match.slice(2), 16));\n\t\t\t\t\t\t\t\tcase \"0\":\n\t\t\t\t\t\t\t\t\treturn \"\\0\";\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn match.slice(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tprops![prop.name] = value;\n\t\t} else {\n\t\t\t// spread prop\n\t\t\tprops = {...props, ...(prop.value as any)};\n\t\t}\n\t}\n\n\treturn createElement(parsed.open.value, props, ...children);\n}\n\nfunction formatTagForError(tag: unknown): string {\n\treturn typeof tag === \"function\"\n\t\t? tag.name + \"()\"\n\t\t: typeof tag === \"string\"\n\t\t\t? `\"${tag}\"`\n\t\t\t: JSON.stringify(tag);\n}\n"],"names":["createElement"],"mappings":"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"}
package/jsx-tag.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import type { Element } from "./crank.js";
2
- export declare function jsx(spans: TemplateStringsArray, ...expressions: Array<unknown>): Element;
1
+ import type { Element } from "./crank.js";
2
+ export declare function jsx(spans: TemplateStringsArray, ...expressions: Array<unknown>): Element;