@marko/compiler 5.20.8 → 5.20.9
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/babel-plugin/index.js +0 -7
- package/dist/babel-plugin/index.js.map +1 -1
- package/dist/babel-plugin/parser.js +388 -275
- package/dist/babel-plugin/parser.js.map +1 -1
- package/dist/taglib/marko-html.json +3 -0
- package/dist/traverse.d.ts +14 -9
- package/dist/types.d.ts +30 -5
- package/package.json +5 -5
- package/dist/babel-plugin/util/parse-arguments.js +0 -15
- package/dist/babel-plugin/util/parse-arguments.js.map +0 -1
- package/dist/babel-plugin/util/parse-attributes.js +0 -89
- package/dist/babel-plugin/util/parse-attributes.js.map +0 -1
- package/dist/babel-plugin/util/parse-classname-shorthand.js +0 -65
- package/dist/babel-plugin/util/parse-classname-shorthand.js.map +0 -1
- package/dist/babel-plugin/util/parse-id-shorthand.js +0 -34
- package/dist/babel-plugin/util/parse-id-shorthand.js.map +0 -1
- package/dist/babel-plugin/util/parse-params.js +0 -10
- package/dist/babel-plugin/util/parse-params.js.map +0 -1
- package/dist/babel-plugin/util/parse-var.js +0 -8
- package/dist/babel-plugin/util/parse-var.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/babel-plugin/parser.js"],"names":["EMPTY_OBJECT","EMPTY_ARRAY","htmlTrimStart","t","replace","htmlTrimEnd","htmlTrim","isAttributeTag","node","isStringLiteral","name","value","parseMarko","file","code","htmlParseOptions","markoOpts","watchFiles","metadata","marko","pushTagBody","getTagBody","pushContainer","currentTag","isProgram","get","preserveWhitespace","path","preservingWhitespaceUntil","wasSelfClosing","handledTagName","onNext","handlers","onDocumentType","pos","endPos","markoDocumentType","onDeclaration","markoDeclaration","onComment","markoComment","onCDATA","markoCDATA","onText","parser","shouldTrim","body","length","prev","prevIndex","isMarkoClass","isMarkoComment","isMarkoScriptlet","undefined","originalValue","indexOf","isMarkoText","test","markoText","prevBody","next","onPlaceholder","escape","withinBody","markoPlaceholder","onScriptlet","line","block","buildCodeFrameError","loc","markoScriptlet","onOpenTagName","event","tagName","tagNameExpression","exec","tagDef","tagNameStartPos","concise","tagNameNode","templateLiteral","templateElement","raw","cooked","stringLiteral","markoTag","markoTagBody","parseOptions","setParseOptions","rootOnly","onOpenTag","tagNameEndPos","selfClosed","state","enterParsedTextContentState","enterStaticTextContentState","rawOpenTag","set","substring","ignoreAttributes","var","params","argument","shorthandId","shorthandClassNames","attributes","onCloseTag","tag","isConcise","start","end","push","hook","default","parentPath","onfinish","onError","message","includes","isOpenTagOnly","openTagOnly","ignoreNonstandardStringPlaceholders","parse","opts","filename"],"mappings":"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","sourcesContent":["import { createParser } from \"htmljs-parser\";\nimport parseAttributes from \"./util/parse-attributes\";\nimport parseArguments from \"./util/parse-arguments\";\nimport parseParams from \"./util/parse-params\";\nimport parseVar from \"./util/parse-var\";\nimport parseIDShorthand from \"./util/parse-id-shorthand\";\nimport parseClassnameShorthand from \"./util/parse-classname-shorthand\";\nimport * as t from \"../babel-types\";\nimport {\n withLoc,\n getLoc,\n getLocRange,\n parseScript,\n parseExpression,\n getTagDefForTagName\n} from \"@marko/babel-utils\";\n\nconst EMPTY_OBJECT = {};\nconst EMPTY_ARRAY = [];\nconst htmlTrimStart = t => t.replace(/^[\\n\\r]\\s*/, \"\");\nconst htmlTrimEnd = t => t.replace(/[\\n\\r]\\s*$/, \"\");\nconst htmlTrim = t => htmlTrimStart(htmlTrimEnd(t));\nconst isAttributeTag = node =>\n t.isStringLiteral(node.name) && node.name.value[0] === \"@\";\n\nexport function parseMarko(file) {\n const { code } = file;\n const { htmlParseOptions = {} } = file.markoOpts;\n const { watchFiles } = file.metadata.marko;\n const pushTagBody = node => getTagBody().pushContainer(\"body\", node);\n const getTagBody = () =>\n currentTag.isProgram() ? currentTag : currentTag.get(\"body\");\n let { preserveWhitespace } = htmlParseOptions;\n let currentTag = file.path;\n let preservingWhitespaceUntil = preserveWhitespace;\n let wasSelfClosing = false;\n let handledTagName = false;\n let onNext;\n\n const handlers = {\n onDocumentType({ value, pos, endPos }) {\n const node = withLoc(file, t.markoDocumentType(value), pos, endPos);\n pushTagBody(node);\n /* istanbul ignore next */\n onNext = onNext && onNext(node);\n },\n\n onDeclaration({ value, pos, endPos }) {\n const node = withLoc(file, t.markoDeclaration(value), pos, endPos);\n pushTagBody(node);\n /* istanbul ignore next */\n onNext = onNext && onNext(node);\n },\n\n onComment({ value, pos, endPos }) {\n const node = withLoc(file, t.markoComment(value), pos, endPos);\n pushTagBody(node);\n onNext = onNext && onNext(node);\n },\n\n onCDATA({ value, pos, endPos }) {\n const node = withLoc(file, t.markoCDATA(value), pos, endPos);\n pushTagBody(node);\n onNext = onNext && onNext(node);\n },\n\n onText({ value }, parser) {\n const shouldTrim = !preservingWhitespaceUntil;\n const { body } = getTagBody().node;\n let pos = parser.pos - value.length;\n\n if (shouldTrim) {\n if (htmlTrim(value) === \"\") {\n return;\n }\n\n // Find previous non-scriptlet/@tag.\n let prev;\n let prevIndex = body.length;\n while (prevIndex > 0) {\n prev = body[--prevIndex];\n\n if (\n t.isMarkoClass(prev) ||\n t.isMarkoComment(prev) ||\n t.isMarkoScriptlet(prev) ||\n isAttributeTag(prev)\n ) {\n prev = undefined;\n } else {\n break;\n }\n }\n\n if (!prev) {\n const originalValue = value;\n value = htmlTrimStart(value);\n pos += originalValue.indexOf(value);\n } else if (\n t.isMarkoText(prev) &&\n /\\s/.test(prev.value[prev.value.length - 1])\n ) {\n const originalValue = value;\n value = value.replace(/^\\s+/, \"\");\n pos += originalValue.indexOf(value);\n }\n }\n\n const endPos = pos + value.length;\n const node = withLoc(file, t.markoText(value), pos, endPos);\n const prevBody = getTagBody().node.body;\n pushTagBody(node);\n onNext && onNext(node);\n onNext =\n shouldTrim &&\n (next => {\n if (!next || prevBody.indexOf(next) === -1) {\n node.value = htmlTrimEnd(node.value);\n }\n\n node.value = node.value.replace(/\\s+/g, \" \");\n });\n },\n\n onPlaceholder({ escape, value, withinBody, pos, endPos }) {\n if (withinBody) {\n const node = withLoc(\n file,\n t.markoPlaceholder(\n parseExpression(\n file,\n value,\n pos + (escape ? 2 /* ${ */ : 3) /* $!{ */\n ),\n escape\n ),\n pos,\n endPos\n );\n\n pushTagBody(node);\n onNext = onNext && onNext(node);\n }\n },\n\n onScriptlet({ value, line, block, pos, endPos }) {\n if (!line && !block) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n \"<% scriptlets %> are no longer supported.\"\n );\n }\n\n pos -= 1; // Include $.\n // Scriptlets are ignored as content and don't call `onNext`.\n pushTagBody(\n withLoc(\n file,\n t.markoScriptlet(\n parseScript(file, value, pos + 2 /** Ignores leading `$ ` */).body\n ),\n pos,\n endPos\n )\n );\n },\n\n onOpenTagName(event) {\n const { pos, endPos } = event;\n const tagName = event.tagName || \"div\";\n const [, tagNameExpression] =\n /^\\$\\{([\\s\\S]*)\\}/.exec(tagName) || EMPTY_ARRAY;\n const tagDef = !tagNameExpression && getTagDefForTagName(file, tagName);\n const tagNameStartPos = pos + (event.concise ? 0 : 1); // Account for leading `<`.\n\n handledTagName = true;\n\n if (tagNameExpression === \"\") {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, tagNameStartPos + 1, tagNameStartPos + 3) },\n \"Missing expression for <${dynamic}> tag.\"\n );\n }\n\n let tagNameNode;\n\n if (tagNameExpression) {\n tagNameNode = parseExpression(\n file,\n tagNameExpression,\n tagNameStartPos + 2 /* ${ */\n );\n\n if (t.isStringLiteral(tagNameNode)) {\n // convert to template literal just so that we don't mistake it for a native tag.\n tagNameNode = t.templateLiteral(\n [\n t.templateElement({\n raw: tagNameNode.value,\n cooked: tagNameNode.value\n })\n ],\n []\n );\n }\n } else {\n tagNameNode = withLoc(\n file,\n t.stringLiteral(tagName),\n tagNameStartPos,\n tagNameStartPos + tagName.length\n );\n }\n\n const node = withLoc(\n file,\n t.markoTag(tagNameNode, [], t.markoTagBody()),\n pos,\n endPos\n );\n\n if (tagDef) {\n node.tagDef = tagDef;\n\n const { parseOptions } = tagDef;\n if (parseOptions) {\n event.setParseOptions(parseOptions);\n\n if (parseOptions.rootOnly && !currentTag.isProgram()) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n `\"${tagName}\" tags must be at the root of your Marko template.`\n );\n }\n }\n }\n\n [currentTag] = pushTagBody(node);\n\n // @tags are not treated as content and do not call next.\n if (!isAttributeTag(node)) {\n onNext = onNext && onNext(node);\n }\n },\n\n onOpenTag(event, parser) {\n if (!handledTagName) {\n // There is a bug in htmljs parser where a single top level concise mode tag with nothing else\n // does not emit the openTagNameEvent.\n handlers.onOpenTagName(event);\n }\n\n handledTagName = false;\n const { pos, endPos, tagNameEndPos } = event;\n const { tagDef } = currentTag.node;\n const parseOptions = (tagDef && tagDef.parseOptions) || EMPTY_OBJECT;\n wasSelfClosing = event.selfClosed;\n\n if (parseOptions.state === \"parsed-text\") {\n parser.enterParsedTextContentState();\n } else if (parseOptions.state === \"static-text\") {\n parser.enterStaticTextContentState();\n }\n\n if (parseOptions.rawOpenTag) {\n currentTag.set(\n \"rawValue\",\n parser.substring(pos, endPos).replace(/^<|\\/>$|>$/g, \"\")\n );\n }\n\n if (!parseOptions.ignoreAttributes) {\n currentTag.set(\"var\", parseVar(file, event.var));\n currentTag.get(\"body\").set(\"params\", parseParams(file, event.params));\n currentTag.set(\"arguments\", parseArguments(file, event.argument));\n currentTag.set(\n \"attributes\",\n parseIDShorthand(\n file,\n event.shorthandId,\n parseClassnameShorthand(\n file,\n event.shorthandClassNames,\n parseAttributes(file, event.attributes, tagNameEndPos)\n )\n )\n );\n }\n\n if (!preservingWhitespaceUntil && parseOptions.preserveWhitespace) {\n preservingWhitespaceUntil = currentTag;\n }\n },\n\n onCloseTag(event, parser) {\n let { pos, endPos } = event;\n const tag = currentTag;\n const { node } = tag;\n const { tagDef } = node;\n const isConcise = code[node.start - 1] !== \"<\";\n\n if (preservingWhitespaceUntil === currentTag) {\n preservingWhitespaceUntil = undefined;\n }\n\n if (!pos) {\n pos = parser.pos;\n }\n\n if (!endPos) {\n endPos = pos;\n\n if (wasSelfClosing && !isConcise) {\n endPos += 2; // account for \"/>\"\n }\n }\n\n node.end = endPos;\n node.loc.end = getLoc(file, endPos);\n\n if (\n !isConcise &&\n !wasSelfClosing &&\n code[pos + 1] !== \"/\" &&\n !currentTag.get(\"name\").isStringLiteral()\n ) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n `Invalid ending for dynamic tag, expected \"</>\".`\n );\n }\n\n if (tagDef && tagDef.parser) {\n if (tagDef.parser.path) {\n watchFiles.push(tagDef.parser.path);\n }\n /* istanbul ignore next */\n (tagDef.parser.hook.default || tagDef.parser.hook)(tag, t);\n }\n\n currentTag = currentTag.parentPath.parentPath || file.path;\n },\n\n onfinish() {\n onNext = onNext && onNext();\n },\n\n onError({ message, pos, endPos }) {\n if (message.includes(\"EOF\")) endPos = pos;\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n message\n );\n }\n };\n\n createParser(handlers, {\n isOpenTagOnly(name) {\n const { parseOptions = EMPTY_OBJECT } =\n getTagDefForTagName(file, name) || EMPTY_OBJECT;\n return parseOptions.openTagOnly;\n },\n ignoreNonstandardStringPlaceholders: true,\n ...htmlParseOptions\n }).parse(code, file.opts.filename);\n}\n"],"file":"parser.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/babel-plugin/parser.js"],"names":["noop","emptyRange","part","start","end","isAttrTag","tag","name","value","toBabelPosition","line","character","column","parseMarko","file","code","htmlParseOptions","markoOpts","watchFiles","metadata","marko","currentTag","path","currentBody","currentAttr","undefined","currentShorthandId","currentShorthandClassNames","preserveWhitespace","preservingWhitespaceUntil","onNext","positionAt","index","parser","locationAt","range","withLoc","node","loc","enterTag","pushContainer","get","pushContent","body","push","endAttr","parseTemplateString","quasis","expressions","length","first","t","stringLiteral","read","result","isStringLiteral","templateLiteral","templateElement","raw","cooked","onError","buildCodeFrameError","message","onText","rawValue","markoText","test","prev","prevIndex","isMarkoScriptlet","isMarkoComment","type","replace","next","trimmedStart","indexOf","splice","onCDATA","markoCDATA","onDoctype","markoDocumentType","onDeclaration","markoDeclaration","onComment","markoComment","onPlaceholder","markoPlaceholder","escape","onScriptlet","markoScriptlet","onTagName","tagName","markoTag","markoTagBody","parseType","TagType","html","concise","literalTagName","parseOptions","tagDef","statement","openTagOnly","void","text","onTagShorthandId","onTagShorthandClass","onTagVar","var","left","onTagParams","params","onTagArgs","arguments","onAttrName","modifier","exec","attributes","markoAttribute","booleanLiteral","onAttrArgs","onAttrValue","bound","onAttrMethod","prefix","onAttrSpread","markoSpreadAttribute","onOpenTagEnd","foundClassAttr","classShorthandValue","every","expr","map","join","arrayExpression","attr","isArrayExpression","elements","rawOpenTag","selfClosed","onCloseTag","parserPlugin","hook","default","parentPath","parse","ast","program"],"mappings":"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","sourcesContent":["import { createParser, TagType } from \"htmljs-parser\";\nimport * as t from \"../babel-types\";\nimport {\n parseScript,\n parseExpression,\n getTagDefForTagName\n} from \"@marko/babel-utils\";\n\nconst noop = () => {};\nconst emptyRange = part => part.start === part.end;\nconst isAttrTag = tag => tag.name.value?.[0] === \"@\";\nconst toBabelPosition = ({ line, character }) => ({\n line: line + 1,\n column: character ? character - 1 : character\n});\n\nexport function parseMarko(file) {\n const { code } = file;\n const { htmlParseOptions = {} } = file.markoOpts;\n const { watchFiles } = file.metadata.marko;\n let currentTag = file.path;\n let currentBody = currentTag;\n let currentAttr = undefined;\n let currentShorthandId = undefined;\n let currentShorthandClassNames = undefined;\n let { preserveWhitespace } = htmlParseOptions;\n let preservingWhitespaceUntil = preserveWhitespace;\n let onNext = noop;\n const positionAt = index => toBabelPosition(parser.positionAt(index));\n const locationAt = range => {\n // Babel columns start at 0, but that is silly.\n // Here we normalize the parsers 1 based columns.\n const { start, end } = parser.locationAt(range);\n return {\n start: toBabelPosition(start),\n end: toBabelPosition(end)\n };\n };\n const withLoc = (node, range) => {\n node.start = range.start;\n node.end = range.end;\n node.loc = locationAt(range);\n return node;\n };\n const enterTag = node => {\n currentTag = currentBody.pushContainer(\"body\", node)[0];\n currentBody = currentTag.get(\"body\");\n onNext(node);\n };\n const pushContent = node => {\n currentBody.node.body.push(node);\n onNext(node);\n };\n const endAttr = () => {\n if (currentAttr) {\n currentAttr.loc = locationAt(currentAttr);\n currentAttr = undefined;\n }\n };\n const parseTemplateString = ({ quasis, expressions }) => {\n switch (expressions.length) {\n case 0: {\n const [first] = quasis;\n return withLoc(t.stringLiteral(parser.read(first)), first);\n }\n case 1: {\n if (emptyRange(quasis[0]) && emptyRange(quasis[1])) {\n const [{ value }] = expressions;\n const result = parseExpression(file, parser.read(value), value.start);\n if (t.isStringLiteral(result)) {\n // convert to template literal just so that we don't mistake it for a native tag if this is a tag name.\n return t.templateLiteral(\n [\n t.templateElement({\n raw: result.value,\n cooked: result.value\n })\n ],\n []\n );\n } else {\n return result;\n }\n }\n }\n }\n\n const [{ start }] = quasis;\n const end = quasis[quasis.length - 1].end;\n return parseExpression(\n file,\n `\\`${parser.read({ start, end })}\\``,\n start - 1\n );\n };\n\n const parser = createParser({\n onError(part) {\n throw file.buildCodeFrameError({ loc: locationAt(part) }, part.message);\n },\n onText(part) {\n const rawValue = parser.read(part);\n\n if (preservingWhitespaceUntil) {\n pushContent(withLoc(t.markoText(rawValue), part));\n return;\n }\n\n if (/^(?:[\\n\\r]\\s*)?(?:[\\n\\r]\\s*)?$/.test(rawValue)) return;\n\n const { body } = currentBody.node;\n let prev;\n let prevIndex = body.length;\n // Find previous non-scriptlet or comment.\n while (prevIndex > 0) {\n prev = body[--prevIndex];\n\n if (t.isMarkoScriptlet(prev) || t.isMarkoComment(prev)) {\n prev = undefined;\n } else {\n break;\n }\n }\n\n let value = rawValue;\n switch (prev?.type) {\n case \"MarkoPlaceholder\":\n break;\n case \"MarkoText\":\n if (/\\s$/.test(prev.value)) {\n value = value.replace(/^\\s+/, \"\");\n }\n break;\n case \"MarkoTag\":\n if (isAttrTag(prev)) {\n value = value.replace(/^[\\n\\r]\\s*/, \"\");\n }\n break;\n default:\n value = value.replace(/^[\\n\\r]\\s*/, \"\");\n break;\n }\n\n const node = t.markoText(value);\n pushContent(node);\n onNext = next => {\n switch (next?.type) {\n case \"MarkoScriptlet\":\n case \"MarkoComment\":\n return;\n case \"MarkoPlaceholder\":\n break;\n case \"MarkoText\":\n if (/^\\s/.test(next.value)) {\n value = value.replace(/\\s+$/, \"\");\n }\n break;\n case \"MarkoTag\":\n if (isAttrTag(next)) {\n value = value.replace(/[\\n\\r]\\s*$/, \"\");\n }\n\n break;\n default:\n value = value.replace(/[\\n\\r]\\s*$/, \"\");\n break;\n }\n\n node.value = value.replace(/\\s+/g, \" \");\n\n if (node.value) {\n const trimmedStart = part.start + rawValue.indexOf(value);\n withLoc(node, {\n start: trimmedStart,\n end: trimmedStart + rawValue.length\n });\n } else {\n body.splice(body.indexOf(node), 1);\n }\n\n onNext = noop;\n };\n },\n onCDATA(part) {\n pushContent(withLoc(t.markoCDATA(parser.read(part.value)), part));\n },\n onDoctype(part) {\n pushContent(withLoc(t.markoDocumentType(parser.read(part.value)), part));\n },\n onDeclaration(part) {\n pushContent(withLoc(t.markoDeclaration(parser.read(part.value)), part));\n },\n onComment(part) {\n pushContent(withLoc(t.markoComment(parser.read(part.value)), part));\n },\n onPlaceholder(part) {\n pushContent(\n withLoc(\n t.markoPlaceholder(\n parseExpression(file, parser.read(part.value), part.value.start),\n part.escape\n ),\n part\n )\n );\n },\n onScriptlet(part) {\n pushContent(\n withLoc(\n t.markoScriptlet(\n parseScript(file, parser.read(part.value), part.value.start).body\n ),\n part\n )\n );\n },\n onTagName(part) {\n const tagName = parseTemplateString(part);\n const node = t.markoTag(tagName, [], t.markoTagBody());\n let parseType = TagType.html;\n node.start = part.start - (part.concise ? 0 : 1); // Account for leading `<`.\n node.end = part.end;\n\n if (t.isStringLiteral(tagName)) {\n const literalTagName = tagName.value || (tagName.value = \"div\");\n\n if (literalTagName === \"%\") {\n throw file.buildCodeFrameError(\n tagName,\n \"<% scriptlets %> are no longer supported.\"\n );\n }\n\n const parseOptions = (node.tagDef = getTagDefForTagName(\n file,\n literalTagName\n ))?.parseOptions;\n\n if (parseOptions) {\n if (parseOptions.preserveWhitespace) {\n preservingWhitespaceUntil = node;\n }\n\n if (parseOptions.statement) {\n parseType = TagType.statement;\n } else if (parseOptions.openTagOnly) {\n parseType = TagType.void;\n } else if (parseOptions.text) {\n parseType = TagType.text;\n }\n }\n }\n\n enterTag(node);\n return parseType;\n },\n onTagShorthandId(part) {\n currentShorthandId = parseTemplateString(part);\n },\n onTagShorthandClass(part) {\n if (currentShorthandClassNames) {\n currentShorthandClassNames.push(parseTemplateString(part));\n } else {\n currentShorthandClassNames = [parseTemplateString(part)];\n }\n },\n\n onTagVar(part) {\n currentTag.node.var = parseExpression(\n file,\n `${parser.read(part.value)}=1`,\n part.value.start\n ).left;\n },\n\n onTagParams(part) {\n currentTag.node.body.params = parseExpression(\n file,\n `(${parser.read(part.value)})=>{}`,\n part.start\n ).params;\n },\n\n onTagArgs(part) {\n currentTag.node.arguments = parseExpression(\n file,\n `_${parser.read(part)}`,\n part.start - 1\n ).arguments;\n },\n\n onAttrName(part) {\n const [, name, modifier] = /^([^:]*)(?::(.*))?/.exec(parser.read(part));\n endAttr();\n currentTag.node.attributes.push(\n (currentAttr = t.markoAttribute(\n name || \"default\",\n t.booleanLiteral(true),\n modifier,\n undefined,\n !name\n ))\n );\n\n currentAttr.start = part.start;\n currentAttr.end = part.end;\n },\n\n onAttrArgs(part) {\n currentAttr.arguments = parseExpression(\n file,\n `_${parser.read(part)}`,\n part.start - 1\n ).arguments;\n currentAttr.end = part.end;\n },\n\n onAttrValue(part) {\n currentAttr.end = part.end;\n currentAttr.bound = part.bound;\n currentAttr.value = parseExpression(\n file,\n parser.read(part.value),\n part.value.start\n );\n },\n\n onAttrMethod(part) {\n const prefix = \"function\";\n currentAttr.end = part.end;\n currentAttr.value = parseExpression(\n file,\n prefix + parser.read(part),\n part.start - prefix.length\n );\n },\n\n onAttrSpread(part) {\n endAttr();\n currentTag.node.attributes.push(\n withLoc(\n t.markoSpreadAttribute(\n parseExpression(file, parser.read(part.value), part.value.start)\n ),\n part\n )\n );\n },\n\n onOpenTagEnd(part) {\n const { node } = currentTag;\n const { attributes } = node;\n const parseOptions = node.tagDef?.parseOptions;\n endAttr();\n\n if (currentShorthandClassNames) {\n let foundClassAttr = false;\n const classShorthandValue =\n currentShorthandClassNames.length === 1\n ? currentShorthandClassNames[0]\n : currentShorthandClassNames.every(expr => t.isStringLiteral(expr))\n ? withLoc(\n t.stringLiteral(\n currentShorthandClassNames.map(node => node.value).join(\" \")\n ),\n {\n start: currentShorthandClassNames[0].start,\n end: currentShorthandClassNames[\n currentShorthandClassNames.length - 1\n ].end\n }\n )\n : t.arrayExpression(currentShorthandClassNames);\n\n for (const attr of attributes) {\n if (attr.name === \"class\") {\n foundClassAttr = true;\n if (t.isArrayExpression(attr.value)) {\n if (t.isArrayExpression(classShorthandValue)) {\n attr.value.elements.push(...classShorthandValue.elements);\n } else {\n attr.value.elements.push(classShorthandValue);\n }\n } else if (\n t.isStringLiteral(attr.value) &&\n t.isStringLiteral(classShorthandValue)\n ) {\n attr.value.value = `${classShorthandValue.value} ${attr.value.value}`;\n } else if (t.isArrayExpression(classShorthandValue)) {\n classShorthandValue.elements.push(attr.value);\n attr.value = classShorthandValue;\n } else {\n attr.value = t.arrayExpression([classShorthandValue, attr.value]);\n }\n break;\n }\n }\n\n if (!foundClassAttr) {\n attributes.push(t.markoAttribute(\"class\", classShorthandValue));\n }\n\n currentShorthandClassNames = undefined;\n }\n\n if (currentShorthandId) {\n for (const attr of attributes) {\n if (attr.name === \"id\") {\n throw file.buildCodeFrameError(\n attr,\n \"Cannot have shorthand id and id attribute.\"\n );\n }\n }\n currentTag.node.attributes.push(\n t.markoAttribute(\"id\", currentShorthandId)\n );\n currentShorthandId = undefined;\n }\n\n if (parseOptions) {\n if (parseOptions.rawOpenTag) {\n node.rawValue = parser.read({\n start: node.name.start,\n end: part.start\n });\n }\n\n if (\n part.selfClosed ||\n parseOptions.statement ||\n parseOptions.openTagOnly\n ) {\n this.onCloseTag(part);\n }\n } else if (part.selfClosed) {\n this.onCloseTag(part);\n }\n },\n onCloseTag(part) {\n const { node } = currentTag;\n const parserPlugin = node.tagDef?.parser;\n if (preservingWhitespaceUntil === node) {\n preservingWhitespaceUntil = undefined;\n }\n\n node.end = part.end;\n node.loc = locationAt(node);\n\n if (parserPlugin) {\n const { hook } = parserPlugin;\n if (parserPlugin.path) watchFiles.push(parserPlugin.path);\n (hook.default || hook)(currentTag, t);\n }\n\n currentTag = currentTag.parentPath.parentPath;\n\n if (currentTag) {\n currentBody = currentTag.get(\"body\");\n } else {\n currentTag = currentBody = file.path;\n }\n\n onNext();\n }\n });\n\n parser.parse(code);\n onNext();\n\n const { ast } = file;\n const { program } = ast;\n ast.start = program.start = 0;\n ast.end = program.end = code.length - 1;\n ast.loc = program.loc = {\n start: { line: 1, column: 0 },\n end: positionAt(ast.end)\n };\n}\n"],"file":"parser.js"}
|
|
@@ -720,6 +720,7 @@
|
|
|
720
720
|
},
|
|
721
721
|
"<script>": {
|
|
722
722
|
"parse-options": {
|
|
723
|
+
"text": true,
|
|
723
724
|
"preserveWhitespace": true
|
|
724
725
|
},
|
|
725
726
|
"@async": "#html-async",
|
|
@@ -786,6 +787,7 @@
|
|
|
786
787
|
},
|
|
787
788
|
"<style>": {
|
|
788
789
|
"parse-options": {
|
|
790
|
+
"text": true,
|
|
789
791
|
"preserveWhitespace": true
|
|
790
792
|
},
|
|
791
793
|
"@disabled": "#html-disabled",
|
|
@@ -824,6 +826,7 @@
|
|
|
824
826
|
},
|
|
825
827
|
"<textarea>": {
|
|
826
828
|
"parse-options": {
|
|
829
|
+
"text": true,
|
|
827
830
|
"preserveWhitespace": true
|
|
828
831
|
},
|
|
829
832
|
"@autocomplete": "#html-autocomplete",
|
package/dist/traverse.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Type definitions for @babel/traverse 7.
|
|
1
|
+
// Type definitions for @babel/traverse 7.17
|
|
2
2
|
// Project: https://github.com/babel/babel/tree/main/packages/babel-traverse, https://babeljs.io
|
|
3
3
|
// Definitions by: Troy Gerwien <https://github.com/yortus>
|
|
4
4
|
// Marvin Hagemeister <https://github.com/marvinhagemeister>
|
|
@@ -140,7 +140,12 @@ export class Scope {
|
|
|
140
140
|
|
|
141
141
|
crawl(): void;
|
|
142
142
|
|
|
143
|
-
push(opts: {
|
|
143
|
+
push(opts: {
|
|
144
|
+
id: t.LVal;
|
|
145
|
+
init?: t.Expression | undefined;
|
|
146
|
+
unique?: boolean | undefined;
|
|
147
|
+
kind?: 'var' | 'let' | 'const' | undefined;
|
|
148
|
+
}): void;
|
|
144
149
|
|
|
145
150
|
getProgramParent(): Scope;
|
|
146
151
|
|
|
@@ -194,13 +199,11 @@ export class Binding {
|
|
|
194
199
|
constantViolations: NodePath[];
|
|
195
200
|
}
|
|
196
201
|
|
|
197
|
-
export type Visitor<S = {}> = VisitNodeObject<S, Node> &
|
|
198
|
-
{
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
[K in keyof t.Aliases]?: VisitNode<S, t.Aliases[K]>;
|
|
203
|
-
};
|
|
202
|
+
export type Visitor<S = {}> = VisitNodeObject<S, Node> & {
|
|
203
|
+
[Type in Node['type']]?: VisitNode<S, Extract<Node, { type: Type }>>;
|
|
204
|
+
} & {
|
|
205
|
+
[K in keyof t.Aliases]?: VisitNode<S, t.Aliases[K]>;
|
|
206
|
+
};
|
|
204
207
|
|
|
205
208
|
export type VisitNode<S, P extends Node> = VisitNodeFunction<S, P> | VisitNodeObject<S, P>;
|
|
206
209
|
|
|
@@ -254,6 +257,8 @@ export class NodePath<T = Node> {
|
|
|
254
257
|
|
|
255
258
|
getData(key: string, def?: any): any;
|
|
256
259
|
|
|
260
|
+
hasNode(): this is NodePath<NonNullable<this['node']>>;
|
|
261
|
+
|
|
257
262
|
buildCodeFrameError<TError extends Error>(msg: string, Error?: new (msg: string) => TError): TError;
|
|
258
263
|
|
|
259
264
|
traverse<T>(visitor: Visitor<T>, state: T): void;
|
package/dist/types.d.ts
CHANGED
|
@@ -42,7 +42,7 @@ interface BaseNode {
|
|
|
42
42
|
extra?: Record<string, unknown>;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
export type Node = AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | Binary | BinaryExpression | BindExpression | Block | BlockParent | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | Class | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | CompletionStatement | Conditional | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | Declaration | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBody | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | Expression | ExpressionStatement | ExpressionWrapper | File | Flow | FlowBaseAnnotation | FlowDeclaration | FlowPredicate | FlowType | For | ForInStatement | ForOfStatement | ForStatement | ForXStatement | Function | FunctionDeclaration | FunctionExpression | FunctionParent | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Immutable | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSX | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LVal | LabeledStatement | Literal | LogicalExpression | Loop | Marko | MarkoAttribute | MarkoCDATA | MarkoClass | MarkoComment | MarkoDeclaration | MarkoDocumentType | MarkoPlaceholder | MarkoScriptlet | MarkoSpreadAttribute | MarkoTag | MarkoTagBody | MarkoText | MemberExpression | MetaProperty | Method | Miscellaneous | MixedTypeAnnotation | ModuleDeclaration | ModuleExpression | ModuleSpecifier | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMember | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | Pattern | PatternLike | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | Private | PrivateName | Program | Property | Pureish | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | Scopable | Scope | SequenceExpression | SpreadElement | SpreadProperty | Standardized | Statement | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBaseType | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEntityName | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeElement | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | Terminatorless | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeScript | TypeofTypeAnnotation | UnaryExpression | UnaryLike | UnionTypeAnnotation | UpdateExpression | UserWhitespacable | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | While | WhileStatement | WithStatement | YieldExpression;
|
|
45
|
+
export type Node = Accessor | AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | Binary | BinaryExpression | BindExpression | Block | BlockParent | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | Class | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | CompletionStatement | Conditional | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | Declaration | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBody | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | Expression | ExpressionStatement | ExpressionWrapper | File | Flow | FlowBaseAnnotation | FlowDeclaration | FlowPredicate | FlowType | For | ForInStatement | ForOfStatement | ForStatement | ForXStatement | Function | FunctionDeclaration | FunctionExpression | FunctionParent | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Immutable | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSX | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LVal | LabeledStatement | Literal | LogicalExpression | Loop | Marko | MarkoAttribute | MarkoCDATA | MarkoClass | MarkoComment | MarkoDeclaration | MarkoDocumentType | MarkoPlaceholder | MarkoScriptlet | MarkoSpreadAttribute | MarkoTag | MarkoTagBody | MarkoText | MemberExpression | MetaProperty | Method | Miscellaneous | MixedTypeAnnotation | ModuleDeclaration | ModuleExpression | ModuleSpecifier | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMember | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | Pattern | PatternLike | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | Private | PrivateName | Program | Property | Pureish | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | Scopable | Scope | SequenceExpression | SpreadElement | SpreadProperty | Standardized | Statement | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBaseType | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEntityName | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeElement | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | Terminatorless | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeScript | TypeofTypeAnnotation | UnaryExpression | UnaryLike | UnionTypeAnnotation | UpdateExpression | UserWhitespacable | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | While | WhileStatement | WithStatement | YieldExpression;
|
|
46
46
|
|
|
47
47
|
export interface ArrayExpression extends BaseNode {
|
|
48
48
|
type: "ArrayExpression";
|
|
@@ -407,7 +407,7 @@ export interface ArrowFunctionExpression extends BaseNode {
|
|
|
407
407
|
|
|
408
408
|
export interface ClassBody extends BaseNode {
|
|
409
409
|
type: "ClassBody";
|
|
410
|
-
body: Array<ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | TSDeclareMethod | TSIndexSignature>;
|
|
410
|
+
body: Array<ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | ClassAccessorProperty | TSDeclareMethod | TSIndexSignature | StaticBlock>;
|
|
411
411
|
}
|
|
412
412
|
|
|
413
413
|
export interface ClassExpression extends BaseNode {
|
|
@@ -619,6 +619,24 @@ export interface ClassProperty extends BaseNode {
|
|
|
619
619
|
variance: Variance | null;
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
+
export interface ClassAccessorProperty extends BaseNode {
|
|
623
|
+
type: "ClassAccessorProperty";
|
|
624
|
+
key: Identifier | StringLiteral | NumericLiteral | Expression | PrivateName;
|
|
625
|
+
value: Expression | null;
|
|
626
|
+
typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
|
|
627
|
+
decorators: Array<Decorator> | null;
|
|
628
|
+
computed: boolean;
|
|
629
|
+
static: boolean;
|
|
630
|
+
abstract: boolean | null;
|
|
631
|
+
accessibility: "public" | "private" | "protected" | null;
|
|
632
|
+
declare: boolean | null;
|
|
633
|
+
definite: boolean | null;
|
|
634
|
+
optional: boolean | null;
|
|
635
|
+
override: boolean;
|
|
636
|
+
readonly: boolean | null;
|
|
637
|
+
variance: Variance | null;
|
|
638
|
+
}
|
|
639
|
+
|
|
622
640
|
export interface ClassPrivateProperty extends BaseNode {
|
|
623
641
|
type: "ClassPrivateProperty";
|
|
624
642
|
key: PrivateName;
|
|
@@ -1706,7 +1724,7 @@ export type RestProperty = RestElement;
|
|
|
1706
1724
|
*/
|
|
1707
1725
|
export type SpreadProperty = SpreadElement;
|
|
1708
1726
|
|
|
1709
|
-
export type Standardized = ArrayExpression | AssignmentExpression | BinaryExpression | InterpreterDirective | Directive | DirectiveLiteral | BlockStatement | BreakStatement | CallExpression | CatchClause | ConditionalExpression | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | File | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | LabeledStatement | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | Program | ObjectExpression | ObjectMethod | ObjectProperty | RestElement | ReturnStatement | SequenceExpression | ParenthesizedExpression | SwitchCase | SwitchStatement | ThisExpression | ThrowStatement | TryStatement | UnaryExpression | UpdateExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | AssignmentPattern | ArrayPattern | ArrowFunctionExpression | ClassBody | ClassExpression | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ForOfStatement | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | MetaProperty | ClassMethod | ObjectPattern | SpreadElement | Super | TaggedTemplateExpression | TemplateElement | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | ExportNamespaceSpecifier | OptionalMemberExpression | OptionalCallExpression | ClassProperty | ClassPrivateProperty | ClassPrivateMethod | PrivateName | StaticBlock;
|
|
1727
|
+
export type Standardized = ArrayExpression | AssignmentExpression | BinaryExpression | InterpreterDirective | Directive | DirectiveLiteral | BlockStatement | BreakStatement | CallExpression | CatchClause | ConditionalExpression | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | File | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | LabeledStatement | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | Program | ObjectExpression | ObjectMethod | ObjectProperty | RestElement | ReturnStatement | SequenceExpression | ParenthesizedExpression | SwitchCase | SwitchStatement | ThisExpression | ThrowStatement | TryStatement | UnaryExpression | UpdateExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | AssignmentPattern | ArrayPattern | ArrowFunctionExpression | ClassBody | ClassExpression | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ForOfStatement | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | MetaProperty | ClassMethod | ObjectPattern | SpreadElement | Super | TaggedTemplateExpression | TemplateElement | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | ExportNamespaceSpecifier | OptionalMemberExpression | OptionalCallExpression | ClassProperty | ClassAccessorProperty | ClassPrivateProperty | ClassPrivateMethod | PrivateName | StaticBlock;
|
|
1710
1728
|
export type Expression = ArrayExpression | AssignmentExpression | BinaryExpression | CallExpression | ConditionalExpression | FunctionExpression | Identifier | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | ObjectExpression | SequenceExpression | ParenthesizedExpression | ThisExpression | UnaryExpression | UpdateExpression | ArrowFunctionExpression | ClassExpression | MetaProperty | Super | TaggedTemplateExpression | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | OptionalMemberExpression | OptionalCallExpression | TypeCastExpression | JSXElement | JSXFragment | BindExpression | DoExpression | RecordExpression | TupleExpression | DecimalLiteral | ModuleExpression | TopicReference | PipelineTopicExpression | PipelineBareFunction | PipelinePrimaryTopicReference | TSAsExpression | TSTypeAssertion | TSNonNullExpression;
|
|
1711
1729
|
export type Binary = BinaryExpression | LogicalExpression;
|
|
1712
1730
|
export type Scopable = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ClassExpression | ClassDeclaration | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
|
|
@@ -1733,13 +1751,14 @@ export type Immutable = StringLiteral | NumericLiteral | NullLiteral | BooleanLi
|
|
|
1733
1751
|
export type UserWhitespacable = ObjectMethod | ObjectProperty | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty;
|
|
1734
1752
|
export type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;
|
|
1735
1753
|
export type ObjectMember = ObjectMethod | ObjectProperty;
|
|
1736
|
-
export type Property = ObjectProperty | ClassProperty | ClassPrivateProperty;
|
|
1754
|
+
export type Property = ObjectProperty | ClassProperty | ClassAccessorProperty | ClassPrivateProperty;
|
|
1737
1755
|
export type UnaryLike = UnaryExpression | SpreadElement;
|
|
1738
1756
|
export type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern;
|
|
1739
1757
|
export type Class = ClassExpression | ClassDeclaration;
|
|
1740
1758
|
export type ModuleDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration;
|
|
1741
1759
|
export type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration;
|
|
1742
1760
|
export type ModuleSpecifier = ExportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ExportNamespaceSpecifier | ExportDefaultSpecifier;
|
|
1761
|
+
export type Accessor = ClassAccessorProperty;
|
|
1743
1762
|
export type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;
|
|
1744
1763
|
export type Flow = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ClassImplements | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | DeclaredPredicate | ExistsTypeAnnotation | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | InferredPredicate | InterfaceExtends | InterfaceDeclaration | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | QualifiedTypeIdentifier | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | UnionTypeAnnotation | Variance | VoidTypeAnnotation | EnumDeclaration | EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody | EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember | IndexedAccessType | OptionalIndexedAccessType;
|
|
1745
1764
|
export type FlowType = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ExistsTypeAnnotation | FunctionTypeAnnotation | GenericTypeAnnotation | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | UnionTypeAnnotation | VoidTypeAnnotation | IndexedAccessType | OptionalIndexedAccessType;
|
|
@@ -1792,6 +1811,7 @@ export interface Aliases {
|
|
|
1792
1811
|
ModuleDeclaration: ModuleDeclaration;
|
|
1793
1812
|
ExportDeclaration: ExportDeclaration;
|
|
1794
1813
|
ModuleSpecifier: ModuleSpecifier;
|
|
1814
|
+
Accessor: Accessor;
|
|
1795
1815
|
Private: Private;
|
|
1796
1816
|
Flow: Flow;
|
|
1797
1817
|
FlowType: FlowType;
|
|
@@ -1864,7 +1884,7 @@ export function withStatement(object: Expression, body: Statement): WithStatemen
|
|
|
1864
1884
|
export function assignmentPattern(left: Identifier | ObjectPattern | ArrayPattern | MemberExpression, right: Expression): AssignmentPattern;
|
|
1865
1885
|
export function arrayPattern(elements: Array<null | PatternLike>): ArrayPattern;
|
|
1866
1886
|
export function arrowFunctionExpression(params: Array<Identifier | Pattern | RestElement>, body: BlockStatement | Expression, async?: boolean): ArrowFunctionExpression;
|
|
1867
|
-
export function classBody(body: Array<ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | TSDeclareMethod | TSIndexSignature>): ClassBody;
|
|
1887
|
+
export function classBody(body: Array<ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | ClassAccessorProperty | TSDeclareMethod | TSIndexSignature | StaticBlock>): ClassBody;
|
|
1868
1888
|
export function classExpression(id: Identifier | null | undefined, superClass: Expression | null | undefined, body: ClassBody, decorators?: Array<Decorator> | null): ClassExpression;
|
|
1869
1889
|
export function classDeclaration(id: Identifier, superClass: Expression | null | undefined, body: ClassBody, decorators?: Array<Decorator> | null): ClassDeclaration;
|
|
1870
1890
|
export function exportAllDeclaration(source: StringLiteral): ExportAllDeclaration;
|
|
@@ -1894,6 +1914,7 @@ export function exportNamespaceSpecifier(exported: Identifier): ExportNamespaceS
|
|
|
1894
1914
|
export function optionalMemberExpression(object: Expression, property: Expression | Identifier, computed: boolean | undefined, optional: boolean): OptionalMemberExpression;
|
|
1895
1915
|
export function optionalCallExpression(callee: Expression, _arguments: Array<Expression | SpreadElement | JSXNamespacedName | ArgumentPlaceholder>, optional: boolean): OptionalCallExpression;
|
|
1896
1916
|
export function classProperty(key: Identifier | StringLiteral | NumericLiteral | Expression, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Array<Decorator> | null, computed?: boolean, _static?: boolean): ClassProperty;
|
|
1917
|
+
export function classAccessorProperty(key: Identifier | StringLiteral | NumericLiteral | Expression | PrivateName, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Array<Decorator> | null, computed?: boolean, _static?: boolean): ClassAccessorProperty;
|
|
1897
1918
|
export function classPrivateProperty(key: PrivateName, value: Expression | null | undefined, decorators: Array<Decorator> | null | undefined, _static: any): ClassPrivateProperty;
|
|
1898
1919
|
export function classPrivateMethod(kind: "get" | "set" | "method" | "constructor" | undefined, key: PrivateName, params: Array<Identifier | Pattern | RestElement | TSParameterProperty>, body: BlockStatement, _static?: boolean): ClassPrivateMethod;
|
|
1899
1920
|
export function privateName(id: Identifier): PrivateName;
|
|
@@ -2070,6 +2091,8 @@ export function markoAttribute(name: string, value: Expression, modifier?: strin
|
|
|
2070
2091
|
export function markoSpreadAttribute(value: Expression): MarkoSpreadAttribute;
|
|
2071
2092
|
export function markoTagBody(body?: Array<MarkoTag | MarkoCDATA | MarkoText | MarkoPlaceholder | MarkoScriptlet | MarkoComment>, params?: Array<Identifier | Pattern | RestElement>): MarkoTagBody;
|
|
2072
2093
|
export function markoTag(name: Expression, attributes: Array<MarkoAttribute | MarkoSpreadAttribute> | undefined, body: MarkoTagBody, _arguments?: Array<Expression | SpreadElement> | null, _var?: LVal | null): MarkoTag;
|
|
2094
|
+
export function isAccessor(node: object | null | undefined, opts?: object | null): node is Accessor;
|
|
2095
|
+
export function assertAccessor(node: object | null | undefined, opts?: object | null): void;
|
|
2073
2096
|
export function isAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): node is AnyTypeAnnotation;
|
|
2074
2097
|
export function assertAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
|
|
2075
2098
|
export function isArgumentPlaceholder(node: object | null | undefined, opts?: object | null): node is ArgumentPlaceholder;
|
|
@@ -2116,6 +2139,8 @@ export function isCatchClause(node: object | null | undefined, opts?: object | n
|
|
|
2116
2139
|
export function assertCatchClause(node: object | null | undefined, opts?: object | null): void;
|
|
2117
2140
|
export function isClass(node: object | null | undefined, opts?: object | null): node is Class;
|
|
2118
2141
|
export function assertClass(node: object | null | undefined, opts?: object | null): void;
|
|
2142
|
+
export function isClassAccessorProperty(node: object | null | undefined, opts?: object | null): node is ClassAccessorProperty;
|
|
2143
|
+
export function assertClassAccessorProperty(node: object | null | undefined, opts?: object | null): void;
|
|
2119
2144
|
export function isClassBody(node: object | null | undefined, opts?: object | null): node is ClassBody;
|
|
2120
2145
|
export function assertClassBody(node: object | null | undefined, opts?: object | null): void;
|
|
2121
2146
|
export function isClassDeclaration(node: object | null | undefined, opts?: object | null): node is ClassDeclaration;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marko/compiler",
|
|
3
3
|
"description": "Marko template to JS compiler.",
|
|
4
|
-
"version": "5.20.
|
|
4
|
+
"version": "5.20.9",
|
|
5
5
|
"author": "Dylan Piercey <dpiercey@ebay.com>",
|
|
6
6
|
"bugs": "https://github.com/marko-js/marko/issues/new?template=Bug_report.md",
|
|
7
7
|
"dependencies": {
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"@babel/runtime": "^7.16.0",
|
|
14
14
|
"@babel/traverse": "^7.16.0",
|
|
15
15
|
"@babel/types": "^7.16.0",
|
|
16
|
-
"@marko/babel-utils": "^5.20.
|
|
16
|
+
"@marko/babel-utils": "^5.20.9",
|
|
17
17
|
"complain": "^1.6.0",
|
|
18
18
|
"he": "^1.2.0",
|
|
19
|
-
"htmljs-parser": "^
|
|
19
|
+
"htmljs-parser": "^3.3.1",
|
|
20
20
|
"jsesc": "^3.0.2",
|
|
21
21
|
"lasso-package-root": "^1.0.1",
|
|
22
22
|
"property-handlers": "^1.1.1",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"strip-json-comments": "^3.1.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@marko/translator-default": "^5.20.
|
|
31
|
+
"@marko/translator-default": "^5.20.9"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"url": "https://github.com/marko-js/marko/tree/master/packages/compiler"
|
|
60
60
|
},
|
|
61
61
|
"types": "index.d.ts",
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "637f064c6c8c5c9767d2f6e8a645937eca874a49"
|
|
63
63
|
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";exports.__esModule = true;exports.default = void 0;var _babelUtils = require("@marko/babel-utils");var _default =
|
|
2
|
-
|
|
3
|
-
(file, details) => {
|
|
4
|
-
if (details) {
|
|
5
|
-
let startPos = details.pos;
|
|
6
|
-
|
|
7
|
-
if (file.code[startPos] !== "(" && file.code[startPos + 1] === "(") {
|
|
8
|
-
// Fix bug in htmljs-parser with attribute argument positions
|
|
9
|
-
startPos++;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return (0, _babelUtils.parseExpression)(file, `_(${details.value})`, startPos - 1).arguments;
|
|
13
|
-
}
|
|
14
|
-
};exports.default = _default;
|
|
15
|
-
//# sourceMappingURL=parse-arguments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/babel-plugin/util/parse-arguments.js"],"names":["file","details","startPos","pos","code","value","arguments"],"mappings":"gEAAA,gD;;AAEe,CAACA,IAAD,EAAOC,OAAP,KAAmB;AAChC,MAAIA,OAAJ,EAAa;AACX,QAAIC,QAAQ,GAAGD,OAAO,CAACE,GAAvB;;AAEA,QAAIH,IAAI,CAACI,IAAL,CAAUF,QAAV,MAAwB,GAAxB,IAA+BF,IAAI,CAACI,IAAL,CAAUF,QAAQ,GAAG,CAArB,MAA4B,GAA/D,EAAoE;AAClE;AACAA,MAAAA,QAAQ;AACT;;AAED,WAAO,iCAAgBF,IAAhB,EAAuB,KAAIC,OAAO,CAACI,KAAM,GAAzC,EAA6CH,QAAQ,GAAG,CAAxD,EAA2DI,SAAlE;AACD;AACF,C","sourcesContent":["import { parseExpression } from \"@marko/babel-utils\";\n\nexport default (file, details) => {\n if (details) {\n let startPos = details.pos;\n\n if (file.code[startPos] !== \"(\" && file.code[startPos + 1] === \"(\") {\n // Fix bug in htmljs-parser with attribute argument positions\n startPos++;\n }\n\n return parseExpression(file, `_(${details.value})`, startPos - 1).arguments;\n }\n};\n"],"file":"parse-arguments.js"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = void 0;var t = _interopRequireWildcard(require("../../babel-types"));
|
|
2
|
-
var _babelUtils = require("@marko/babel-utils");
|
|
3
|
-
var _parseArguments = _interopRequireDefault(require("./parse-arguments"));function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}var _default =
|
|
4
|
-
|
|
5
|
-
(file, attributes, startPos) => {
|
|
6
|
-
const code = file.code;
|
|
7
|
-
let attrEndPos = startPos;
|
|
8
|
-
|
|
9
|
-
return attributes.map((attr) => {
|
|
10
|
-
let attrStartPos = attr.default ?
|
|
11
|
-
attr.pos :
|
|
12
|
-
code.indexOf(attr.name, attrEndPos);
|
|
13
|
-
|
|
14
|
-
if (attr.name.startsWith("...")) {
|
|
15
|
-
let attrExpression = attr.name.slice(3);
|
|
16
|
-
|
|
17
|
-
if (attr.argument) {
|
|
18
|
-
attrExpression += `(${attr.argument.value})`;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
attrEndPos = attrStartPos + attrExpression.length;
|
|
22
|
-
|
|
23
|
-
const value = (0, _babelUtils.parseExpression)(file, attrExpression, attrStartPos + 3);
|
|
24
|
-
|
|
25
|
-
// TODO: Inline merge object literals.
|
|
26
|
-
return (0, _babelUtils.withLoc)(
|
|
27
|
-
file,
|
|
28
|
-
t.markoSpreadAttribute(value),
|
|
29
|
-
attrStartPos,
|
|
30
|
-
attrEndPos);
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const match = /:(.*)$/.exec(attr.name);
|
|
35
|
-
const modifier = match && match[1];
|
|
36
|
-
let name = attr.name;
|
|
37
|
-
let value;
|
|
38
|
-
|
|
39
|
-
if (modifier) {
|
|
40
|
-
name = name.slice(0, name.length - modifier.length - 1);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (attr.value) {
|
|
44
|
-
attrEndPos = attr.endPos;
|
|
45
|
-
|
|
46
|
-
if (attr.method) {
|
|
47
|
-
if (code[attrStartPos] !== "(") {
|
|
48
|
-
// fix bug in htmljs parser position.
|
|
49
|
-
attrStartPos = code.indexOf("(", attrStartPos);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (code[attrEndPos] === "}") {
|
|
53
|
-
// fix bug in htmljs parser position.
|
|
54
|
-
attrEndPos++;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const prefix = "function";
|
|
58
|
-
value = (0, _babelUtils.parseExpression)(
|
|
59
|
-
file,
|
|
60
|
-
prefix + code.slice(attrStartPos, attrEndPos), // We use the raw value to ignore things like non standard placeholders.
|
|
61
|
-
attrStartPos - prefix.length);
|
|
62
|
-
|
|
63
|
-
} else {
|
|
64
|
-
const valueStart = attr.pos + 1; // Add one to account for "=".
|
|
65
|
-
const rawValue = code.slice(valueStart, attrEndPos); // We use the raw value to ignore things like non standard placeholders.
|
|
66
|
-
|
|
67
|
-
value = (0, _babelUtils.parseExpression)(file, rawValue, valueStart);
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
attrEndPos = attr.argument ? attr.argument.endPos + 1 : attr.endPos;
|
|
71
|
-
value = t.booleanLiteral(true);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return (0, _babelUtils.withLoc)(
|
|
75
|
-
file,
|
|
76
|
-
t.markoAttribute(
|
|
77
|
-
name,
|
|
78
|
-
value,
|
|
79
|
-
modifier,
|
|
80
|
-
(0, _parseArguments.default)(file, attr.argument),
|
|
81
|
-
Boolean(attr.default),
|
|
82
|
-
Boolean(attr.bound)),
|
|
83
|
-
|
|
84
|
-
attrStartPos,
|
|
85
|
-
attrEndPos);
|
|
86
|
-
|
|
87
|
-
});
|
|
88
|
-
};exports.default = _default;
|
|
89
|
-
//# sourceMappingURL=parse-attributes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/babel-plugin/util/parse-attributes.js"],"names":["file","attributes","startPos","code","attrEndPos","map","attr","attrStartPos","default","pos","indexOf","name","startsWith","attrExpression","slice","argument","value","length","t","markoSpreadAttribute","match","exec","modifier","endPos","method","prefix","valueStart","rawValue","booleanLiteral","markoAttribute","Boolean","bound"],"mappings":"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","sourcesContent":["import * as t from \"../../babel-types\";\nimport { withLoc, parseExpression } from \"@marko/babel-utils\";\nimport parseArguments from \"./parse-arguments\";\n\nexport default (file, attributes, startPos) => {\n const code = file.code;\n let attrEndPos = startPos;\n\n return attributes.map(attr => {\n let attrStartPos = attr.default\n ? attr.pos\n : code.indexOf(attr.name, attrEndPos);\n\n if (attr.name.startsWith(\"...\")) {\n let attrExpression = attr.name.slice(3);\n\n if (attr.argument) {\n attrExpression += `(${attr.argument.value})`;\n }\n\n attrEndPos = attrStartPos + attrExpression.length;\n\n const value = parseExpression(file, attrExpression, attrStartPos + 3);\n\n // TODO: Inline merge object literals.\n return withLoc(\n file,\n t.markoSpreadAttribute(value),\n attrStartPos,\n attrEndPos\n );\n }\n\n const match = /:(.*)$/.exec(attr.name);\n const modifier = match && match[1];\n let name = attr.name;\n let value;\n\n if (modifier) {\n name = name.slice(0, name.length - modifier.length - 1);\n }\n\n if (attr.value) {\n attrEndPos = attr.endPos;\n\n if (attr.method) {\n if (code[attrStartPos] !== \"(\") {\n // fix bug in htmljs parser position.\n attrStartPos = code.indexOf(\"(\", attrStartPos);\n }\n\n if (code[attrEndPos] === \"}\") {\n // fix bug in htmljs parser position.\n attrEndPos++;\n }\n\n const prefix = \"function\";\n value = parseExpression(\n file,\n prefix + code.slice(attrStartPos, attrEndPos), // We use the raw value to ignore things like non standard placeholders.\n attrStartPos - prefix.length\n );\n } else {\n const valueStart = attr.pos + 1; // Add one to account for \"=\".\n const rawValue = code.slice(valueStart, attrEndPos); // We use the raw value to ignore things like non standard placeholders.\n\n value = parseExpression(file, rawValue, valueStart);\n }\n } else {\n attrEndPos = attr.argument ? attr.argument.endPos + 1 : attr.endPos;\n value = t.booleanLiteral(true);\n }\n\n return withLoc(\n file,\n t.markoAttribute(\n name,\n value,\n modifier,\n parseArguments(file, attr.argument),\n Boolean(attr.default),\n Boolean(attr.bound)\n ),\n attrStartPos,\n attrEndPos\n );\n });\n};\n"],"file":"parse-attributes.js"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";exports.__esModule = true;exports.default = void 0;var _babelUtils = require("@marko/babel-utils");
|
|
2
|
-
var t = _interopRequireWildcard(require("../../babel-types"));function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}var _default =
|
|
3
|
-
|
|
4
|
-
(file, shorthands, attributes) => {
|
|
5
|
-
if (!shorthands) {
|
|
6
|
-
return attributes;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const classAttr = attributes.find(({ name }) => name === "class");
|
|
10
|
-
const classParts = shorthands.map(({ rawParts }) => {
|
|
11
|
-
const nodes = rawParts.map((part) =>
|
|
12
|
-
part.expression ?
|
|
13
|
-
(0, _babelUtils.parseExpression)(file, part.expression, part.pos) :
|
|
14
|
-
(0, _babelUtils.withLoc)(file, t.stringLiteral(part.text), part.pos, part.endPos));
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (nodes.length === 1) {
|
|
18
|
-
return nodes[0];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return nodes.reduce((a, b) => t.binaryExpression("+", a, b));
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
let shorthandNode;
|
|
25
|
-
if (classParts.length === 1) {
|
|
26
|
-
shorthandNode = classParts[0];
|
|
27
|
-
} else if (classParts.every((node) => t.isStringLiteral(node))) {
|
|
28
|
-
const combinedStartPos = shorthands[0].rawParts[0].pos;
|
|
29
|
-
const lastParts = shorthands[shorthands.length - 1].rawParts;
|
|
30
|
-
const combinedEndPos = lastParts[lastParts.length - 1].endPos;
|
|
31
|
-
shorthandNode = (0, _babelUtils.withLoc)(
|
|
32
|
-
file,
|
|
33
|
-
t.stringLiteral(classParts.map((node) => node.value).join(" ")),
|
|
34
|
-
combinedStartPos,
|
|
35
|
-
combinedEndPos);
|
|
36
|
-
|
|
37
|
-
} else {
|
|
38
|
-
shorthandNode = t.arrayExpression(classParts);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (classAttr) {
|
|
42
|
-
if (t.isArrayExpression(classAttr.value)) {
|
|
43
|
-
if (t.isArrayExpression(shorthandNode)) {
|
|
44
|
-
classAttr.value.elements.push(...shorthandNode.elements);
|
|
45
|
-
} else {
|
|
46
|
-
classAttr.value.elements.push(shorthandNode);
|
|
47
|
-
}
|
|
48
|
-
} else if (
|
|
49
|
-
t.isStringLiteral(classAttr.value) &&
|
|
50
|
-
t.isStringLiteral(shorthandNode))
|
|
51
|
-
{
|
|
52
|
-
classAttr.value.value = `${shorthandNode.value} ${classAttr.value.value}`;
|
|
53
|
-
} else if (t.isArrayExpression(shorthandNode)) {
|
|
54
|
-
shorthandNode.elements.push(classAttr.value);
|
|
55
|
-
classAttr.value = shorthandNode;
|
|
56
|
-
} else {
|
|
57
|
-
classAttr.value = t.arrayExpression([shorthandNode, classAttr.value]);
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
attributes.push(t.markoAttribute("class", shorthandNode));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return attributes;
|
|
64
|
-
};exports.default = _default;
|
|
65
|
-
//# sourceMappingURL=parse-classname-shorthand.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/babel-plugin/util/parse-classname-shorthand.js"],"names":["file","shorthands","attributes","classAttr","find","name","classParts","map","rawParts","nodes","part","expression","pos","t","stringLiteral","text","endPos","length","reduce","a","b","binaryExpression","shorthandNode","every","node","isStringLiteral","combinedStartPos","lastParts","combinedEndPos","value","join","arrayExpression","isArrayExpression","elements","push","markoAttribute"],"mappings":"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","sourcesContent":["import { withLoc, parseExpression } from \"@marko/babel-utils\";\nimport * as t from \"../../babel-types\";\n\nexport default (file, shorthands, attributes) => {\n if (!shorthands) {\n return attributes;\n }\n\n const classAttr = attributes.find(({ name }) => name === \"class\");\n const classParts = shorthands.map(({ rawParts }) => {\n const nodes = rawParts.map(part =>\n part.expression\n ? parseExpression(file, part.expression, part.pos)\n : withLoc(file, t.stringLiteral(part.text), part.pos, part.endPos)\n );\n\n if (nodes.length === 1) {\n return nodes[0];\n }\n\n return nodes.reduce((a, b) => t.binaryExpression(\"+\", a, b));\n });\n\n let shorthandNode;\n if (classParts.length === 1) {\n shorthandNode = classParts[0];\n } else if (classParts.every(node => t.isStringLiteral(node))) {\n const combinedStartPos = shorthands[0].rawParts[0].pos;\n const lastParts = shorthands[shorthands.length - 1].rawParts;\n const combinedEndPos = lastParts[lastParts.length - 1].endPos;\n shorthandNode = withLoc(\n file,\n t.stringLiteral(classParts.map(node => node.value).join(\" \")),\n combinedStartPos,\n combinedEndPos\n );\n } else {\n shorthandNode = t.arrayExpression(classParts);\n }\n\n if (classAttr) {\n if (t.isArrayExpression(classAttr.value)) {\n if (t.isArrayExpression(shorthandNode)) {\n classAttr.value.elements.push(...shorthandNode.elements);\n } else {\n classAttr.value.elements.push(shorthandNode);\n }\n } else if (\n t.isStringLiteral(classAttr.value) &&\n t.isStringLiteral(shorthandNode)\n ) {\n classAttr.value.value = `${shorthandNode.value} ${classAttr.value.value}`;\n } else if (t.isArrayExpression(shorthandNode)) {\n shorthandNode.elements.push(classAttr.value);\n classAttr.value = shorthandNode;\n } else {\n classAttr.value = t.arrayExpression([shorthandNode, classAttr.value]);\n }\n } else {\n attributes.push(t.markoAttribute(\"class\", shorthandNode));\n }\n\n return attributes;\n};\n"],"file":"parse-classname-shorthand.js"}
|