@babel/plugin-transform-react-display-name
Advanced tools
+1
-1
@@ -6,3 +6,3 @@ import { declare } from '@babel/helper-plugin-utils'; | ||
| const index = declare(api => { | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.6"); | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0"); | ||
| function addDisplayName(id, call) { | ||
@@ -9,0 +9,0 @@ const props = call.arguments[0].properties; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport path from \"node:path\";\nimport { types as t } from \"@babel/core\";\n\ntype ReactCreateClassCall = t.CallExpression & {\n arguments: [t.ObjectExpression];\n};\n\nexport default declare(api => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n function addDisplayName(id: string, call: ReactCreateClassCall) {\n const props = call.arguments[0].properties;\n let safe = true;\n\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (t.isSpreadElement(prop)) {\n continue;\n }\n const key = t.toComputedKey(prop);\n if (t.isStringLiteral(key, { value: \"displayName\" })) {\n safe = false;\n break;\n }\n }\n\n if (safe) {\n props.unshift(\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(id)),\n );\n }\n }\n\n const isCreateClassCallExpression =\n t.buildMatchMemberExpression(\"React.createClass\");\n const isCreateClassAddon = (callee: t.CallExpression[\"callee\"]) =>\n t.isIdentifier(callee, { name: \"createReactClass\" });\n\n function isCreateClass(node?: t.Node): node is ReactCreateClassCall {\n if (!node || !t.isCallExpression(node)) return false;\n\n // not createReactClass nor React.createClass call member object\n if (\n !isCreateClassCallExpression(node.callee) &&\n !isCreateClassAddon(node.callee)\n ) {\n return false;\n }\n\n // no call arguments\n const args = node.arguments;\n if (args.length !== 1) return false;\n\n // first node arg is not an object\n const first = args[0];\n if (!t.isObjectExpression(first)) return false;\n\n return true;\n }\n\n return {\n name: \"transform-react-display-name\",\n\n visitor: {\n ExportDefaultDeclaration({ node }, state) {\n if (isCreateClass(node.declaration)) {\n const filename = state.filename || \"unknown\";\n\n let displayName = path.basename(filename, path.extname(filename));\n\n // ./{module name}/index.js\n if (displayName === \"index\") {\n displayName = path.basename(path.dirname(filename));\n }\n\n addDisplayName(displayName, node.declaration);\n }\n },\n\n CallExpression(path) {\n const { node } = path;\n if (!isCreateClass(node)) return;\n\n let id:\n | t.LVal\n | t.Expression\n | t.PrivateName\n | t.VoidPattern\n | null\n | undefined;\n\n // crawl up the ancestry looking for possible candidates for displayName inference\n path.find(function (path) {\n if (path.isAssignmentExpression()) {\n id = path.node.left;\n } else if (path.isObjectProperty()) {\n id = path.node.key;\n } else if (path.isVariableDeclarator()) {\n id = path.node.id;\n } else if (path.isStatement()) {\n // we've hit a statement, we should stop crawling up\n return true;\n }\n\n // we've got an id! no need to continue\n if (id) return true;\n return false;\n });\n\n // ensure that we have an identifier we can inherit from\n if (!id) return;\n\n // foo.bar -> bar\n if (t.isMemberExpression(id)) {\n id = id.property;\n }\n\n // identifiers are the only thing we can reliably get a name from\n if (t.isIdentifier(id)) {\n addDisplayName(id.name, node);\n }\n },\n },\n };\n});\n"],"names":["declare","api","assertVersion","addDisplayName","id","call","props","arguments","properties","safe","i","length","prop","t","isSpreadElement","key","toComputedKey","isStringLiteral","value","unshift","objectProperty","identifier","stringLiteral","isCreateClassCallExpression","buildMatchMemberExpression","isCreateClassAddon","callee","isIdentifier","name","isCreateClass","node","isCallExpression","args","first","isObjectExpression","visitor","ExportDefaultDeclaration","state","declaration","filename","displayName","path","basename","extname","dirname","CallExpression","find","isAssignmentExpression","left","isObjectProperty","isVariableDeclarator","isStatement","isMemberExpression","property"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport path from \"node:path\";\nimport { types as t } from \"@babel/core\";\n\ntype ReactCreateClassCall = t.CallExpression & {\n arguments: [t.ObjectExpression];\n};\n\nexport default declare(api => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n function addDisplayName(id: string, call: ReactCreateClassCall) {\n const props = call.arguments[0].properties;\n let safe = true;\n\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (t.isSpreadElement(prop)) {\n continue;\n }\n const key = t.toComputedKey(prop);\n if (t.isStringLiteral(key, { value: \"displayName\" })) {\n safe = false;\n break;\n }\n }\n\n if (safe) {\n props.unshift(\n t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(id)),\n );\n }\n }\n\n const isCreateClassCallExpression =\n t.buildMatchMemberExpression(\"React.createClass\");\n const isCreateClassAddon = (callee: t.CallExpression[\"callee\"]) =>\n t.isIdentifier(callee, { name: \"createReactClass\" });\n\n function isCreateClass(node?: t.Node): node is ReactCreateClassCall {\n if (!node || !t.isCallExpression(node)) return false;\n\n // not createReactClass nor React.createClass call member object\n if (\n !isCreateClassCallExpression(node.callee) &&\n !isCreateClassAddon(node.callee)\n ) {\n return false;\n }\n\n // no call arguments\n const args = node.arguments;\n if (args.length !== 1) return false;\n\n // first node arg is not an object\n const first = args[0];\n if (!t.isObjectExpression(first)) return false;\n\n return true;\n }\n\n return {\n name: \"transform-react-display-name\",\n\n visitor: {\n ExportDefaultDeclaration({ node }, state) {\n if (isCreateClass(node.declaration)) {\n const filename = state.filename || \"unknown\";\n\n let displayName = path.basename(filename, path.extname(filename));\n\n // ./{module name}/index.js\n if (displayName === \"index\") {\n displayName = path.basename(path.dirname(filename));\n }\n\n addDisplayName(displayName, node.declaration);\n }\n },\n\n CallExpression(path) {\n const { node } = path;\n if (!isCreateClass(node)) return;\n\n let id:\n | t.LVal\n | t.Expression\n | t.PrivateName\n | t.VoidPattern\n | null\n | undefined;\n\n // crawl up the ancestry looking for possible candidates for displayName inference\n path.find(function (path) {\n if (path.isAssignmentExpression()) {\n id = path.node.left;\n } else if (path.isObjectProperty()) {\n id = path.node.key;\n } else if (path.isVariableDeclarator()) {\n id = path.node.id;\n } else if (path.isStatement()) {\n // we've hit a statement, we should stop crawling up\n return true;\n }\n\n // we've got an id! no need to continue\n if (id) return true;\n return false;\n });\n\n // ensure that we have an identifier we can inherit from\n if (!id) return;\n\n // foo.bar -> bar\n if (t.isMemberExpression(id)) {\n id = id.property;\n }\n\n // identifiers are the only thing we can reliably get a name from\n if (t.isIdentifier(id)) {\n addDisplayName(id.name, node);\n }\n },\n },\n };\n});\n"],"names":["t"],"mappings":"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"} |
+5
-5
| { | ||
| "name": "@babel/plugin-transform-react-display-name", | ||
| "version": "8.0.0-rc.6", | ||
| "version": "8.0.0", | ||
| "description": "Add displayName to React.createClass calls", | ||
@@ -20,10 +20,10 @@ "repository": { | ||
| "dependencies": { | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.6" | ||
| "@babel/helper-plugin-utils": "^8.0.0" | ||
| }, | ||
| "peerDependencies": { | ||
| "@babel/core": "^8.0.0-rc.6" | ||
| "@babel/core": "^8.0.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^8.0.0-rc.6", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.6" | ||
| "@babel/core": "^8.0.0", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0" | ||
| }, | ||
@@ -30,0 +30,0 @@ "engines": { |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
1
-50%12064
-7.09%