@babel/plugin-transform-exponentiation-operator
Advanced tools
+1
-1
| import { declare } from '@babel/helper-plugin-utils'; | ||
| var index = declare(api => { | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.2"); | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.3"); | ||
| const { | ||
@@ -6,0 +6,0 @@ types: t, |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { types as t, Scope } from \"@babel/core\";\n\nexport default declare(api => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const { types: t, template } = api;\n\n function build(left: t.Expression, right: t.Expression) {\n return t.callExpression(\n t.memberExpression(t.identifier(\"Math\"), t.identifier(\"pow\")),\n [left, right],\n );\n }\n\n function maybeMemoize<T extends t.Expression | t.Super>(\n node: T,\n scope: Scope,\n ) {\n if (scope.isStatic(node)) {\n return { assign: node, ref: t.cloneNode(node) };\n }\n\n if (scope.path.isPattern()) {\n // We cannot inject a temp var in function arguments.\n return null;\n }\n\n const id = scope.generateUidIdentifierBasedOnNode(node);\n scope.push({ id });\n return {\n assign: t.assignmentExpression(\n \"=\",\n t.cloneNode(id),\n // This is not t.Super, because otherwise the .isStatic check above\n // would have returned true.\n node as t.Expression,\n ),\n ref: t.cloneNode(id),\n };\n }\n\n return {\n name: \"transform-exponentiation-operator\",\n\n visitor: {\n AssignmentExpression(path) {\n const { node, scope } = path;\n if (node.operator !== \"**=\") return;\n\n if (t.isMemberExpression(node.left)) {\n let member1: t.Expression;\n let member2: t.Expression;\n\n const object = maybeMemoize(node.left.object, scope);\n if (!object) {\n // We need to inject a temp var, but we are in function parameters\n // and thus cannot. Wrap the expression in an IIFE. It will be\n // eventually requeued and transformed.\n path.replaceWith(template.expression.ast`(() => ${path.node})()`);\n return;\n }\n\n const { property, computed } = node.left;\n\n if (computed) {\n const prop = maybeMemoize(property, scope);\n member1 = t.memberExpression(object.assign, prop.assign, true);\n member2 = t.memberExpression(object.ref, prop.ref, true);\n } else {\n member1 = t.memberExpression(object.assign, property, false);\n member2 = t.memberExpression(\n object.ref,\n t.cloneNode(property),\n false,\n );\n }\n\n path.replaceWith(\n t.assignmentExpression(\"=\", member1, build(member2, node.right)),\n );\n } else {\n path.replaceWith(\n t.assignmentExpression(\n \"=\",\n node.left,\n build(\n // todo: it could be a t.AsExpression\n t.cloneNode(node.left) as t.Identifier,\n node.right,\n ),\n ),\n );\n }\n },\n\n BinaryExpression(path) {\n const { node } = path;\n if (node.operator === \"**\") {\n path.replaceWith(\n build(\n // left can be PrivateName only if operator is `\"in\"`\n node.left as t.Expression,\n node.right,\n ),\n );\n }\n },\n },\n };\n});\n"],"names":["declare","api","assertVersion","types","t","template","build","left","right","callExpression","memberExpression","identifier","maybeMemoize","node","scope","isStatic","assign","ref","cloneNode","path","isPattern","id","generateUidIdentifierBasedOnNode","push","assignmentExpression","name","visitor","AssignmentExpression","operator","isMemberExpression","member1","member2","object","replaceWith","expression","ast","property","computed","prop","BinaryExpression"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { types as t, Scope } from \"@babel/core\";\n\nexport default declare(api => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const { types: t, template } = api;\n\n function build(left: t.Expression, right: t.Expression) {\n return t.callExpression(\n t.memberExpression(t.identifier(\"Math\"), t.identifier(\"pow\")),\n [left, right],\n );\n }\n\n function maybeMemoize<T extends t.Expression | t.Super>(\n node: T,\n scope: Scope,\n ) {\n if (scope.isStatic(node)) {\n return { assign: node, ref: t.cloneNode(node) };\n }\n\n if (scope.path.isPattern()) {\n // We cannot inject a temp var in function arguments.\n return null;\n }\n\n const id = scope.generateUidIdentifierBasedOnNode(node);\n scope.push({ id });\n return {\n assign: t.assignmentExpression(\n \"=\",\n t.cloneNode(id),\n // This is not t.Super, because otherwise the .isStatic check above\n // would have returned true.\n node as t.Expression,\n ),\n ref: t.cloneNode(id),\n };\n }\n\n return {\n name: \"transform-exponentiation-operator\",\n\n visitor: {\n AssignmentExpression(path) {\n const { node, scope } = path;\n if (node.operator !== \"**=\") return;\n\n if (t.isMemberExpression(node.left)) {\n let member1: t.Expression;\n let member2: t.Expression;\n\n const object = maybeMemoize(node.left.object, scope);\n if (!object) {\n // We need to inject a temp var, but we are in function parameters\n // and thus cannot. Wrap the expression in an IIFE. It will be\n // eventually requeued and transformed.\n path.replaceWith(template.expression.ast`(() => ${path.node})()`);\n return;\n }\n\n const { property, computed } = node.left;\n\n if (computed) {\n const prop = maybeMemoize(property, scope)!;\n member1 = t.memberExpression(object.assign, prop.assign, true);\n member2 = t.memberExpression(object.ref, prop.ref, true);\n } else {\n member1 = t.memberExpression(object.assign, property, false);\n member2 = t.memberExpression(\n object.ref,\n t.cloneNode(property),\n false,\n );\n }\n\n path.replaceWith(\n t.assignmentExpression(\"=\", member1, build(member2, node.right)),\n );\n } else {\n path.replaceWith(\n t.assignmentExpression(\n \"=\",\n node.left,\n build(\n // todo: it could be a t.AsExpression\n t.cloneNode(node.left) as t.Identifier,\n node.right,\n ),\n ),\n );\n }\n },\n\n BinaryExpression(path) {\n const { node } = path;\n if (node.operator === \"**\") {\n path.replaceWith(build(node.left, node.right));\n }\n },\n },\n };\n});\n"],"names":["declare","api","assertVersion","types","t","template","build","left","right","callExpression","memberExpression","identifier","maybeMemoize","node","scope","isStatic","assign","ref","cloneNode","path","isPattern","id","generateUidIdentifierBasedOnNode","push","assignmentExpression","name","visitor","AssignmentExpression","operator","isMemberExpression","member1","member2","object","replaceWith","expression","ast","property","computed","prop","BinaryExpression"],"mappings":"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"} |
+5
-5
| { | ||
| "name": "@babel/plugin-transform-exponentiation-operator", | ||
| "version": "8.0.0-rc.2", | ||
| "version": "8.0.0-rc.3", | ||
| "description": "Compile exponentiation operator to ES5", | ||
@@ -20,10 +20,10 @@ "repository": { | ||
| "dependencies": { | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.2" | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.3" | ||
| }, | ||
| "peerDependencies": { | ||
| "@babel/core": "^8.0.0-rc.2" | ||
| "@babel/core": "^8.0.0-rc.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^8.0.0-rc.2", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.2" | ||
| "@babel/core": "^8.0.0-rc.3", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.3" | ||
| }, | ||
@@ -30,0 +30,0 @@ "engines": { |
11662
-2.67%