@babel/plugin-transform-computed-properties
Advanced tools
+1
-2
@@ -5,3 +5,3 @@ import { types } from '@babel/core'; | ||
| var index = declare((api, options) => { | ||
| 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 setComputedProperties = api.assumption("setComputedProperties") ?? options.loose; | ||
@@ -113,3 +113,2 @@ const pushComputedProps = setComputedProperties ? pushComputedPropsLoose : pushComputedPropsSpec; | ||
| const single = pushComputedProps({ | ||
| scope, | ||
| objId, | ||
@@ -116,0 +115,0 @@ body, |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginPass, Scope } from \"@babel/core\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n loose?: boolean;\n}\n\ntype PropertyInfo = {\n scope: Scope;\n objId: t.Identifier;\n body: t.Statement[];\n computedProps: t.ObjectMember[];\n initPropExpression: t.ObjectExpression;\n state: PluginPass;\n};\n\nexport default declare((api, options: Options) => {\n api.assertVersion(REQUIRED_VERSION(7));\n\n const setComputedProperties =\n api.assumption(\"setComputedProperties\") ?? options.loose;\n\n const pushComputedProps = setComputedProperties\n ? pushComputedPropsLoose\n : pushComputedPropsSpec;\n\n function buildDefineAccessor(\n state: PluginPass,\n obj: t.Expression,\n prop: t.ObjectMethod,\n ) {\n const type = prop.kind as \"get\" | \"set\";\n const key =\n !prop.computed && t.isIdentifier(prop.key)\n ? t.stringLiteral(prop.key.name)\n : prop.key;\n const fn = getValue(prop);\n\n return t.callExpression(state.addHelper(\"defineAccessor\"), [\n t.stringLiteral(type),\n obj,\n key,\n fn,\n ]);\n }\n\n /**\n * Get value of an object member under object expression.\n * Returns a function expression if prop is a ObjectMethod.\n *\n * @param {t.ObjectMember} prop\n * @returns t.Expression\n */\n function getValue(prop: t.ObjectMember) {\n if (t.isObjectProperty(prop)) {\n return prop.value as t.Expression;\n } else if (t.isObjectMethod(prop)) {\n return t.functionExpression(\n null,\n prop.params,\n prop.body,\n prop.generator,\n prop.async,\n );\n }\n }\n\n function pushAssign(\n objId: t.Identifier,\n prop: t.ObjectMember,\n body: t.Statement[],\n ) {\n body.push(\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(\n t.cloneNode(objId),\n prop.key,\n prop.computed || t.isLiteral(prop.key),\n ),\n getValue(prop),\n ),\n ),\n );\n }\n\n function pushComputedPropsLoose(info: PropertyInfo) {\n const { computedProps, state, initPropExpression, objId, body } = info;\n\n for (const prop of computedProps) {\n if (\n t.isObjectMethod(prop) &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n if (computedProps.length === 1) {\n return buildDefineAccessor(state, initPropExpression, prop);\n } else {\n body.push(\n t.expressionStatement(\n buildDefineAccessor(state, t.cloneNode(objId), prop),\n ),\n );\n }\n } else {\n pushAssign(t.cloneNode(objId), prop, body);\n }\n }\n }\n\n function pushComputedPropsSpec(info: PropertyInfo) {\n const { objId, body, computedProps, state } = info;\n\n // To prevent too deep AST structures in case of large objects\n const CHUNK_LENGTH_CAP = 10;\n\n let currentChunk: t.ObjectMember[] = null;\n const computedPropsChunks: t.ObjectMember[][] = [];\n for (const prop of computedProps) {\n if (!currentChunk || currentChunk.length === CHUNK_LENGTH_CAP) {\n currentChunk = [];\n computedPropsChunks.push(currentChunk);\n }\n currentChunk.push(prop);\n }\n\n for (const chunk of computedPropsChunks) {\n const single = computedPropsChunks.length === 1;\n let node: t.Expression = single\n ? info.initPropExpression\n : t.cloneNode(objId);\n for (const prop of chunk) {\n if (\n t.isObjectMethod(prop) &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n node = buildDefineAccessor(info.state, node, prop);\n } else {\n node = t.callExpression(state.addHelper(\"defineProperty\"), [\n node,\n // PrivateName must not be in ObjectExpression\n t.toComputedKey(prop) as t.Expression,\n // the value of ObjectProperty in ObjectExpression must be an expression\n getValue(prop),\n ]);\n }\n }\n if (single) return node;\n body.push(t.expressionStatement(node));\n }\n }\n\n return {\n name: \"transform-computed-properties\",\n\n visitor: {\n ObjectExpression: {\n exit(path, state) {\n const { node, parent, scope } = path;\n let hasComputed = false;\n for (const prop of node.properties) {\n // @ts-expect-error SpreadElement must not have computed property\n hasComputed = prop.computed === true;\n if (hasComputed) break;\n }\n if (!hasComputed) return;\n\n // put all getters/setters into the first object expression as well as all initialisers up\n // to the first computed property\n\n const initProps: t.ObjectMember[] = [];\n const computedProps: t.ObjectMember[] = [];\n let foundComputed = false;\n\n for (const prop of node.properties) {\n if (t.isSpreadElement(prop)) {\n continue;\n }\n if (prop.computed) {\n foundComputed = true;\n }\n\n if (foundComputed) {\n computedProps.push(prop);\n } else {\n initProps.push(prop);\n }\n }\n\n const objId = scope.generateUidIdentifierBasedOnNode(parent);\n const initPropExpression = t.objectExpression(initProps);\n const body = [];\n\n body.push(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(objId, initPropExpression),\n ]),\n );\n\n const single = pushComputedProps({\n scope,\n objId,\n body,\n computedProps,\n initPropExpression,\n state,\n });\n\n if (single) {\n path.replaceWith(single);\n } else {\n if (setComputedProperties) {\n body.push(t.expressionStatement(t.cloneNode(objId)));\n }\n path.replaceWithMultiple(body);\n }\n },\n },\n },\n };\n});\n"],"names":["declare","api","options","assertVersion","setComputedProperties","assumption","loose","pushComputedProps","pushComputedPropsLoose","pushComputedPropsSpec","buildDefineAccessor","state","obj","prop","type","kind","key","computed","t","isIdentifier","stringLiteral","name","fn","getValue","callExpression","addHelper","isObjectProperty","value","isObjectMethod","functionExpression","params","body","generator","async","pushAssign","objId","push","expressionStatement","assignmentExpression","memberExpression","cloneNode","isLiteral","info","computedProps","initPropExpression","length","CHUNK_LENGTH_CAP","currentChunk","computedPropsChunks","chunk","single","node","toComputedKey","visitor","ObjectExpression","exit","path","parent","scope","hasComputed","properties","initProps","foundComputed","isSpreadElement","generateUidIdentifierBasedOnNode","objectExpression","variableDeclaration","variableDeclarator","replaceWith","replaceWithMultiple"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginPass, Scope } from \"@babel/core\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n loose?: boolean;\n}\n\ntype PropertyInfo = {\n scope: Scope;\n objId: t.Identifier;\n body: t.Statement[];\n computedProps: t.ObjectMember[];\n initPropExpression: t.ObjectExpression;\n state: PluginPass;\n};\n\nexport default declare((api, options: Options) => {\n api.assertVersion(REQUIRED_VERSION(7));\n\n const setComputedProperties =\n api.assumption(\"setComputedProperties\") ?? options.loose;\n\n const pushComputedProps = setComputedProperties\n ? pushComputedPropsLoose\n : pushComputedPropsSpec;\n\n function buildDefineAccessor(\n state: PluginPass,\n obj: t.Expression,\n prop: t.ObjectMethod,\n ) {\n const type = prop.kind as \"get\" | \"set\";\n const key =\n !prop.computed && t.isIdentifier(prop.key)\n ? t.stringLiteral(prop.key.name)\n : prop.key;\n const fn = getValue(prop)!;\n\n return t.callExpression(state.addHelper(\"defineAccessor\"), [\n t.stringLiteral(type),\n obj,\n key,\n fn,\n ]);\n }\n\n /**\n * Get value of an object member under object expression.\n * Returns a function expression if prop is a ObjectMethod.\n *\n * @param {t.ObjectMember} prop\n * @returns t.Expression\n */\n function getValue(prop: t.ObjectMember) {\n if (t.isObjectProperty(prop)) {\n return prop.value as t.Expression;\n } else if (t.isObjectMethod(prop)) {\n return t.functionExpression(\n null,\n prop.params,\n prop.body,\n prop.generator,\n prop.async,\n );\n }\n }\n\n function pushAssign(\n objId: t.Identifier,\n prop: t.ObjectMember,\n body: t.Statement[],\n ) {\n body.push(\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(\n t.cloneNode(objId),\n prop.key,\n prop.computed || t.isLiteral(prop.key),\n ),\n getValue(prop)!,\n ),\n ),\n );\n }\n\n function pushComputedPropsLoose(info: PropertyInfo) {\n const { computedProps, state, initPropExpression, objId, body } = info;\n\n for (const prop of computedProps) {\n if (\n t.isObjectMethod(prop) &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n if (computedProps.length === 1) {\n return buildDefineAccessor(state, initPropExpression, prop);\n } else {\n body.push(\n t.expressionStatement(\n buildDefineAccessor(state, t.cloneNode(objId), prop),\n ),\n );\n }\n } else {\n pushAssign(t.cloneNode(objId), prop, body);\n }\n }\n }\n\n function pushComputedPropsSpec(info: PropertyInfo) {\n const { objId, body, computedProps, state } = info;\n\n // To prevent too deep AST structures in case of large objects\n const CHUNK_LENGTH_CAP = 10;\n\n let currentChunk: t.ObjectMember[] | null = null;\n const computedPropsChunks: t.ObjectMember[][] = [];\n for (const prop of computedProps) {\n if (!currentChunk || currentChunk.length === CHUNK_LENGTH_CAP) {\n currentChunk = [];\n computedPropsChunks.push(currentChunk);\n }\n currentChunk.push(prop);\n }\n\n for (const chunk of computedPropsChunks) {\n const single = computedPropsChunks.length === 1;\n let node: t.Expression = single\n ? info.initPropExpression\n : t.cloneNode(objId);\n for (const prop of chunk) {\n if (\n t.isObjectMethod(prop) &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n node = buildDefineAccessor(info.state, node, prop);\n } else {\n node = t.callExpression(state.addHelper(\"defineProperty\"), [\n node,\n // PrivateName must not be in ObjectExpression\n t.toComputedKey(prop) as t.Expression,\n // the value of ObjectProperty in ObjectExpression must be an expression\n getValue(prop)!,\n ]);\n }\n }\n if (single) return node;\n body.push(t.expressionStatement(node));\n }\n }\n\n return {\n name: \"transform-computed-properties\",\n\n visitor: {\n ObjectExpression: {\n exit(path, state) {\n const { node, parent, scope } = path;\n let hasComputed = false;\n for (const prop of node.properties) {\n // @ts-expect-error SpreadElement must not have computed property\n hasComputed = prop.computed === true;\n if (hasComputed) break;\n }\n if (!hasComputed) return;\n\n // put all getters/setters into the first object expression as well as all initialisers up\n // to the first computed property\n\n const initProps: t.ObjectMember[] = [];\n const computedProps: t.ObjectMember[] = [];\n let foundComputed = false;\n\n for (const prop of node.properties) {\n if (t.isSpreadElement(prop)) {\n continue;\n }\n if (prop.computed) {\n foundComputed = true;\n }\n\n if (foundComputed) {\n computedProps.push(prop);\n } else {\n initProps.push(prop);\n }\n }\n\n const objId = scope.generateUidIdentifierBasedOnNode(parent);\n const initPropExpression = t.objectExpression(initProps);\n const body = [];\n\n body.push(\n t.variableDeclaration(\"var\", [\n t.variableDeclarator(objId, initPropExpression),\n ]),\n );\n\n const single = pushComputedProps({\n scope,\n objId,\n body,\n computedProps,\n initPropExpression,\n state,\n });\n\n if (single) {\n path.replaceWith(single);\n } else {\n if (setComputedProperties) {\n body.push(t.expressionStatement(t.cloneNode(objId)));\n }\n path.replaceWithMultiple(body);\n }\n },\n },\n },\n };\n});\n"],"names":["declare","api","options","assertVersion","setComputedProperties","assumption","loose","pushComputedProps","pushComputedPropsLoose","pushComputedPropsSpec","buildDefineAccessor","state","obj","prop","type","kind","key","computed","t","isIdentifier","stringLiteral","name","fn","getValue","callExpression","addHelper","isObjectProperty","value","isObjectMethod","functionExpression","params","body","generator","async","pushAssign","objId","push","expressionStatement","assignmentExpression","memberExpression","cloneNode","isLiteral","info","computedProps","initPropExpression","length","CHUNK_LENGTH_CAP","currentChunk","computedPropsChunks","chunk","single","node","toComputedKey","visitor","ObjectExpression","exit","path","parent","scope","hasComputed","properties","initProps","foundComputed","isSpreadElement","generateUidIdentifierBasedOnNode","objectExpression","variableDeclaration","variableDeclarator","replaceWith","replaceWithMultiple"],"mappings":"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"} |
+5
-5
| { | ||
| "name": "@babel/plugin-transform-computed-properties", | ||
| "version": "8.0.0-rc.2", | ||
| "version": "8.0.0-rc.3", | ||
| "description": "Compile ES2015 computed properties 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": { |
19952
-1.31%138
-0.72%