From 4241227dbe683a529745ee6eb1107d0e25b3e555 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sun, 19 Oct 2014 13:17:02 +1100 Subject: [PATCH] remove jsx and react transformers --- lib/6to5/transform.js | 3 - lib/6to5/transformers/jsx/index.js | 99 ------------- lib/6to5/transformers/jsx/known-tags.json | 132 ------------------ lib/6to5/transformers/react.js | 63 --------- test/fixtures/syntax/jsx/annotation/actual.js | 3 - .../syntax/jsx/annotation/expected.js | 2 - test/fixtures/syntax/jsx/empty/actual.js | 1 - test/fixtures/syntax/jsx/empty/expected.js | 2 - test/fixtures/syntax/jsx/everything/actual.js | 2 - .../syntax/jsx/everything/expected.js | 7 - .../fixtures/syntax/jsx/expressions/actual.js | 5 - .../syntax/jsx/expressions/expected.js | 8 -- test/fixtures/syntax/jsx/known-tags/actual.js | 1 - .../syntax/jsx/known-tags/expected.js | 2 - .../syntax/jsx/member-expression/actual.js | 1 - .../syntax/jsx/member-expression/expected.js | 2 - .../syntax/jsx/no-xml-namespaces/actual.js | 1 - .../syntax/jsx/no-xml-namespaces/options.json | 3 - .../syntax/jsx/self-closing-tags/actual.js | 3 - .../syntax/jsx/self-closing-tags/expected.js | 6 - .../fixtures/syntax/jsx/simple-tags/actual.js | 1 - .../syntax/jsx/simple-tags/expected.js | 2 - .../syntax/jsx/tags-with-children/actual.js | 3 - .../syntax/jsx/tags-with-children/expected.js | 9 -- .../syntax/jsx/tags-with-literals/actual.js | 13 -- .../syntax/jsx/tags-with-literals/expected.js | 5 - .../actual.js | 6 - .../expected.js | 10 -- .../react/display-name-if-missing/actual.js | 6 - .../react/display-name-if-missing/expected.js | 9 -- .../display-name-object-declaration/actual.js | 7 - .../expected.js | 11 -- .../actual.js | 5 - .../expected.js | 9 -- .../actual.js | 5 - .../expected.js | 9 -- 36 files changed, 456 deletions(-) delete mode 100644 lib/6to5/transformers/jsx/index.js delete mode 100644 lib/6to5/transformers/jsx/known-tags.json delete mode 100644 lib/6to5/transformers/react.js delete mode 100644 test/fixtures/syntax/jsx/annotation/actual.js delete mode 100644 test/fixtures/syntax/jsx/annotation/expected.js delete mode 100644 test/fixtures/syntax/jsx/empty/actual.js delete mode 100644 test/fixtures/syntax/jsx/empty/expected.js delete mode 100644 test/fixtures/syntax/jsx/everything/actual.js delete mode 100644 test/fixtures/syntax/jsx/everything/expected.js delete mode 100644 test/fixtures/syntax/jsx/expressions/actual.js delete mode 100644 test/fixtures/syntax/jsx/expressions/expected.js delete mode 100644 test/fixtures/syntax/jsx/known-tags/actual.js delete mode 100644 test/fixtures/syntax/jsx/known-tags/expected.js delete mode 100644 test/fixtures/syntax/jsx/member-expression/actual.js delete mode 100644 test/fixtures/syntax/jsx/member-expression/expected.js delete mode 100644 test/fixtures/syntax/jsx/no-xml-namespaces/actual.js delete mode 100644 test/fixtures/syntax/jsx/no-xml-namespaces/options.json delete mode 100644 test/fixtures/syntax/jsx/self-closing-tags/actual.js delete mode 100644 test/fixtures/syntax/jsx/self-closing-tags/expected.js delete mode 100644 test/fixtures/syntax/jsx/simple-tags/actual.js delete mode 100644 test/fixtures/syntax/jsx/simple-tags/expected.js delete mode 100644 test/fixtures/syntax/jsx/tags-with-children/actual.js delete mode 100644 test/fixtures/syntax/jsx/tags-with-children/expected.js delete mode 100644 test/fixtures/syntax/jsx/tags-with-literals/actual.js delete mode 100644 test/fixtures/syntax/jsx/tags-with-literals/expected.js delete mode 100644 test/fixtures/syntax/react/display-name-assignment-expression/actual.js delete mode 100644 test/fixtures/syntax/react/display-name-assignment-expression/expected.js delete mode 100644 test/fixtures/syntax/react/display-name-if-missing/actual.js delete mode 100644 test/fixtures/syntax/react/display-name-if-missing/expected.js delete mode 100644 test/fixtures/syntax/react/display-name-object-declaration/actual.js delete mode 100644 test/fixtures/syntax/react/display-name-object-declaration/expected.js delete mode 100644 test/fixtures/syntax/react/display-name-property-assignment/actual.js delete mode 100644 test/fixtures/syntax/react/display-name-property-assignment/expected.js delete mode 100644 test/fixtures/syntax/react/display-name-variable-declaration/actual.js delete mode 100644 test/fixtures/syntax/react/display-name-variable-declaration/expected.js diff --git a/lib/6to5/transform.js b/lib/6to5/transform.js index a85dd1f37d..1fdae6e52f 100644 --- a/lib/6to5/transform.js +++ b/lib/6to5/transform.js @@ -96,9 +96,6 @@ transform.transformers = { unicodeRegex: require("./transformers/unicode-regex"), generators: require("./transformers/generators"), - react: require("./transformers/react"), - jsx: require("./transformers/jsx"), - _aliasFunctions: require("./transformers/_alias-functions"), _blockHoist: require("./transformers/_block-hoist"), _declarations: require("./transformers/_declarations"), diff --git a/lib/6to5/transformers/jsx/index.js b/lib/6to5/transformers/jsx/index.js deleted file mode 100644 index f3e6477421..0000000000 --- a/lib/6to5/transformers/jsx/index.js +++ /dev/null @@ -1,99 +0,0 @@ -// Based upon the excellent jsx-transpiler by Ingvar Stepanyan (RReverser) -// https://github.com/RReverser/jsx-transpiler - -var esutils = require("esutils"); -var b = require("recast").types.builders; -var _ = require("lodash"); - -var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/; -var KNOWN_TAGS = require("./known-tags"); - -exports.Program = function (node, parent, file) { - var jsx = "React.DOM"; - - // looking for namespace annotation - _.each(node.comments, function (comment) { - if (!comment.possiblyLeading) return; - - var matches = JSX_ANNOTATION_REGEX.exec(comment.value); - if (matches) jsx = matches[1]; - }); - - // prebuilding AST node - file.jsx = jsx.split(".").map(b.identifier).reduce(function (object, property) { - return b.memberExpression(object, property, false); - }); -}; - -exports.XJSIdentifier = function (node) { - if (esutils.keyword.isIdentifierName(node.name)) { - node.type = "Identifier"; - } else { - return b.literal(node.name); - } -}; - -exports.XJSNamespacedName = function () { - throw new Error("Namespace tags are not supported. ReactJSX is not XML."); -}; - -exports.XJSMemberExpression = { - exit: function (node) { - node.computed = node.property.type === "Literal"; - node.type = "MemberExpression"; - } -}; - -exports.XJSEmptyExpression = function (node) { - node.value = null; - node.type = "Literal"; -}; - -exports.XJSExpressionContainer = function (node) { - return node.expression; -}; - -exports.XJSAttribute = { - exit: function (node) { - var value = node.value || b.literal(true); - var propNode = b.property("init", node.name, value); - propNode.loc = node.loc; - return propNode; - } -}; - -exports.XJSOpeningElement = { - exit: function (node, parent, file) { - var tagExpr = node.name; - - if (_.contains(KNOWN_TAGS, tagExpr.name)) { - tagExpr = b.memberExpression(file.jsx, tagExpr, false); - } - - var props = node.attributes; - if (props.length) { - props = b.objectExpression(props); - } else { - props = b.literal(null); - } - - return b.callExpression(tagExpr, [props]); - } -}; - -exports.XJSElement = { - exit: function (node) { - var callExpr = node.openingElement; - var children = node.children; - var args = callExpr.arguments; - - switch (children.length) { - case 0: break; - case 1: args.push(children[0]); break; - default: args.push(b.arrayExpression(children)); - } - - callExpr.loc = node.loc; - return callExpr; - } -}; diff --git a/lib/6to5/transformers/jsx/known-tags.json b/lib/6to5/transformers/jsx/known-tags.json deleted file mode 100644 index 5a530c5bb9..0000000000 --- a/lib/6to5/transformers/jsx/known-tags.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - "a", - "abbr", - "address", - "applet", - "area", - "article", - "aside", - "audio", - "b", - "base", - "bdi", - "bdo", - "big", - "blockquote", - "body", - "br", - "button", - "canvas", - "caption", - "circle", - "cite", - "code", - "col", - "colgroup", - "command", - "data", - "datalist", - "dd", - "defs", - "del", - "details", - "dfn", - "dialog", - "div", - "dl", - "dt", - "ellipse", - "em", - "embed", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "g", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hgroup", - "hr", - "html", - "i", - "iframe", - "img", - "input", - "ins", - "kbd", - "keygen", - "label", - "legend", - "li", - "line", - "linearGradient", - "link", - "main", - "map", - "mark", - "marquee", - "menu", - "menuitem", - "meta", - "meter", - "nav", - "noscript", - "object", - "ol", - "optgroup", - "option", - "output", - "p", - "param", - "path", - "polygon", - "polyline", - "pre", - "progress", - "q", - "radialGradient", - "rect", - "rp", - "rt", - "ruby", - "s", - "samp", - "script", - "section", - "select", - "small", - "source", - "span", - "stop", - "strong", - "style", - "sub", - "summary", - "sup", - "svg", - "table", - "tbody", - "td", - "text", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "track", - "tspan", - "u", - "ul", - "var", - "video", - "wbr" -] diff --git a/lib/6to5/transformers/react.js b/lib/6to5/transformers/react.js deleted file mode 100644 index 9a413abba7..0000000000 --- a/lib/6to5/transformers/react.js +++ /dev/null @@ -1,63 +0,0 @@ -var b = require("recast").types.builders; -var _ = require("lodash"); - -var addDisplayName = function (id, call) { - if (!call || call.type !== "CallExpression") return; - - var callee = call.callee; - if (callee.type !== "MemberExpression") return; - - // not React - var obj = callee.object; - if (obj.type !== "Identifier" || obj.name !== "React") return; - - // not createClass - var prop = callee.property; - if (prop.type !== "Identifier" || prop.name !== "createClass") return; - - // no arguments - var args = call.arguments; - if (args.length !== 1) return; - - // not an object - var first = args[0]; - if (first.type !== "ObjectExpression") return; - - var props = first.properties; - var safe = true; - - _.each(props, function (prop) { - if (prop.key.name === "displayName") { - return safe = false; - } - }); - - if (safe) { - props.unshift(b.property("init", b.identifier("displayName"), b.literal(id))); - } -}; - -exports.AssignmentExpression = -exports.Property = -exports.VariableDeclarator = function (node) { - var left, right; - - if (node.type === "AssignmentExpression") { - left = node.left; - right = node.right; - } else if (node.type === "Property") { - left = node.key; - right = node.value; - } else if (node.type === "VariableDeclarator") { - left = node.id; - right = node.init; - } - - if (left && left.type === "MemberExpression") { - left = left.property; - } - - if (left && left.type === "Identifier") { - addDisplayName(left.name, right); - } -}; diff --git a/test/fixtures/syntax/jsx/annotation/actual.js b/test/fixtures/syntax/jsx/annotation/actual.js deleted file mode 100644 index 2412fb7b42..0000000000 --- a/test/fixtures/syntax/jsx/annotation/actual.js +++ /dev/null @@ -1,3 +0,0 @@ -/** @jsx CUSTOM_DOM */ - - diff --git a/test/fixtures/syntax/jsx/annotation/expected.js b/test/fixtures/syntax/jsx/annotation/expected.js deleted file mode 100644 index cd478b7097..0000000000 --- a/test/fixtures/syntax/jsx/annotation/expected.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -CUSTOM_DOM.a(null); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/empty/actual.js b/test/fixtures/syntax/jsx/empty/actual.js deleted file mode 100644 index c9f99abcd0..0000000000 --- a/test/fixtures/syntax/jsx/empty/actual.js +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/test/fixtures/syntax/jsx/empty/expected.js b/test/fixtures/syntax/jsx/empty/expected.js deleted file mode 100644 index 4835a2a251..0000000000 --- a/test/fixtures/syntax/jsx/empty/expected.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -x(null, null); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/everything/actual.js b/test/fixtures/syntax/jsx/everything/actual.js deleted file mode 100644 index 0c42b3a8af..0000000000 --- a/test/fixtures/syntax/jsx/everything/actual.js +++ /dev/null @@ -1,2 +0,0 @@ - : -}> diff --git a/test/fixtures/syntax/jsx/everything/expected.js b/test/fixtures/syntax/jsx/everything/expected.js deleted file mode 100644 index 7d39e64fbc..0000000000 --- a/test/fixtures/syntax/jsx/everything/expected.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -X({ - "data-prop": (x ? Y({ - prop: 2 - }) : Z(null, "\n")) -}); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/expressions/actual.js b/test/fixtures/syntax/jsx/expressions/actual.js deleted file mode 100644 index 8191b76c06..0000000000 --- a/test/fixtures/syntax/jsx/expressions/actual.js +++ /dev/null @@ -1,5 +0,0 @@ -({a}); - -({a} {b}); - -(); diff --git a/test/fixtures/syntax/jsx/expressions/expected.js b/test/fixtures/syntax/jsx/expressions/expected.js deleted file mode 100644 index d3818d86d3..0000000000 --- a/test/fixtures/syntax/jsx/expressions/expected.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -X(null, a); -X(null, [a, " ", b]); - -X({ - prop: a, - yes: true -}); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/known-tags/actual.js b/test/fixtures/syntax/jsx/known-tags/actual.js deleted file mode 100644 index 41ab602321..0000000000 --- a/test/fixtures/syntax/jsx/known-tags/actual.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/fixtures/syntax/jsx/known-tags/expected.js b/test/fixtures/syntax/jsx/known-tags/expected.js deleted file mode 100644 index ec70567216..0000000000 --- a/test/fixtures/syntax/jsx/known-tags/expected.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -React.DOM.a(null); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/member-expression/actual.js b/test/fixtures/syntax/jsx/member-expression/actual.js deleted file mode 100644 index 67707269e9..0000000000 --- a/test/fixtures/syntax/jsx/member-expression/actual.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/fixtures/syntax/jsx/member-expression/expected.js b/test/fixtures/syntax/jsx/member-expression/expected.js deleted file mode 100644 index 4dea12440d..0000000000 --- a/test/fixtures/syntax/jsx/member-expression/expected.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Test.X(null); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/no-xml-namespaces/actual.js b/test/fixtures/syntax/jsx/no-xml-namespaces/actual.js deleted file mode 100644 index 80e9ac6925..0000000000 --- a/test/fixtures/syntax/jsx/no-xml-namespaces/actual.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/fixtures/syntax/jsx/no-xml-namespaces/options.json b/test/fixtures/syntax/jsx/no-xml-namespaces/options.json deleted file mode 100644 index 84921377cb..0000000000 --- a/test/fixtures/syntax/jsx/no-xml-namespaces/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Namespace tags are not supported. ReactJSX is not XML." -} diff --git a/test/fixtures/syntax/jsx/self-closing-tags/actual.js b/test/fixtures/syntax/jsx/self-closing-tags/actual.js deleted file mode 100644 index c74cd039aa..0000000000 --- a/test/fixtures/syntax/jsx/self-closing-tags/actual.js +++ /dev/null @@ -1,3 +0,0 @@ -(); - -(); diff --git a/test/fixtures/syntax/jsx/self-closing-tags/expected.js b/test/fixtures/syntax/jsx/self-closing-tags/expected.js deleted file mode 100644 index 3ebb174fab..0000000000 --- a/test/fixtures/syntax/jsx/self-closing-tags/expected.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -X(null); - -X({ - prop: "1" -}); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/simple-tags/actual.js b/test/fixtures/syntax/jsx/simple-tags/actual.js deleted file mode 100644 index 87779ff5c6..0000000000 --- a/test/fixtures/syntax/jsx/simple-tags/actual.js +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/fixtures/syntax/jsx/simple-tags/expected.js b/test/fixtures/syntax/jsx/simple-tags/expected.js deleted file mode 100644 index f38433898c..0000000000 --- a/test/fixtures/syntax/jsx/simple-tags/expected.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -X(null); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/tags-with-children/actual.js b/test/fixtures/syntax/jsx/tags-with-children/actual.js deleted file mode 100644 index aa8ed7080b..0000000000 --- a/test/fixtures/syntax/jsx/tags-with-children/actual.js +++ /dev/null @@ -1,3 +0,0 @@ -(); - -(); diff --git a/test/fixtures/syntax/jsx/tags-with-children/expected.js b/test/fixtures/syntax/jsx/tags-with-children/expected.js deleted file mode 100644 index 1183f4a58a..0000000000 --- a/test/fixtures/syntax/jsx/tags-with-children/expected.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -X({ - prop: "2" -}, Y(null)); - -X({ - prop: "2" -}, [Y(null), Z(null)]); \ No newline at end of file diff --git a/test/fixtures/syntax/jsx/tags-with-literals/actual.js b/test/fixtures/syntax/jsx/tags-with-literals/actual.js deleted file mode 100644 index 5507ef2680..0000000000 --- a/test/fixtures/syntax/jsx/tags-with-literals/actual.js +++ /dev/null @@ -1,13 +0,0 @@ -( ); - -( -); - -( - string -); - -( - string - string - ); diff --git a/test/fixtures/syntax/jsx/tags-with-literals/expected.js b/test/fixtures/syntax/jsx/tags-with-literals/expected.js deleted file mode 100644 index 956943003e..0000000000 --- a/test/fixtures/syntax/jsx/tags-with-literals/expected.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -X(null, " "); -X(null, "\n"); -X(null, "\n string\n"); -X(null, "\n string\n string\n "); \ No newline at end of file diff --git a/test/fixtures/syntax/react/display-name-assignment-expression/actual.js b/test/fixtures/syntax/react/display-name-assignment-expression/actual.js deleted file mode 100644 index f3affde052..0000000000 --- a/test/fixtures/syntax/react/display-name-assignment-expression/actual.js +++ /dev/null @@ -1,6 +0,0 @@ -var Component; -Component = React.createClass({ - render: function() { - return null; - } -}); diff --git a/test/fixtures/syntax/react/display-name-assignment-expression/expected.js b/test/fixtures/syntax/react/display-name-assignment-expression/expected.js deleted file mode 100644 index 0096748e3d..0000000000 --- a/test/fixtures/syntax/react/display-name-assignment-expression/expected.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -var Component; - -Component = React.createClass({ - displayName: "Component", - - render: function() { - return null; - } -}); \ No newline at end of file diff --git a/test/fixtures/syntax/react/display-name-if-missing/actual.js b/test/fixtures/syntax/react/display-name-if-missing/actual.js deleted file mode 100644 index 4232881d66..0000000000 --- a/test/fixtures/syntax/react/display-name-if-missing/actual.js +++ /dev/null @@ -1,6 +0,0 @@ -var Whateva = React.createClass({ - displayName: "Whatever", - render: function() { - return null; - } -}); diff --git a/test/fixtures/syntax/react/display-name-if-missing/expected.js b/test/fixtures/syntax/react/display-name-if-missing/expected.js deleted file mode 100644 index e802413800..0000000000 --- a/test/fixtures/syntax/react/display-name-if-missing/expected.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -var Whateva = React.createClass({ - displayName: "Whatever", - - render: function() { - return null; - } -}); \ No newline at end of file diff --git a/test/fixtures/syntax/react/display-name-object-declaration/actual.js b/test/fixtures/syntax/react/display-name-object-declaration/actual.js deleted file mode 100644 index 51a000a533..0000000000 --- a/test/fixtures/syntax/react/display-name-object-declaration/actual.js +++ /dev/null @@ -1,7 +0,0 @@ -exports = { - Component: React.createClass({ - render: function() { - return null; - } - }) -}; diff --git a/test/fixtures/syntax/react/display-name-object-declaration/expected.js b/test/fixtures/syntax/react/display-name-object-declaration/expected.js deleted file mode 100644 index cde3afa785..0000000000 --- a/test/fixtures/syntax/react/display-name-object-declaration/expected.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; - -exports = { - Component: React.createClass({ - displayName: "Component", - - render: function() { - return null; - } - }) -}; \ No newline at end of file diff --git a/test/fixtures/syntax/react/display-name-property-assignment/actual.js b/test/fixtures/syntax/react/display-name-property-assignment/actual.js deleted file mode 100644 index f856d33f07..0000000000 --- a/test/fixtures/syntax/react/display-name-property-assignment/actual.js +++ /dev/null @@ -1,5 +0,0 @@ -exports.Component = React.createClass({ - render: function() { - return null; - } -}); diff --git a/test/fixtures/syntax/react/display-name-property-assignment/expected.js b/test/fixtures/syntax/react/display-name-property-assignment/expected.js deleted file mode 100644 index ca445b30a1..0000000000 --- a/test/fixtures/syntax/react/display-name-property-assignment/expected.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -exports.Component = React.createClass({ - displayName: "Component", - - render: function() { - return null; - } -}); \ No newline at end of file diff --git a/test/fixtures/syntax/react/display-name-variable-declaration/actual.js b/test/fixtures/syntax/react/display-name-variable-declaration/actual.js deleted file mode 100644 index e751186def..0000000000 --- a/test/fixtures/syntax/react/display-name-variable-declaration/actual.js +++ /dev/null @@ -1,5 +0,0 @@ -var Component = React.createClass({ - render: function() { - return null; - } -}); diff --git a/test/fixtures/syntax/react/display-name-variable-declaration/expected.js b/test/fixtures/syntax/react/display-name-variable-declaration/expected.js deleted file mode 100644 index 60d186b8dd..0000000000 --- a/test/fixtures/syntax/react/display-name-variable-declaration/expected.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -var Component = React.createClass({ - displayName: "Component", - - render: function() { - return null; - } -}); \ No newline at end of file