🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@babel/plugin-transform-computed-properties

Package Overview
Dependencies
Maintainers
4
Versions
99
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/plugin-transform-computed-properties - npm Package Compare versions

Comparing version
8.0.0-rc.6
to
8.0.0
+1
-1
lib/index.js

@@ -5,3 +5,3 @@ import { types } from '@babel/core';

const index = declare((api, options) => {
api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.6");
api.assertVersion("^7.0.0-0 || ^8.0.0");
if ("loose" in options) {

@@ -8,0 +8,0 @@ console.warn("@babel/plugin-transform-computed-properties: The 'loose' option has been deprecated, " + "use the 'setComputedProperties' assumption instead (https://babeljs.io/assumptions).");

@@ -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 /** @deprecated Use the `setComputedProperties` assumption instead. */\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.0.0-0 || ^8.0.0\"));\n\n if (\"loose\" in options) {\n console.warn(\n \"@babel/plugin-transform-computed-properties: The 'loose' option has been deprecated, \" +\n \"use the 'setComputedProperties' assumption instead (https://babeljs.io/assumptions).\",\n );\n }\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","console","warn","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 /** @deprecated Use the `setComputedProperties` assumption instead. */\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.0.0-0 || ^8.0.0\"));\n\n if (\"loose\" in options) {\n console.warn(\n \"@babel/plugin-transform-computed-properties: The 'loose' option has been deprecated, \" +\n \"use the 'setComputedProperties' assumption instead (https://babeljs.io/assumptions).\",\n );\n }\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":["t"],"mappings":"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"}
{
"name": "@babel/plugin-transform-computed-properties",
"version": "8.0.0-rc.6",
"version": "8.0.0",
"description": "Compile ES2015 computed properties to ES5",

@@ -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": {