@marko/translator-default 5.18.0 → 5.18.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -40,30 +40,31 @@ function _default(path, isNullable) {
40
40
  }
41
41
  }
42
42
 
43
+ let binding = path.scope.getBinding(tagName);
44
+ if (binding && !binding.identifier.loc) binding = null;
45
+
43
46
  if (relativePath) {
44
- if (path.scope.hasBinding(tagName)) {
47
+ if (binding) {
45
48
  console.warn(
46
49
  path.buildCodeFrameError(
47
50
  `The <${tagName}> tag has been resolved from the filesystem, however a local variable with the same name exists. In the next major version of Marko the local variable will tag precedence.`));
48
51
 
49
52
 
50
53
  }
54
+
55
+ tagIdentifier = (0, _babelUtils.importDefault)(file, relativePath, tagName);
56
+ } else if (binding) {
57
+ path.set("name", _compiler.types.identifier(tagName));
58
+ return (0, _dynamicTag.default)(path);
59
+ } else if (markoOpts.ignoreUnrecognizedTags) {
60
+ return (0, _nativeTag.default)(path);
51
61
  } else {
52
- if (path.scope.hasBinding(tagName)) {
53
- path.set("name", _compiler.types.identifier(tagName));
54
- return (0, _dynamicTag.default)(path);
55
- } else if (markoOpts.ignoreUnrecognizedTags) {
56
- return (0, _nativeTag.default)(path);
57
- } else {
58
- throw path.
59
- get("name").
60
- buildCodeFrameError(
61
- `Unable to find entry point for custom tag <${tagName}>.`);
62
+ throw path.
63
+ get("name").
64
+ buildCodeFrameError(
65
+ `Unable to find entry point for custom tag <${tagName}>.`);
62
66
 
63
- }
64
67
  }
65
-
66
- tagIdentifier = (0, _babelUtils.importDefault)(file, relativePath, tagName);
67
68
  } else {
68
69
  tagIdentifier = name;
69
70
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tag/custom-tag.js"],"names":["path","isNullable","hub","file","node","markoOpts","name","key","tagIdentifier","t","isStringLiteral","tagName","value","relativePath","extra","tagDef","taglibId","renderer","scope","hasBinding","console","warn","buildCodeFrameError","set","identifier","ignoreUnrecognizedTags","get","foundAttrs","customTagRenderCall","expressionStatement","callExpression","isNullLiteral","objectExpression","_componentDefIdentifier","renderBodyIdentifier","renderBodyProp","isObjectExpression","properties","find","prop","generateUidIdentifier","insertBefore","variableDeclaration","variableDeclarator","replaceWith","ifStatement"],"mappings":"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","sourcesContent":["import { types as t } from \"@marko/compiler\";\nimport {\n assertNoArgs,\n getTagDef,\n importDefault,\n resolveRelativePath\n} from \"@marko/babel-utils\";\nimport { getAttrs, buildEventHandlerArray } from \"./util\";\nimport nativeTag from \"./native-tag\";\nimport dynamicTag from \"./dynamic-tag\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path, isNullable) {\n const {\n hub: { file },\n node\n } = path;\n const { markoOpts } = file;\n const { name, key } = node;\n\n assertNoArgs(path);\n\n let tagIdentifier;\n\n if (t.isStringLiteral(name)) {\n const tagName = name.value;\n let relativePath = node.extra && node.extra.relativePath;\n\n if (!relativePath) {\n const tagDef = getTagDef(path);\n if (\n tagDef &&\n tagDef.taglibId === \"marko-default-core\" &&\n tagDef.renderer\n ) {\n // Normally new tags should not be added in the translate stage.\n // We make an exception here for core tags, init-components & _preserve being the primary culprits.\n // TODO: in the future refactor so this is not needed.\n relativePath = resolveRelativePath(file, tagDef.renderer);\n }\n }\n\n if (relativePath) {\n if (path.scope.hasBinding(tagName)) {\n console.warn(\n path.buildCodeFrameError(\n `The <${tagName}> tag has been resolved from the filesystem, however a local variable with the same name exists. In the next major version of Marko the local variable will tag precedence.`\n )\n );\n }\n } else {\n if (path.scope.hasBinding(tagName)) {\n path.set(\"name\", t.identifier(tagName));\n return dynamicTag(path);\n } else if (markoOpts.ignoreUnrecognizedTags) {\n return nativeTag(path);\n } else {\n throw path\n .get(\"name\")\n .buildCodeFrameError(\n `Unable to find entry point for custom tag <${tagName}>.`\n );\n }\n }\n\n tagIdentifier = importDefault(file, relativePath, tagName);\n } else {\n tagIdentifier = name;\n }\n\n const foundAttrs = getAttrs(path);\n const customTagRenderCall = withPreviousLocation(\n t.expressionStatement(\n t.callExpression(\n importDefault(\n file,\n \"marko/src/runtime/helpers/render-tag.js\",\n \"marko_tag\"\n ),\n [\n tagIdentifier,\n // TODO: this could be left as null if we froze input mutations and used a default object in the runtime.\n t.isNullLiteral(foundAttrs) ? t.objectExpression([]) : foundAttrs,\n t.identifier(\"out\"),\n file._componentDefIdentifier,\n key,\n ...buildEventHandlerArray(path)\n ]\n )\n ),\n node\n );\n\n if (isNullable) {\n let renderBodyIdentifier;\n const renderBodyProp =\n t.isObjectExpression(foundAttrs) &&\n foundAttrs.properties.find(\n prop => prop.key && prop.key.value === \"renderBody\"\n );\n\n if (renderBodyProp) {\n renderBodyIdentifier = path.scope.generateUidIdentifier(\"renderBody\");\n path.insertBefore(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(renderBodyIdentifier, renderBodyProp.value)\n ])\n );\n\n renderBodyProp.value = renderBodyIdentifier;\n }\n\n path.replaceWith(\n t.ifStatement(\n name,\n customTagRenderCall,\n renderBodyIdentifier &&\n t.expressionStatement(\n t.callExpression(renderBodyIdentifier, [t.identifier(\"out\")])\n )\n )\n );\n } else {\n path.replaceWith(customTagRenderCall);\n }\n}\n"],"file":"custom-tag.js"}
1
+ {"version":3,"sources":["../../src/tag/custom-tag.js"],"names":["path","isNullable","hub","file","node","markoOpts","name","key","tagIdentifier","t","isStringLiteral","tagName","value","relativePath","extra","tagDef","taglibId","renderer","binding","scope","getBinding","identifier","loc","console","warn","buildCodeFrameError","set","ignoreUnrecognizedTags","get","foundAttrs","customTagRenderCall","expressionStatement","callExpression","isNullLiteral","objectExpression","_componentDefIdentifier","renderBodyIdentifier","renderBodyProp","isObjectExpression","properties","find","prop","generateUidIdentifier","insertBefore","variableDeclaration","variableDeclarator","replaceWith","ifStatement"],"mappings":"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","sourcesContent":["import { types as t } from \"@marko/compiler\";\nimport {\n assertNoArgs,\n getTagDef,\n importDefault,\n resolveRelativePath\n} from \"@marko/babel-utils\";\nimport { getAttrs, buildEventHandlerArray } from \"./util\";\nimport nativeTag from \"./native-tag\";\nimport dynamicTag from \"./dynamic-tag\";\nimport withPreviousLocation from \"../util/with-previous-location\";\n\nexport default function (path, isNullable) {\n const {\n hub: { file },\n node\n } = path;\n const { markoOpts } = file;\n const { name, key } = node;\n\n assertNoArgs(path);\n\n let tagIdentifier;\n\n if (t.isStringLiteral(name)) {\n const tagName = name.value;\n let relativePath = node.extra && node.extra.relativePath;\n\n if (!relativePath) {\n const tagDef = getTagDef(path);\n if (\n tagDef &&\n tagDef.taglibId === \"marko-default-core\" &&\n tagDef.renderer\n ) {\n // Normally new tags should not be added in the translate stage.\n // We make an exception here for core tags, init-components & _preserve being the primary culprits.\n // TODO: in the future refactor so this is not needed.\n relativePath = resolveRelativePath(file, tagDef.renderer);\n }\n }\n\n let binding = path.scope.getBinding(tagName);\n if (binding && !binding.identifier.loc) binding = null;\n\n if (relativePath) {\n if (binding) {\n console.warn(\n path.buildCodeFrameError(\n `The <${tagName}> tag has been resolved from the filesystem, however a local variable with the same name exists. In the next major version of Marko the local variable will tag precedence.`\n )\n );\n }\n\n tagIdentifier = importDefault(file, relativePath, tagName);\n } else if (binding) {\n path.set(\"name\", t.identifier(tagName));\n return dynamicTag(path);\n } else if (markoOpts.ignoreUnrecognizedTags) {\n return nativeTag(path);\n } else {\n throw path\n .get(\"name\")\n .buildCodeFrameError(\n `Unable to find entry point for custom tag <${tagName}>.`\n );\n }\n } else {\n tagIdentifier = name;\n }\n\n const foundAttrs = getAttrs(path);\n const customTagRenderCall = withPreviousLocation(\n t.expressionStatement(\n t.callExpression(\n importDefault(\n file,\n \"marko/src/runtime/helpers/render-tag.js\",\n \"marko_tag\"\n ),\n [\n tagIdentifier,\n // TODO: this could be left as null if we froze input mutations and used a default object in the runtime.\n t.isNullLiteral(foundAttrs) ? t.objectExpression([]) : foundAttrs,\n t.identifier(\"out\"),\n file._componentDefIdentifier,\n key,\n ...buildEventHandlerArray(path)\n ]\n )\n ),\n node\n );\n\n if (isNullable) {\n let renderBodyIdentifier;\n const renderBodyProp =\n t.isObjectExpression(foundAttrs) &&\n foundAttrs.properties.find(\n prop => prop.key && prop.key.value === \"renderBody\"\n );\n\n if (renderBodyProp) {\n renderBodyIdentifier = path.scope.generateUidIdentifier(\"renderBody\");\n path.insertBefore(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(renderBodyIdentifier, renderBodyProp.value)\n ])\n );\n\n renderBodyProp.value = renderBodyIdentifier;\n }\n\n path.replaceWith(\n t.ifStatement(\n name,\n customTagRenderCall,\n renderBodyIdentifier &&\n t.expressionStatement(\n t.callExpression(renderBodyIdentifier, [t.identifier(\"out\")])\n )\n )\n );\n } else {\n path.replaceWith(customTagRenderCall);\n }\n}\n"],"file":"custom-tag.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@marko/translator-default",
3
3
  "description": "Translates Marko templates to the default Marko runtime.",
4
- "version": "5.18.0",
4
+ "version": "5.18.1",
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": {
@@ -12,8 +12,8 @@
12
12
  "self-closing-tags": "^1.0.1"
13
13
  },
14
14
  "devDependencies": {
15
- "@marko/compiler": "^5.18.0",
16
- "marko": "^5.18.0"
15
+ "@marko/compiler": "^5.18.1",
16
+ "marko": "^5.18.1"
17
17
  },
18
18
  "files": [
19
19
  "dist"
@@ -42,5 +42,5 @@
42
42
  "type": "git",
43
43
  "url": "https://github.com/marko-js/marko/tree/master/packages/translator-default"
44
44
  },
45
- "gitHead": "daa7b0a1769366a54b6882e176ef6b151628bf57"
45
+ "gitHead": "9d5254c0a1739b1607c3c0edbe7c9d2b00e70838"
46
46
  }