@babel/plugin-transform-for-of
Advanced tools
+77
-53
@@ -1,18 +0,54 @@ | ||
| "use strict"; | ||
| import { declare } from '@babel/helper-plugin-utils'; | ||
| import { template, types } from '@babel/core'; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.default = void 0; | ||
| var _helperPluginUtils = require("@babel/helper-plugin-utils"); | ||
| var _core = require("@babel/core"); | ||
| var _noHelperImplementation = require("./no-helper-implementation"); | ||
| template.statement(` | ||
| for (var LOOP_OBJECT = OBJECT, | ||
| IS_ARRAY = Array.isArray(LOOP_OBJECT), | ||
| INDEX = 0, | ||
| LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) { | ||
| INTERMEDIATE; | ||
| if (IS_ARRAY) { | ||
| if (INDEX >= LOOP_OBJECT.length) break; | ||
| ID = LOOP_OBJECT[INDEX++]; | ||
| } else { | ||
| INDEX = LOOP_OBJECT.next(); | ||
| if (INDEX.done) break; | ||
| ID = INDEX.value; | ||
| } | ||
| } | ||
| `); | ||
| template.statements(` | ||
| var ITERATOR_COMPLETION = true; | ||
| var ITERATOR_HAD_ERROR_KEY = false; | ||
| var ITERATOR_ERROR_KEY = undefined; | ||
| try { | ||
| for ( | ||
| var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; | ||
| !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); | ||
| ITERATOR_COMPLETION = true | ||
| ) {} | ||
| } catch (err) { | ||
| ITERATOR_HAD_ERROR_KEY = true; | ||
| ITERATOR_ERROR_KEY = err; | ||
| } finally { | ||
| try { | ||
| if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) { | ||
| ITERATOR_KEY.return(); | ||
| } | ||
| } finally { | ||
| if (ITERATOR_HAD_ERROR_KEY) { | ||
| throw ITERATOR_ERROR_KEY; | ||
| } | ||
| } | ||
| } | ||
| `); | ||
| function buildLoopBody(path, declar, newBody) { | ||
| let block; | ||
| const bodyPath = path.get("body"); | ||
| const body = newBody != null ? newBody : bodyPath.node; | ||
| if (_core.types.isBlockStatement(body) && Object.keys(path.getBindingIdentifiers()).some(id => bodyPath.scope.hasOwnBinding(id))) { | ||
| block = _core.types.blockStatement([declar, body]); | ||
| const body = newBody ?? bodyPath.node; | ||
| if (types.isBlockStatement(body) && Object.keys(path.getBindingIdentifiers()).some(id => bodyPath.scope.hasOwnBinding(id))) { | ||
| block = types.blockStatement([declar, body]); | ||
| } else { | ||
| block = _core.types.toBlock(body); | ||
| block = types.toBlock(body); | ||
| block.body.unshift(declar); | ||
@@ -22,4 +58,3 @@ } | ||
| } | ||
| var _default = (0, _helperPluginUtils.declare)((api, options) => { | ||
| var _options$assumeArray, _options$allowArrayLi, _api$assumption; | ||
| var index = declare((api, options) => { | ||
| api.assertVersion(7); | ||
@@ -38,11 +73,6 @@ { | ||
| } | ||
| { | ||
| if (allowArrayLike && /^7\.\d\./.test(api.version)) { | ||
| throw new Error(`The allowArrayLike is only supported when using @babel/core@^7.10.0`); | ||
| } | ||
| } | ||
| } | ||
| const iterableIsArray = (_options$assumeArray = options.assumeArray) != null ? _options$assumeArray : !options.loose && api.assumption("iterableIsArray"); | ||
| const arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable"); | ||
| const skipIteratorClosing = (_api$assumption = api.assumption("skipForOfIteratorClosing")) != null ? _api$assumption : options.loose; | ||
| const iterableIsArray = options.assumeArray ?? (!options.loose && api.assumption("iterableIsArray")); | ||
| const arrayLikeIsIterable = options.allowArrayLike ?? api.assumption("arrayLikeIsIterable"); | ||
| const skipIteratorClosing = api.assumption("skipForOfIteratorClosing") ?? options.loose; | ||
| if (iterableIsArray && arrayLikeIsIterable) { | ||
@@ -69,17 +99,17 @@ throw new Error(`The "iterableIsArray" and "arrayLikeIsIterable" assumptions are not compatible.`); | ||
| let array = scope.maybeGenerateMemoised(right, true); | ||
| const inits = [_core.types.variableDeclarator(i, _core.types.numericLiteral(0))]; | ||
| const inits = [types.variableDeclarator(i, types.numericLiteral(0))]; | ||
| if (array) { | ||
| inits.push(_core.types.variableDeclarator(array, right)); | ||
| inits.push(types.variableDeclarator(array, right)); | ||
| } else { | ||
| array = right; | ||
| } | ||
| const item = _core.types.memberExpression(_core.types.cloneNode(array), _core.types.cloneNode(i), true); | ||
| const item = types.memberExpression(types.cloneNode(array), types.cloneNode(i), true); | ||
| let assignment; | ||
| if (_core.types.isVariableDeclaration(left)) { | ||
| if (types.isVariableDeclaration(left)) { | ||
| assignment = left; | ||
| assignment.declarations[0].init = item; | ||
| } else { | ||
| assignment = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, item)); | ||
| assignment = types.expressionStatement(types.assignmentExpression("=", left, item)); | ||
| } | ||
| path.replaceWith(_core.types.forStatement(_core.types.variableDeclaration("let", inits), _core.types.binaryExpression("<", _core.types.cloneNode(i), _core.types.memberExpression(_core.types.cloneNode(array), _core.types.identifier("length"))), _core.types.updateExpression("++", _core.types.cloneNode(i)), buildLoopBody(path, assignment))); | ||
| path.replaceWith(types.forStatement(types.variableDeclaration("let", inits), types.binaryExpression("<", types.cloneNode(i), types.memberExpression(types.cloneNode(array), types.identifier("length"))), types.updateExpression("++", types.cloneNode(i)), buildLoopBody(path, assignment))); | ||
| } | ||
@@ -89,10 +119,10 @@ } | ||
| } | ||
| const buildForOfArray = (0, _core.template)` | ||
| const buildForOfArray = template` | ||
| for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY; | ||
| `; | ||
| const buildForOfNoIteratorClosing = _core.template.statements` | ||
| const buildForOfNoIteratorClosing = template.statements` | ||
| for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY; | ||
| !(STEP_KEY = ITERATOR_HELPER()).done;) BODY; | ||
| `; | ||
| const buildForOf = _core.template.statements` | ||
| const buildForOf = template.statements` | ||
| var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY; | ||
@@ -129,11 +159,11 @@ try { | ||
| }); | ||
| _core.types.inherits(loop, node); | ||
| const iterationValue = _core.types.memberExpression(_core.types.cloneNode(right), _core.types.cloneNode(iterationKey), true); | ||
| types.inherits(loop, node); | ||
| const iterationValue = types.memberExpression(types.cloneNode(right), types.cloneNode(iterationKey), true); | ||
| let declar; | ||
| const left = node.left; | ||
| if (_core.types.isVariableDeclaration(left)) { | ||
| if (types.isVariableDeclaration(left)) { | ||
| left.declarations[0].init = iterationValue; | ||
| declar = left; | ||
| } else { | ||
| declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, iterationValue)); | ||
| declar = types.expressionStatement(types.assignmentExpression("=", left, iterationValue)); | ||
| } | ||
@@ -148,12 +178,6 @@ loop.body = buildLoopBody(path, declar, loop.body); | ||
| const right = path.get("right"); | ||
| if (right.isArrayExpression() || right.isGenericType("Array") || _core.types.isArrayTypeAnnotation(right.getTypeAnnotation())) { | ||
| if (right.isArrayExpression() || right.isGenericType("Array")) { | ||
| path.replaceWith(_ForOfStatementArray(path)); | ||
| return; | ||
| } | ||
| { | ||
| if (!state.availableHelper(builder.helper)) { | ||
| (0, _noHelperImplementation.default)(skipIteratorClosing, path, state); | ||
| return; | ||
| } | ||
| } | ||
| const { | ||
@@ -167,7 +191,7 @@ node, | ||
| const stepKey = scope.generateUid("step"); | ||
| const stepValue = _core.types.memberExpression(_core.types.identifier(stepKey), _core.types.identifier("value")); | ||
| if (_core.types.isVariableDeclaration(left)) { | ||
| declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, stepValue)]); | ||
| const stepValue = types.memberExpression(types.identifier(stepKey), types.identifier("value")); | ||
| if (types.isVariableDeclaration(left)) { | ||
| declar = types.variableDeclaration(left.kind, [types.variableDeclarator(left.declarations[0].id, stepValue)]); | ||
| } else { | ||
| declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, stepValue)); | ||
| declar = types.expressionStatement(types.assignmentExpression("=", left, stepValue)); | ||
| } | ||
@@ -177,4 +201,4 @@ const nodes = builder.build({ | ||
| ITERATOR_HELPER: scope.generateUidIdentifier("iterator"), | ||
| ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable ? _core.types.booleanLiteral(true) : null, | ||
| STEP_KEY: _core.types.identifier(stepKey), | ||
| ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable ? types.booleanLiteral(true) : null, | ||
| STEP_KEY: types.identifier(stepKey), | ||
| OBJECT: node.right, | ||
@@ -184,6 +208,6 @@ BODY: buildLoopBody(path, declar) | ||
| const container = builder.getContainer(nodes); | ||
| _core.types.inherits(container[0], node); | ||
| _core.types.inherits(container[0].body, node.body); | ||
| if (_core.types.isLabeledStatement(parent)) { | ||
| container[0] = _core.types.labeledStatement(parent.label, container[0]); | ||
| types.inherits(container[0], node); | ||
| types.inherits(container[0].body, node.body); | ||
| if (types.isLabeledStatement(parent)) { | ||
| container[0] = types.labeledStatement(parent.label, container[0]); | ||
| path.parentPath.replaceWithMultiple(nodes); | ||
@@ -198,4 +222,4 @@ path.skip(); | ||
| }); | ||
| exports.default = _default; | ||
| export { index as default }; | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"names":["_helperPluginUtils","require","_core","_noHelperImplementation","buildLoopBody","path","declar","newBody","block","bodyPath","get","body","node","t","isBlockStatement","Object","keys","getBindingIdentifiers","some","id","scope","hasOwnBinding","blockStatement","toBlock","unshift","_default","declare","api","options","_options$assumeArray","_options$allowArrayLi","_api$assumption","assertVersion","assumeArray","allowArrayLike","loose","Error","test","version","iterableIsArray","assumption","arrayLikeIsIterable","skipIteratorClosing","name","visitor","ForOfStatement","left","right","await","isAwait","i","generateUidIdentifier","array","maybeGenerateMemoised","inits","variableDeclarator","numericLiteral","push","item","memberExpression","cloneNode","assignment","isVariableDeclaration","declarations","init","expressionStatement","assignmentExpression","replaceWith","forStatement","variableDeclaration","binaryExpression","identifier","updateExpression","buildForOfArray","template","buildForOfNoIteratorClosing","statements","buildForOf","builder","build","helper","getContainer","nodes","_ForOfStatementArray","generateUidIdentifierBasedOnNode","iterationKey","loop","BODY","KEY","NAME","ARR","inherits","iterationValue","state","isArrayExpression","isGenericType","isArrayTypeAnnotation","getTypeAnnotation","availableHelper","transformWithoutHelper","parent","stepKey","generateUid","stepValue","kind","CREATE_ITERATOR_HELPER","addHelper","ITERATOR_HELPER","ARRAY_LIKE_IS_ITERABLE","booleanLiteral","STEP_KEY","OBJECT","container","isLabeledStatement","labeledStatement","label","parentPath","replaceWithMultiple","skip","exports","default"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\n\nimport transformWithoutHelper from \"./no-helper-implementation\";\n\nexport interface Options {\n allowArrayLike?: boolean;\n assumeArray?: boolean;\n loose?: boolean;\n}\n\nfunction buildLoopBody(\n path: NodePath<t.ForXStatement>,\n declar: t.Statement,\n newBody?: t.Statement | t.Expression,\n) {\n let block;\n const bodyPath = path.get(\"body\");\n const body = newBody ?? bodyPath.node;\n if (\n t.isBlockStatement(body) &&\n Object.keys(path.getBindingIdentifiers()).some(id =>\n bodyPath.scope.hasOwnBinding(id),\n )\n ) {\n block = t.blockStatement([declar, body]);\n } else {\n block = t.toBlock(body);\n block.body.unshift(declar);\n }\n return block;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n {\n const { assumeArray, allowArrayLike, loose } = options;\n\n if (loose === true && assumeArray === true) {\n throw new Error(\n `The loose and assumeArray options cannot be used together in @babel/plugin-transform-for-of`,\n );\n }\n\n if (assumeArray === true && allowArrayLike === true) {\n throw new Error(\n `The assumeArray and allowArrayLike options cannot be used together in @babel/plugin-transform-for-of`,\n );\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n // TODO: Remove in Babel 8\n if (allowArrayLike && /^7\\.\\d\\./.test(api.version)) {\n throw new Error(\n `The allowArrayLike is only supported when using @babel/core@^7.10.0`,\n );\n }\n }\n }\n\n const iterableIsArray =\n options.assumeArray ??\n // Loose mode is not compatible with 'assumeArray', so we shouldn't read\n // 'iterableIsArray' if 'loose' is true.\n (!options.loose && api.assumption(\"iterableIsArray\"));\n\n const arrayLikeIsIterable =\n options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\");\n\n const skipIteratorClosing =\n api.assumption(\"skipForOfIteratorClosing\") ?? options.loose;\n\n if (iterableIsArray && arrayLikeIsIterable) {\n throw new Error(\n `The \"iterableIsArray\" and \"arrayLikeIsIterable\" assumptions are not compatible.`,\n );\n }\n\n if (iterableIsArray) {\n return {\n name: \"transform-for-of\",\n\n visitor: {\n ForOfStatement(path) {\n const { scope } = path;\n const { left, right, await: isAwait } = path.node;\n if (isAwait) {\n return;\n }\n const i = scope.generateUidIdentifier(\"i\");\n let array: t.Identifier | t.ThisExpression =\n scope.maybeGenerateMemoised(right, true);\n\n const inits = [t.variableDeclarator(i, t.numericLiteral(0))];\n if (array) {\n inits.push(t.variableDeclarator(array, right));\n } else {\n array = right as t.Identifier | t.ThisExpression;\n }\n\n const item = t.memberExpression(\n t.cloneNode(array),\n t.cloneNode(i),\n true,\n );\n let assignment;\n if (t.isVariableDeclaration(left)) {\n assignment = left;\n assignment.declarations[0].init = item;\n } else {\n assignment = t.expressionStatement(\n t.assignmentExpression(\"=\", left, item),\n );\n }\n\n path.replaceWith(\n t.forStatement(\n t.variableDeclaration(\"let\", inits),\n t.binaryExpression(\n \"<\",\n t.cloneNode(i),\n t.memberExpression(t.cloneNode(array), t.identifier(\"length\")),\n ),\n t.updateExpression(\"++\", t.cloneNode(i)),\n buildLoopBody(path, assignment),\n ),\n );\n },\n },\n };\n }\n\n const buildForOfArray = template`\n for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;\n `;\n\n const buildForOfNoIteratorClosing = template.statements`\n for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n !(STEP_KEY = ITERATOR_HELPER()).done;) BODY;\n `;\n\n const buildForOf = template.statements`\n var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n try {\n for (ITERATOR_HELPER.s(); !(STEP_KEY = ITERATOR_HELPER.n()).done;) BODY;\n } catch (err) {\n ITERATOR_HELPER.e(err);\n } finally {\n ITERATOR_HELPER.f();\n }\n `;\n\n const builder = skipIteratorClosing\n ? {\n build: buildForOfNoIteratorClosing,\n helper: \"createForOfIteratorHelperLoose\",\n getContainer: (nodes: t.Statement[]): [t.ForStatement] =>\n nodes as [t.ForStatement],\n }\n : {\n build: buildForOf,\n helper: \"createForOfIteratorHelper\",\n getContainer: (nodes: t.Statement[]): [t.ForStatement] =>\n (nodes[1] as t.TryStatement).block.body as [t.ForStatement],\n };\n\n function _ForOfStatementArray(path: NodePath<t.ForOfStatement>) {\n const { node, scope } = path;\n\n const right = scope.generateUidIdentifierBasedOnNode(node.right, \"arr\");\n const iterationKey = scope.generateUidIdentifier(\"i\");\n\n const loop = buildForOfArray({\n BODY: node.body,\n KEY: iterationKey,\n NAME: right,\n ARR: node.right,\n }) as t.For;\n\n t.inherits(loop, node);\n\n const iterationValue = t.memberExpression(\n t.cloneNode(right),\n t.cloneNode(iterationKey),\n true,\n );\n\n let declar;\n const left = node.left;\n if (t.isVariableDeclaration(left)) {\n left.declarations[0].init = iterationValue;\n declar = left;\n } else {\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, iterationValue),\n );\n }\n\n loop.body = buildLoopBody(path, declar, loop.body);\n\n return loop;\n }\n\n return {\n name: \"transform-for-of\",\n visitor: {\n ForOfStatement(path, state) {\n const right = path.get(\"right\");\n if (\n right.isArrayExpression() ||\n (process.env.BABEL_8_BREAKING\n ? right.isGenericType(\"Array\")\n : right.isGenericType(\"Array\") ||\n t.isArrayTypeAnnotation(right.getTypeAnnotation()))\n ) {\n path.replaceWith(_ForOfStatementArray(path));\n return;\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(builder.helper)) {\n // Babel <7.9.0 doesn't support this helper\n transformWithoutHelper(skipIteratorClosing, path, state);\n return;\n }\n }\n\n const { node, parent, scope } = path;\n const left = node.left;\n let declar;\n\n const stepKey = scope.generateUid(\"step\");\n const stepValue = t.memberExpression(\n t.identifier(stepKey),\n t.identifier(\"value\"),\n );\n\n if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, stepValue),\n ]);\n } else {\n // for (i of test), for ({ i } of test)\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, stepValue),\n );\n }\n\n const nodes = builder.build({\n CREATE_ITERATOR_HELPER: state.addHelper(builder.helper),\n ITERATOR_HELPER: scope.generateUidIdentifier(\"iterator\"),\n ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable\n ? t.booleanLiteral(true)\n : null,\n STEP_KEY: t.identifier(stepKey),\n OBJECT: node.right,\n BODY: buildLoopBody(path, declar),\n });\n const container = builder.getContainer(nodes);\n\n t.inherits(container[0], node);\n t.inherits(container[0].body, node.body);\n\n if (t.isLabeledStatement(parent)) {\n // @ts-expect-error replacing node types\n container[0] = t.labeledStatement(parent.label, container[0]);\n\n path.parentPath.replaceWithMultiple(nodes);\n\n // The parent has been replaced, prevent Babel from traversing a detached path\n path.skip();\n } else {\n path.replaceWithMultiple(nodes);\n }\n },\n },\n };\n});\n"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/no-helper-implementation.ts","../src/index.ts"],"sourcesContent":["import { type PluginPass, template, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\n\n// This is the legacy implementation, which inlines all the code.\n// It must be kept for compatibility reasons.\n// TODO(Babel 8): Remove this file.\n\nexport default function transformWithoutHelper(\n loose: boolean | void,\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const pushComputedProps = loose\n ? pushComputedPropsLoose\n : pushComputedPropsSpec;\n\n const { node } = path;\n const build = pushComputedProps(path, state);\n const declar = build.declar;\n const loop = build.loop;\n const block = loop.body as t.BlockStatement;\n\n // ensure that it's a block so we can take all its statements\n path.ensureBlock();\n\n // add the value declaration to the new loop body\n if (declar) {\n block.body.push(declar);\n }\n\n // push the rest of the original loop body onto our new body\n block.body.push(...(node.body as t.BlockStatement).body);\n\n t.inherits(loop, node);\n t.inherits(loop.body, node.body);\n\n if (build.replaceParent) {\n path.parentPath.replaceWithMultiple(build.node);\n path.remove();\n } else {\n path.replaceWithMultiple(build.node);\n }\n}\n\nconst buildForOfLoose = template.statement(`\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n INTERMEDIATE;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n`);\n\nconst buildForOf = template.statements(`\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (\n var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;\n !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);\n ITERATOR_COMPLETION = true\n ) {}\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n`);\n\nfunction pushComputedPropsLoose(\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const { node, scope, parent } = path;\n const { left } = node;\n let declar, id, intermediate;\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for (i of test), for ({ i } of test)\n id = left;\n intermediate = null;\n } else if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n id = scope.generateUidIdentifier(\"ref\");\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, t.identifier(id.name)),\n ]);\n intermediate = t.variableDeclaration(\"var\", [\n t.variableDeclarator(t.identifier(id.name)),\n ]);\n } else {\n throw state.buildCodeFrameError(\n left,\n `Unknown node type ${left.type} in ForStatement`,\n );\n }\n\n const iteratorKey = scope.generateUidIdentifier(\"iterator\");\n const isArrayKey = scope.generateUidIdentifier(\"isArray\");\n\n const loop = buildForOfLoose({\n LOOP_OBJECT: iteratorKey,\n IS_ARRAY: isArrayKey,\n OBJECT: node.right,\n INDEX: scope.generateUidIdentifier(\"i\"),\n ID: id,\n INTERMEDIATE: intermediate,\n }) as t.ForStatement;\n\n //\n const isLabeledParent = t.isLabeledStatement(parent);\n let labeled;\n\n if (isLabeledParent) {\n labeled = t.labeledStatement(parent.label, loop);\n }\n\n return {\n replaceParent: isLabeledParent,\n declar: declar,\n node: labeled || loop,\n loop: loop,\n };\n}\n\nfunction pushComputedPropsSpec(\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const { node, scope, parent } = path;\n const left = node.left;\n let declar;\n\n const stepKey = scope.generateUid(\"step\");\n const stepValue = t.memberExpression(\n t.identifier(stepKey),\n t.identifier(\"value\"),\n );\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for (i of test), for ({ i } of test)\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, stepValue),\n );\n } else if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, stepValue),\n ]);\n } else {\n throw state.buildCodeFrameError(\n left,\n `Unknown node type ${left.type} in ForStatement`,\n );\n }\n\n const template = buildForOf({\n ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier(\"didIteratorError\"),\n ITERATOR_COMPLETION: scope.generateUidIdentifier(\n \"iteratorNormalCompletion\",\n ),\n ITERATOR_ERROR_KEY: scope.generateUidIdentifier(\"iteratorError\"),\n ITERATOR_KEY: scope.generateUidIdentifier(\"iterator\"),\n STEP_KEY: t.identifier(stepKey),\n OBJECT: node.right,\n });\n\n const isLabeledParent = t.isLabeledStatement(parent);\n\n const tryBody = (template[3] as t.TryStatement).block.body;\n const loop = tryBody[0] as t.ForStatement;\n\n if (isLabeledParent) {\n tryBody[0] = t.labeledStatement(parent.label, loop);\n }\n\n //\n\n return {\n replaceParent: isLabeledParent,\n declar: declar,\n loop: loop,\n node: template,\n };\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\n\nimport transformWithoutHelper from \"./no-helper-implementation\";\n\nexport interface Options {\n allowArrayLike?: boolean;\n assumeArray?: boolean;\n loose?: boolean;\n}\n\nfunction buildLoopBody(\n path: NodePath<t.ForXStatement>,\n declar: t.Statement,\n newBody?: t.Statement | t.Expression,\n) {\n let block;\n const bodyPath = path.get(\"body\");\n const body = newBody ?? bodyPath.node;\n if (\n t.isBlockStatement(body) &&\n Object.keys(path.getBindingIdentifiers()).some(id =>\n bodyPath.scope.hasOwnBinding(id),\n )\n ) {\n block = t.blockStatement([declar, body]);\n } else {\n block = t.toBlock(body);\n block.body.unshift(declar);\n }\n return block;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n {\n const { assumeArray, allowArrayLike, loose } = options;\n\n if (loose === true && assumeArray === true) {\n throw new Error(\n `The loose and assumeArray options cannot be used together in @babel/plugin-transform-for-of`,\n );\n }\n\n if (assumeArray === true && allowArrayLike === true) {\n throw new Error(\n `The assumeArray and allowArrayLike options cannot be used together in @babel/plugin-transform-for-of`,\n );\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n // TODO: Remove in Babel 8\n if (allowArrayLike && /^7\\.\\d\\./.test(api.version)) {\n throw new Error(\n `The allowArrayLike is only supported when using @babel/core@^7.10.0`,\n );\n }\n }\n }\n\n const iterableIsArray =\n options.assumeArray ??\n // Loose mode is not compatible with 'assumeArray', so we shouldn't read\n // 'iterableIsArray' if 'loose' is true.\n (!options.loose && api.assumption(\"iterableIsArray\"));\n\n const arrayLikeIsIterable =\n options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\");\n\n const skipIteratorClosing =\n api.assumption(\"skipForOfIteratorClosing\") ?? options.loose;\n\n if (iterableIsArray && arrayLikeIsIterable) {\n throw new Error(\n `The \"iterableIsArray\" and \"arrayLikeIsIterable\" assumptions are not compatible.`,\n );\n }\n\n if (iterableIsArray) {\n return {\n name: \"transform-for-of\",\n\n visitor: {\n ForOfStatement(path) {\n const { scope } = path;\n const { left, right, await: isAwait } = path.node;\n if (isAwait) {\n return;\n }\n const i = scope.generateUidIdentifier(\"i\");\n let array: t.Identifier | t.ThisExpression =\n scope.maybeGenerateMemoised(right, true);\n\n const inits = [t.variableDeclarator(i, t.numericLiteral(0))];\n if (array) {\n inits.push(t.variableDeclarator(array, right));\n } else {\n array = right as t.Identifier | t.ThisExpression;\n }\n\n const item = t.memberExpression(\n t.cloneNode(array),\n t.cloneNode(i),\n true,\n );\n let assignment;\n if (t.isVariableDeclaration(left)) {\n assignment = left;\n assignment.declarations[0].init = item;\n } else {\n assignment = t.expressionStatement(\n t.assignmentExpression(\"=\", left, item),\n );\n }\n\n path.replaceWith(\n t.forStatement(\n t.variableDeclaration(\"let\", inits),\n t.binaryExpression(\n \"<\",\n t.cloneNode(i),\n t.memberExpression(t.cloneNode(array), t.identifier(\"length\")),\n ),\n t.updateExpression(\"++\", t.cloneNode(i)),\n buildLoopBody(path, assignment),\n ),\n );\n },\n },\n };\n }\n\n const buildForOfArray = template`\n for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;\n `;\n\n const buildForOfNoIteratorClosing = template.statements`\n for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n !(STEP_KEY = ITERATOR_HELPER()).done;) BODY;\n `;\n\n const buildForOf = template.statements`\n var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n try {\n for (ITERATOR_HELPER.s(); !(STEP_KEY = ITERATOR_HELPER.n()).done;) BODY;\n } catch (err) {\n ITERATOR_HELPER.e(err);\n } finally {\n ITERATOR_HELPER.f();\n }\n `;\n\n const builder = skipIteratorClosing\n ? {\n build: buildForOfNoIteratorClosing,\n helper: \"createForOfIteratorHelperLoose\",\n getContainer: (nodes: t.Statement[]): [t.ForStatement] =>\n nodes as [t.ForStatement],\n }\n : {\n build: buildForOf,\n helper: \"createForOfIteratorHelper\",\n getContainer: (nodes: t.Statement[]): [t.ForStatement] =>\n (nodes[1] as t.TryStatement).block.body as [t.ForStatement],\n };\n\n function _ForOfStatementArray(path: NodePath<t.ForOfStatement>) {\n const { node, scope } = path;\n\n const right = scope.generateUidIdentifierBasedOnNode(node.right, \"arr\");\n const iterationKey = scope.generateUidIdentifier(\"i\");\n\n const loop = buildForOfArray({\n BODY: node.body,\n KEY: iterationKey,\n NAME: right,\n ARR: node.right,\n }) as t.For;\n\n t.inherits(loop, node);\n\n const iterationValue = t.memberExpression(\n t.cloneNode(right),\n t.cloneNode(iterationKey),\n true,\n );\n\n let declar;\n const left = node.left;\n if (t.isVariableDeclaration(left)) {\n left.declarations[0].init = iterationValue;\n declar = left;\n } else {\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, iterationValue),\n );\n }\n\n loop.body = buildLoopBody(path, declar, loop.body);\n\n return loop;\n }\n\n return {\n name: \"transform-for-of\",\n visitor: {\n ForOfStatement(path, state) {\n const right = path.get(\"right\");\n if (\n right.isArrayExpression() ||\n (process.env.BABEL_8_BREAKING\n ? right.isGenericType(\"Array\")\n : right.isGenericType(\"Array\") ||\n t.isArrayTypeAnnotation(right.getTypeAnnotation()))\n ) {\n path.replaceWith(_ForOfStatementArray(path));\n return;\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n if (!state.availableHelper(builder.helper)) {\n // Babel <7.9.0 doesn't support this helper\n transformWithoutHelper(skipIteratorClosing, path, state);\n return;\n }\n }\n\n const { node, parent, scope } = path;\n const left = node.left;\n let declar;\n\n const stepKey = scope.generateUid(\"step\");\n const stepValue = t.memberExpression(\n t.identifier(stepKey),\n t.identifier(\"value\"),\n );\n\n if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, stepValue),\n ]);\n } else {\n // for (i of test), for ({ i } of test)\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, stepValue),\n );\n }\n\n const nodes = builder.build({\n CREATE_ITERATOR_HELPER: state.addHelper(builder.helper),\n ITERATOR_HELPER: scope.generateUidIdentifier(\"iterator\"),\n ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable\n ? t.booleanLiteral(true)\n : null,\n STEP_KEY: t.identifier(stepKey),\n OBJECT: node.right,\n BODY: buildLoopBody(path, declar),\n });\n const container = builder.getContainer(nodes);\n\n t.inherits(container[0], node);\n t.inherits(container[0].body, node.body);\n\n if (t.isLabeledStatement(parent)) {\n // @ts-expect-error replacing node types\n container[0] = t.labeledStatement(parent.label, container[0]);\n\n path.parentPath.replaceWithMultiple(nodes);\n\n // The parent has been replaced, prevent Babel from traversing a detached path\n path.skip();\n } else {\n path.replaceWithMultiple(nodes);\n }\n },\n },\n };\n});\n"],"names":["template","statement","statements","buildLoopBody","path","declar","newBody","block","bodyPath","get","body","node","t","isBlockStatement","Object","keys","getBindingIdentifiers","some","id","scope","hasOwnBinding","blockStatement","toBlock","unshift","declare","api","options","assertVersion","assumeArray","allowArrayLike","loose","Error","iterableIsArray","assumption","arrayLikeIsIterable","skipIteratorClosing","name","visitor","ForOfStatement","left","right","await","isAwait","i","generateUidIdentifier","array","maybeGenerateMemoised","inits","variableDeclarator","numericLiteral","push","item","memberExpression","cloneNode","assignment","isVariableDeclaration","declarations","init","expressionStatement","assignmentExpression","replaceWith","forStatement","variableDeclaration","binaryExpression","identifier","updateExpression","buildForOfArray","buildForOfNoIteratorClosing","buildForOf","builder","build","helper","getContainer","nodes","_ForOfStatementArray","generateUidIdentifierBasedOnNode","iterationKey","loop","BODY","KEY","NAME","ARR","inherits","iterationValue","state","isArrayExpression","isGenericType","parent","stepKey","generateUid","stepValue","kind","CREATE_ITERATOR_HELPER","addHelper","ITERATOR_HELPER","ARRAY_LIKE_IS_ITERABLE","booleanLiteral","STEP_KEY","OBJECT","container","isLabeledStatement","labeledStatement","label","parentPath","replaceWithMultiple","skip"],"mappings":";;;AA4CwBA,QAAQ,CAACC,SAAS,CAAE,CAAA;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AAEiBD,QAAQ,CAACE,UAAU,CAAE,CAAA;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;ACzED,SAASC,aAAaA,CACpBC,IAA+B,EAC/BC,MAAmB,EACnBC,OAAoC,EACpC;AACA,EAAA,IAAIC,KAAK,CAAA;AACT,EAAA,MAAMC,QAAQ,GAAGJ,IAAI,CAACK,GAAG,CAAC,MAAM,CAAC,CAAA;AACjC,EAAA,MAAMC,IAAI,GAAGJ,OAAO,IAAIE,QAAQ,CAACG,IAAI,CAAA;AACrC,EAAA,IACEC,KAAC,CAACC,gBAAgB,CAACH,IAAI,CAAC,IACxBI,MAAM,CAACC,IAAI,CAACX,IAAI,CAACY,qBAAqB,EAAE,CAAC,CAACC,IAAI,CAACC,EAAE,IAC/CV,QAAQ,CAACW,KAAK,CAACC,aAAa,CAACF,EAAE,CACjC,CAAC,EACD;IACAX,KAAK,GAAGK,KAAC,CAACS,cAAc,CAAC,CAAChB,MAAM,EAAEK,IAAI,CAAC,CAAC,CAAA;AAC1C,GAAC,MAAM;AACLH,IAAAA,KAAK,GAAGK,KAAC,CAACU,OAAO,CAACZ,IAAI,CAAC,CAAA;AACvBH,IAAAA,KAAK,CAACG,IAAI,CAACa,OAAO,CAAClB,MAAM,CAAC,CAAA;AAC5B,GAAA;AACA,EAAA,OAAOE,KAAK,CAAA;AACd,CAAA;AAEA,YAAeiB,OAAO,CAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;AAChDD,EAAAA,GAAG,CAACE,aAAa,CAAC,CAAC,CAAC,CAAA;AAEpB,EAAA;IACE,MAAM;MAAEC,WAAW;MAAEC,cAAc;AAAEC,MAAAA,KAAAA;AAAM,KAAC,GAAGJ,OAAO,CAAA;AAEtD,IAAA,IAAII,KAAK,KAAK,IAAI,IAAIF,WAAW,KAAK,IAAI,EAAE;AAC1C,MAAA,MAAM,IAAIG,KAAK,CACZ,CAAA,2FAAA,CACH,CAAC,CAAA;AACH,KAAA;AAEA,IAAA,IAAIH,WAAW,KAAK,IAAI,IAAIC,cAAc,KAAK,IAAI,EAAE;AACnD,MAAA,MAAM,IAAIE,KAAK,CACZ,CAAA,oGAAA,CACH,CAAC,CAAA;AACH,KAAA;AAUF,GAAA;AAEA,EAAA,MAAMC,eAAe,GACnBN,OAAO,CAACE,WAAW,KAGlB,CAACF,OAAO,CAACI,KAAK,IAAIL,GAAG,CAACQ,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;EAEvD,MAAMC,mBAAmB,GACvBR,OAAO,CAACG,cAAc,IAAIJ,GAAG,CAACQ,UAAU,CAAC,qBAAqB,CAAC,CAAA;EAEjE,MAAME,mBAAmB,GACvBV,GAAG,CAACQ,UAAU,CAAC,0BAA0B,CAAC,IAAIP,OAAO,CAACI,KAAK,CAAA;EAE7D,IAAIE,eAAe,IAAIE,mBAAmB,EAAE;AAC1C,IAAA,MAAM,IAAIH,KAAK,CACZ,CAAA,+EAAA,CACH,CAAC,CAAA;AACH,GAAA;AAEA,EAAA,IAAIC,eAAe,EAAE;IACnB,OAAO;AACLI,MAAAA,IAAI,EAAE,kBAAkB;AAExBC,MAAAA,OAAO,EAAE;QACPC,cAAcA,CAAClC,IAAI,EAAE;UACnB,MAAM;AAAEe,YAAAA,KAAAA;AAAM,WAAC,GAAGf,IAAI,CAAA;UACtB,MAAM;YAAEmC,IAAI;YAAEC,KAAK;AAAEC,YAAAA,KAAK,EAAEC,OAAAA;WAAS,GAAGtC,IAAI,CAACO,IAAI,CAAA;AACjD,UAAA,IAAI+B,OAAO,EAAE;AACX,YAAA,OAAA;AACF,WAAA;AACA,UAAA,MAAMC,CAAC,GAAGxB,KAAK,CAACyB,qBAAqB,CAAC,GAAG,CAAC,CAAA;UAC1C,IAAIC,KAAsC,GACxC1B,KAAK,CAAC2B,qBAAqB,CAACN,KAAK,EAAE,IAAI,CAAC,CAAA;AAE1C,UAAA,MAAMO,KAAK,GAAG,CAACnC,KAAC,CAACoC,kBAAkB,CAACL,CAAC,EAAE/B,KAAC,CAACqC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5D,UAAA,IAAIJ,KAAK,EAAE;YACTE,KAAK,CAACG,IAAI,CAACtC,KAAC,CAACoC,kBAAkB,CAACH,KAAK,EAAEL,KAAK,CAAC,CAAC,CAAA;AAChD,WAAC,MAAM;AACLK,YAAAA,KAAK,GAAGL,KAAwC,CAAA;AAClD,WAAA;UAEA,MAAMW,IAAI,GAAGvC,KAAC,CAACwC,gBAAgB,CAC7BxC,KAAC,CAACyC,SAAS,CAACR,KAAK,CAAC,EAClBjC,KAAC,CAACyC,SAAS,CAACV,CAAC,CAAC,EACd,IACF,CAAC,CAAA;AACD,UAAA,IAAIW,UAAU,CAAA;AACd,UAAA,IAAI1C,KAAC,CAAC2C,qBAAqB,CAAChB,IAAI,CAAC,EAAE;AACjCe,YAAAA,UAAU,GAAGf,IAAI,CAAA;YACjBe,UAAU,CAACE,YAAY,CAAC,CAAC,CAAC,CAACC,IAAI,GAAGN,IAAI,CAAA;AACxC,WAAC,MAAM;AACLG,YAAAA,UAAU,GAAG1C,KAAC,CAAC8C,mBAAmB,CAChC9C,KAAC,CAAC+C,oBAAoB,CAAC,GAAG,EAAEpB,IAAI,EAAEY,IAAI,CACxC,CAAC,CAAA;AACH,WAAA;AAEA/C,UAAAA,IAAI,CAACwD,WAAW,CACdhD,KAAC,CAACiD,YAAY,CACZjD,KAAC,CAACkD,mBAAmB,CAAC,KAAK,EAAEf,KAAK,CAAC,EACnCnC,KAAC,CAACmD,gBAAgB,CAChB,GAAG,EACHnD,KAAC,CAACyC,SAAS,CAACV,CAAC,CAAC,EACd/B,KAAC,CAACwC,gBAAgB,CAACxC,KAAC,CAACyC,SAAS,CAACR,KAAK,CAAC,EAAEjC,KAAC,CAACoD,UAAU,CAAC,QAAQ,CAAC,CAC/D,CAAC,EACDpD,KAAC,CAACqD,gBAAgB,CAAC,IAAI,EAAErD,KAAC,CAACyC,SAAS,CAACV,CAAC,CAAC,CAAC,EACxCxC,aAAa,CAACC,IAAI,EAAEkD,UAAU,CAChC,CACF,CAAC,CAAA;AACH,SAAA;AACF,OAAA;KACD,CAAA;AACH,GAAA;EAEA,MAAMY,eAAe,GAAGlE,QAAS,CAAA;AACnC;AACA,EAAG,CAAA,CAAA;AAED,EAAA,MAAMmE,2BAA2B,GAAGnE,QAAQ,CAACE,UAAW,CAAA;AAC1D;AACA;AACA,EAAG,CAAA,CAAA;AAED,EAAA,MAAMkE,UAAU,GAAGpE,QAAQ,CAACE,UAAW,CAAA;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAG,CAAA,CAAA;EAED,MAAMmE,OAAO,GAAGlC,mBAAmB,GAC/B;AACEmC,IAAAA,KAAK,EAAEH,2BAA2B;AAClCI,IAAAA,MAAM,EAAE,gCAAgC;IACxCC,YAAY,EAAGC,KAAoB,IACjCA,KAAAA;AACJ,GAAC,GACD;AACEH,IAAAA,KAAK,EAAEF,UAAU;AACjBG,IAAAA,MAAM,EAAE,2BAA2B;IACnCC,YAAY,EAAGC,KAAoB,IAChCA,KAAK,CAAC,CAAC,CAAC,CAAoBlE,KAAK,CAACG,IAAAA;GACtC,CAAA;EAEL,SAASgE,oBAAoBA,CAACtE,IAAgC,EAAE;IAC9D,MAAM;MAAEO,IAAI;AAAEQ,MAAAA,KAAAA;AAAM,KAAC,GAAGf,IAAI,CAAA;IAE5B,MAAMoC,KAAK,GAAGrB,KAAK,CAACwD,gCAAgC,CAAChE,IAAI,CAAC6B,KAAK,EAAE,KAAK,CAAC,CAAA;AACvE,IAAA,MAAMoC,YAAY,GAAGzD,KAAK,CAACyB,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAErD,MAAMiC,IAAI,GAAGX,eAAe,CAAC;MAC3BY,IAAI,EAAEnE,IAAI,CAACD,IAAI;AACfqE,MAAAA,GAAG,EAAEH,YAAY;AACjBI,MAAAA,IAAI,EAAExC,KAAK;MACXyC,GAAG,EAAEtE,IAAI,CAAC6B,KAAAA;AACZ,KAAC,CAAU,CAAA;AAEX5B,IAAAA,KAAC,CAACsE,QAAQ,CAACL,IAAI,EAAElE,IAAI,CAAC,CAAA;IAEtB,MAAMwE,cAAc,GAAGvE,KAAC,CAACwC,gBAAgB,CACvCxC,KAAC,CAACyC,SAAS,CAACb,KAAK,CAAC,EAClB5B,KAAC,CAACyC,SAAS,CAACuB,YAAY,CAAC,EACzB,IACF,CAAC,CAAA;AAED,IAAA,IAAIvE,MAAM,CAAA;AACV,IAAA,MAAMkC,IAAI,GAAG5B,IAAI,CAAC4B,IAAI,CAAA;AACtB,IAAA,IAAI3B,KAAC,CAAC2C,qBAAqB,CAAChB,IAAI,CAAC,EAAE;MACjCA,IAAI,CAACiB,YAAY,CAAC,CAAC,CAAC,CAACC,IAAI,GAAG0B,cAAc,CAAA;AAC1C9E,MAAAA,MAAM,GAAGkC,IAAI,CAAA;AACf,KAAC,MAAM;AACLlC,MAAAA,MAAM,GAAGO,KAAC,CAAC8C,mBAAmB,CAC5B9C,KAAC,CAAC+C,oBAAoB,CAAC,GAAG,EAAEpB,IAAI,EAAE4C,cAAc,CAClD,CAAC,CAAA;AACH,KAAA;AAEAN,IAAAA,IAAI,CAACnE,IAAI,GAAGP,aAAa,CAACC,IAAI,EAAEC,MAAM,EAAEwE,IAAI,CAACnE,IAAI,CAAC,CAAA;AAElD,IAAA,OAAOmE,IAAI,CAAA;AACb,GAAA;EAEA,OAAO;AACLzC,IAAAA,IAAI,EAAE,kBAAkB;AACxBC,IAAAA,OAAO,EAAE;AACPC,MAAAA,cAAcA,CAAClC,IAAI,EAAEgF,KAAK,EAAE;AAC1B,QAAA,MAAM5C,KAAK,GAAGpC,IAAI,CAACK,GAAG,CAAC,OAAO,CAAC,CAAA;AAC/B,QAAA,IACE+B,KAAK,CAAC6C,iBAAiB,EAAE,IAErB7C,KAAK,CAAC8C,aAAa,CAAC,OAAO,CAEwB,EACvD;AACAlF,UAAAA,IAAI,CAACwD,WAAW,CAACc,oBAAoB,CAACtE,IAAI,CAAC,CAAC,CAAA;AAC5C,UAAA,OAAA;AACF,SAAA;QAUA,MAAM;UAAEO,IAAI;UAAE4E,MAAM;AAAEpE,UAAAA,KAAAA;AAAM,SAAC,GAAGf,IAAI,CAAA;AACpC,QAAA,MAAMmC,IAAI,GAAG5B,IAAI,CAAC4B,IAAI,CAAA;AACtB,QAAA,IAAIlC,MAAM,CAAA;AAEV,QAAA,MAAMmF,OAAO,GAAGrE,KAAK,CAACsE,WAAW,CAAC,MAAM,CAAC,CAAA;AACzC,QAAA,MAAMC,SAAS,GAAG9E,KAAC,CAACwC,gBAAgB,CAClCxC,KAAC,CAACoD,UAAU,CAACwB,OAAO,CAAC,EACrB5E,KAAC,CAACoD,UAAU,CAAC,OAAO,CACtB,CAAC,CAAA;AAED,QAAA,IAAIpD,KAAC,CAAC2C,qBAAqB,CAAChB,IAAI,CAAC,EAAE;UAEjClC,MAAM,GAAGO,KAAC,CAACkD,mBAAmB,CAACvB,IAAI,CAACoD,IAAI,EAAE,CACxC/E,KAAC,CAACoC,kBAAkB,CAACT,IAAI,CAACiB,YAAY,CAAC,CAAC,CAAC,CAACtC,EAAE,EAAEwE,SAAS,CAAC,CACzD,CAAC,CAAA;AACJ,SAAC,MAAM;AAELrF,UAAAA,MAAM,GAAGO,KAAC,CAAC8C,mBAAmB,CAC5B9C,KAAC,CAAC+C,oBAAoB,CAAC,GAAG,EAAEpB,IAAI,EAAEmD,SAAS,CAC7C,CAAC,CAAA;AACH,SAAA;AAEA,QAAA,MAAMjB,KAAK,GAAGJ,OAAO,CAACC,KAAK,CAAC;UAC1BsB,sBAAsB,EAAER,KAAK,CAACS,SAAS,CAACxB,OAAO,CAACE,MAAM,CAAC;AACvDuB,UAAAA,eAAe,EAAE3E,KAAK,CAACyB,qBAAqB,CAAC,UAAU,CAAC;UACxDmD,sBAAsB,EAAE7D,mBAAmB,GACvCtB,KAAC,CAACoF,cAAc,CAAC,IAAI,CAAC,GACtB,IAAI;AACRC,UAAAA,QAAQ,EAAErF,KAAC,CAACoD,UAAU,CAACwB,OAAO,CAAC;UAC/BU,MAAM,EAAEvF,IAAI,CAAC6B,KAAK;AAClBsC,UAAAA,IAAI,EAAE3E,aAAa,CAACC,IAAI,EAAEC,MAAM,CAAA;AAClC,SAAC,CAAC,CAAA;AACF,QAAA,MAAM8F,SAAS,GAAG9B,OAAO,CAACG,YAAY,CAACC,KAAK,CAAC,CAAA;QAE7C7D,KAAC,CAACsE,QAAQ,CAACiB,SAAS,CAAC,CAAC,CAAC,EAAExF,IAAI,CAAC,CAAA;AAC9BC,QAAAA,KAAC,CAACsE,QAAQ,CAACiB,SAAS,CAAC,CAAC,CAAC,CAACzF,IAAI,EAAEC,IAAI,CAACD,IAAI,CAAC,CAAA;AAExC,QAAA,IAAIE,KAAC,CAACwF,kBAAkB,CAACb,MAAM,CAAC,EAAE;AAEhCY,UAAAA,SAAS,CAAC,CAAC,CAAC,GAAGvF,KAAC,CAACyF,gBAAgB,CAACd,MAAM,CAACe,KAAK,EAAEH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAE7D/F,UAAAA,IAAI,CAACmG,UAAU,CAACC,mBAAmB,CAAC/B,KAAK,CAAC,CAAA;UAG1CrE,IAAI,CAACqG,IAAI,EAAE,CAAA;AACb,SAAC,MAAM;AACLrG,UAAAA,IAAI,CAACoG,mBAAmB,CAAC/B,KAAK,CAAC,CAAA;AACjC,SAAA;AACF,OAAA;AACF,KAAA;GACD,CAAA;AACH,CAAC,CAAC;;;;"} |
@@ -1,9 +0,3 @@ | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.default = transformWithoutHelper; | ||
| var _core = require("@babel/core"); | ||
| function transformWithoutHelper(loose, path, state) { | ||
| import { template, types as t } from "@babel/core"; | ||
| export default function transformWithoutHelper(loose, path, state) { | ||
| const pushComputedProps = loose ? pushComputedPropsLoose : pushComputedPropsSpec; | ||
@@ -22,4 +16,4 @@ const { | ||
| block.body.push(...node.body.body); | ||
| _core.types.inherits(loop, node); | ||
| _core.types.inherits(loop.body, node.body); | ||
| t.inherits(loop, node); | ||
| t.inherits(loop.body, node.body); | ||
| if (build.replaceParent) { | ||
@@ -32,3 +26,3 @@ path.parentPath.replaceWithMultiple(build.node); | ||
| } | ||
| const buildForOfLoose = _core.template.statement(` | ||
| const buildForOfLoose = template.statement(` | ||
| for (var LOOP_OBJECT = OBJECT, | ||
@@ -49,3 +43,3 @@ IS_ARRAY = Array.isArray(LOOP_OBJECT), | ||
| `); | ||
| const buildForOf = _core.template.statements(` | ||
| const buildForOf = template.statements(` | ||
| var ITERATOR_COMPLETION = true; | ||
@@ -85,9 +79,9 @@ var ITERATOR_HAD_ERROR_KEY = false; | ||
| let declar, id, intermediate; | ||
| if (_core.types.isIdentifier(left) || _core.types.isPattern(left) || _core.types.isMemberExpression(left)) { | ||
| if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) { | ||
| id = left; | ||
| intermediate = null; | ||
| } else if (_core.types.isVariableDeclaration(left)) { | ||
| } else if (t.isVariableDeclaration(left)) { | ||
| id = scope.generateUidIdentifier("ref"); | ||
| declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, _core.types.identifier(id.name))]); | ||
| intermediate = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(id.name))]); | ||
| declar = t.variableDeclaration(left.kind, [t.variableDeclarator(left.declarations[0].id, t.identifier(id.name))]); | ||
| intermediate = t.variableDeclaration("var", [t.variableDeclarator(t.identifier(id.name))]); | ||
| } else { | ||
@@ -106,6 +100,6 @@ throw state.buildCodeFrameError(left, `Unknown node type ${left.type} in ForStatement`); | ||
| }); | ||
| const isLabeledParent = _core.types.isLabeledStatement(parent); | ||
| const isLabeledParent = t.isLabeledStatement(parent); | ||
| let labeled; | ||
| if (isLabeledParent) { | ||
| labeled = _core.types.labeledStatement(parent.label, loop); | ||
| labeled = t.labeledStatement(parent.label, loop); | ||
| } | ||
@@ -128,7 +122,7 @@ return { | ||
| const stepKey = scope.generateUid("step"); | ||
| const stepValue = _core.types.memberExpression(_core.types.identifier(stepKey), _core.types.identifier("value")); | ||
| if (_core.types.isIdentifier(left) || _core.types.isPattern(left) || _core.types.isMemberExpression(left)) { | ||
| declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, stepValue)); | ||
| } else if (_core.types.isVariableDeclaration(left)) { | ||
| declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, stepValue)]); | ||
| const stepValue = t.memberExpression(t.identifier(stepKey), t.identifier("value")); | ||
| if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) { | ||
| declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue)); | ||
| } else if (t.isVariableDeclaration(left)) { | ||
| declar = t.variableDeclaration(left.kind, [t.variableDeclarator(left.declarations[0].id, stepValue)]); | ||
| } else { | ||
@@ -142,10 +136,10 @@ throw state.buildCodeFrameError(left, `Unknown node type ${left.type} in ForStatement`); | ||
| ITERATOR_KEY: scope.generateUidIdentifier("iterator"), | ||
| STEP_KEY: _core.types.identifier(stepKey), | ||
| STEP_KEY: t.identifier(stepKey), | ||
| OBJECT: node.right | ||
| }); | ||
| const isLabeledParent = _core.types.isLabeledStatement(parent); | ||
| const isLabeledParent = t.isLabeledStatement(parent); | ||
| const tryBody = template[3].block.body; | ||
| const loop = tryBody[0]; | ||
| if (isLabeledParent) { | ||
| tryBody[0] = _core.types.labeledStatement(parent.label, loop); | ||
| tryBody[0] = t.labeledStatement(parent.label, loop); | ||
| } | ||
@@ -152,0 +146,0 @@ return { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"names":["_core","require","transformWithoutHelper","loose","path","state","pushComputedProps","pushComputedPropsLoose","pushComputedPropsSpec","node","build","declar","loop","block","body","ensureBlock","push","t","inherits","replaceParent","parentPath","replaceWithMultiple","remove","buildForOfLoose","template","statement","buildForOf","statements","scope","parent","left","id","intermediate","isIdentifier","isPattern","isMemberExpression","isVariableDeclaration","generateUidIdentifier","variableDeclaration","kind","variableDeclarator","declarations","identifier","name","buildCodeFrameError","type","iteratorKey","isArrayKey","LOOP_OBJECT","IS_ARRAY","OBJECT","right","INDEX","ID","INTERMEDIATE","isLabeledParent","isLabeledStatement","labeled","labeledStatement","label","stepKey","generateUid","stepValue","memberExpression","expressionStatement","assignmentExpression","ITERATOR_HAD_ERROR_KEY","ITERATOR_COMPLETION","ITERATOR_ERROR_KEY","ITERATOR_KEY","STEP_KEY","tryBody"],"sources":["../src/no-helper-implementation.ts"],"sourcesContent":["import { type PluginPass, template, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\n\n// This is the legacy implementation, which inlines all the code.\n// It must be kept for compatibility reasons.\n// TODO(Babel 8): Remove this file.\n\nexport default function transformWithoutHelper(\n loose: boolean | void,\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const pushComputedProps = loose\n ? pushComputedPropsLoose\n : pushComputedPropsSpec;\n\n const { node } = path;\n const build = pushComputedProps(path, state);\n const declar = build.declar;\n const loop = build.loop;\n const block = loop.body as t.BlockStatement;\n\n // ensure that it's a block so we can take all its statements\n path.ensureBlock();\n\n // add the value declaration to the new loop body\n if (declar) {\n block.body.push(declar);\n }\n\n // push the rest of the original loop body onto our new body\n block.body.push(...(node.body as t.BlockStatement).body);\n\n t.inherits(loop, node);\n t.inherits(loop.body, node.body);\n\n if (build.replaceParent) {\n path.parentPath.replaceWithMultiple(build.node);\n path.remove();\n } else {\n path.replaceWithMultiple(build.node);\n }\n}\n\nconst buildForOfLoose = template.statement(`\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n INTERMEDIATE;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n`);\n\nconst buildForOf = template.statements(`\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (\n var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;\n !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);\n ITERATOR_COMPLETION = true\n ) {}\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n`);\n\nfunction pushComputedPropsLoose(\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const { node, scope, parent } = path;\n const { left } = node;\n let declar, id, intermediate;\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for (i of test), for ({ i } of test)\n id = left;\n intermediate = null;\n } else if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n id = scope.generateUidIdentifier(\"ref\");\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, t.identifier(id.name)),\n ]);\n intermediate = t.variableDeclaration(\"var\", [\n t.variableDeclarator(t.identifier(id.name)),\n ]);\n } else {\n throw state.buildCodeFrameError(\n left,\n `Unknown node type ${left.type} in ForStatement`,\n );\n }\n\n const iteratorKey = scope.generateUidIdentifier(\"iterator\");\n const isArrayKey = scope.generateUidIdentifier(\"isArray\");\n\n const loop = buildForOfLoose({\n LOOP_OBJECT: iteratorKey,\n IS_ARRAY: isArrayKey,\n OBJECT: node.right,\n INDEX: scope.generateUidIdentifier(\"i\"),\n ID: id,\n INTERMEDIATE: intermediate,\n }) as t.ForStatement;\n\n //\n const isLabeledParent = t.isLabeledStatement(parent);\n let labeled;\n\n if (isLabeledParent) {\n labeled = t.labeledStatement(parent.label, loop);\n }\n\n return {\n replaceParent: isLabeledParent,\n declar: declar,\n node: labeled || loop,\n loop: loop,\n };\n}\n\nfunction pushComputedPropsSpec(\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const { node, scope, parent } = path;\n const left = node.left;\n let declar;\n\n const stepKey = scope.generateUid(\"step\");\n const stepValue = t.memberExpression(\n t.identifier(stepKey),\n t.identifier(\"value\"),\n );\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for (i of test), for ({ i } of test)\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, stepValue),\n );\n } else if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, stepValue),\n ]);\n } else {\n throw state.buildCodeFrameError(\n left,\n `Unknown node type ${left.type} in ForStatement`,\n );\n }\n\n const template = buildForOf({\n ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier(\"didIteratorError\"),\n ITERATOR_COMPLETION: scope.generateUidIdentifier(\n \"iteratorNormalCompletion\",\n ),\n ITERATOR_ERROR_KEY: scope.generateUidIdentifier(\"iteratorError\"),\n ITERATOR_KEY: scope.generateUidIdentifier(\"iterator\"),\n STEP_KEY: t.identifier(stepKey),\n OBJECT: node.right,\n });\n\n const isLabeledParent = t.isLabeledStatement(parent);\n\n const tryBody = (template[3] as t.TryStatement).block.body;\n const loop = tryBody[0] as t.ForStatement;\n\n if (isLabeledParent) {\n tryBody[0] = t.labeledStatement(parent.label, loop);\n }\n\n //\n\n return {\n replaceParent: isLabeledParent,\n declar: declar,\n loop: loop,\n node: template,\n };\n}\n"],"mappings":"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"} | ||
| {"version":3,"names":["template","types","t","transformWithoutHelper","loose","path","state","pushComputedProps","pushComputedPropsLoose","pushComputedPropsSpec","node","build","declar","loop","block","body","ensureBlock","push","inherits","replaceParent","parentPath","replaceWithMultiple","remove","buildForOfLoose","statement","buildForOf","statements","scope","parent","left","id","intermediate","isIdentifier","isPattern","isMemberExpression","isVariableDeclaration","generateUidIdentifier","variableDeclaration","kind","variableDeclarator","declarations","identifier","name","buildCodeFrameError","type","iteratorKey","isArrayKey","LOOP_OBJECT","IS_ARRAY","OBJECT","right","INDEX","ID","INTERMEDIATE","isLabeledParent","isLabeledStatement","labeled","labeledStatement","label","stepKey","generateUid","stepValue","memberExpression","expressionStatement","assignmentExpression","ITERATOR_HAD_ERROR_KEY","ITERATOR_COMPLETION","ITERATOR_ERROR_KEY","ITERATOR_KEY","STEP_KEY","tryBody"],"sources":["../src/no-helper-implementation.ts"],"sourcesContent":["import { type PluginPass, template, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\n\n// This is the legacy implementation, which inlines all the code.\n// It must be kept for compatibility reasons.\n// TODO(Babel 8): Remove this file.\n\nexport default function transformWithoutHelper(\n loose: boolean | void,\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const pushComputedProps = loose\n ? pushComputedPropsLoose\n : pushComputedPropsSpec;\n\n const { node } = path;\n const build = pushComputedProps(path, state);\n const declar = build.declar;\n const loop = build.loop;\n const block = loop.body as t.BlockStatement;\n\n // ensure that it's a block so we can take all its statements\n path.ensureBlock();\n\n // add the value declaration to the new loop body\n if (declar) {\n block.body.push(declar);\n }\n\n // push the rest of the original loop body onto our new body\n block.body.push(...(node.body as t.BlockStatement).body);\n\n t.inherits(loop, node);\n t.inherits(loop.body, node.body);\n\n if (build.replaceParent) {\n path.parentPath.replaceWithMultiple(build.node);\n path.remove();\n } else {\n path.replaceWithMultiple(build.node);\n }\n}\n\nconst buildForOfLoose = template.statement(`\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n INTERMEDIATE;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n`);\n\nconst buildForOf = template.statements(`\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (\n var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;\n !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);\n ITERATOR_COMPLETION = true\n ) {}\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n`);\n\nfunction pushComputedPropsLoose(\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const { node, scope, parent } = path;\n const { left } = node;\n let declar, id, intermediate;\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for (i of test), for ({ i } of test)\n id = left;\n intermediate = null;\n } else if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n id = scope.generateUidIdentifier(\"ref\");\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, t.identifier(id.name)),\n ]);\n intermediate = t.variableDeclaration(\"var\", [\n t.variableDeclarator(t.identifier(id.name)),\n ]);\n } else {\n throw state.buildCodeFrameError(\n left,\n `Unknown node type ${left.type} in ForStatement`,\n );\n }\n\n const iteratorKey = scope.generateUidIdentifier(\"iterator\");\n const isArrayKey = scope.generateUidIdentifier(\"isArray\");\n\n const loop = buildForOfLoose({\n LOOP_OBJECT: iteratorKey,\n IS_ARRAY: isArrayKey,\n OBJECT: node.right,\n INDEX: scope.generateUidIdentifier(\"i\"),\n ID: id,\n INTERMEDIATE: intermediate,\n }) as t.ForStatement;\n\n //\n const isLabeledParent = t.isLabeledStatement(parent);\n let labeled;\n\n if (isLabeledParent) {\n labeled = t.labeledStatement(parent.label, loop);\n }\n\n return {\n replaceParent: isLabeledParent,\n declar: declar,\n node: labeled || loop,\n loop: loop,\n };\n}\n\nfunction pushComputedPropsSpec(\n path: NodePath<t.ForOfStatement>,\n state: PluginPass,\n) {\n const { node, scope, parent } = path;\n const left = node.left;\n let declar;\n\n const stepKey = scope.generateUid(\"step\");\n const stepValue = t.memberExpression(\n t.identifier(stepKey),\n t.identifier(\"value\"),\n );\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for (i of test), for ({ i } of test)\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, stepValue),\n );\n } else if (t.isVariableDeclaration(left)) {\n // for (let i of test)\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, stepValue),\n ]);\n } else {\n throw state.buildCodeFrameError(\n left,\n `Unknown node type ${left.type} in ForStatement`,\n );\n }\n\n const template = buildForOf({\n ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier(\"didIteratorError\"),\n ITERATOR_COMPLETION: scope.generateUidIdentifier(\n \"iteratorNormalCompletion\",\n ),\n ITERATOR_ERROR_KEY: scope.generateUidIdentifier(\"iteratorError\"),\n ITERATOR_KEY: scope.generateUidIdentifier(\"iterator\"),\n STEP_KEY: t.identifier(stepKey),\n OBJECT: node.right,\n });\n\n const isLabeledParent = t.isLabeledStatement(parent);\n\n const tryBody = (template[3] as t.TryStatement).block.body;\n const loop = tryBody[0] as t.ForStatement;\n\n if (isLabeledParent) {\n tryBody[0] = t.labeledStatement(parent.label, loop);\n }\n\n //\n\n return {\n replaceParent: isLabeledParent,\n declar: declar,\n loop: loop,\n node: template,\n };\n}\n"],"mappings":"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"} |
+11
-7
| { | ||
| "name": "@babel/plugin-transform-for-of", | ||
| "version": "7.22.5", | ||
| "version": "8.0.0-alpha.0", | ||
| "description": "Compile ES2015 for...of to ES5", | ||
@@ -20,16 +20,20 @@ "repository": { | ||
| "dependencies": { | ||
| "@babel/helper-plugin-utils": "^7.22.5" | ||
| "@babel/helper-plugin-utils": "^8.0.0-alpha.0" | ||
| }, | ||
| "peerDependencies": { | ||
| "@babel/core": "^7.0.0-0" | ||
| "@babel/core": "^8.0.0-alpha.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^7.22.5", | ||
| "@babel/helper-plugin-test-runner": "^7.22.5" | ||
| "@babel/core": "^8.0.0-alpha.0", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-alpha.0" | ||
| }, | ||
| "engines": { | ||
| "node": ">=6.9.0" | ||
| "node": "^16.20.0 || ^18.16.0 || >=20.0.0" | ||
| }, | ||
| "author": "The Babel Team (https://babel.dev/team)", | ||
| "type": "commonjs" | ||
| "exports": { | ||
| ".": "./lib/index.js", | ||
| "./package.json": "./package.json" | ||
| }, | ||
| "type": "module" | ||
| } |
+1
-1
@@ -5,3 +5,3 @@ # @babel/plugin-transform-for-of | ||
| See our website [@babel/plugin-transform-for-of](https://babeljs.io/docs/en/babel-plugin-transform-for-of) for more information. | ||
| See our website [@babel/plugin-transform-for-of](https://babeljs.io/docs/babel-plugin-transform-for-of) for more information. | ||
@@ -8,0 +8,0 @@ ## Install |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
49042
13.39%359
5.28%Yes
NaN1
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed