diff options
Diffstat (limited to 'node_modules/@babel/helper-simple-access')
| -rw-r--r-- | node_modules/@babel/helper-simple-access/LICENSE | 22 | ||||
| -rw-r--r-- | node_modules/@babel/helper-simple-access/README.md | 19 | ||||
| -rw-r--r-- | node_modules/@babel/helper-simple-access/lib/index.js | 93 | ||||
| -rw-r--r-- | node_modules/@babel/helper-simple-access/package.json | 26 | 
4 files changed, 160 insertions, 0 deletions
diff --git a/node_modules/@babel/helper-simple-access/LICENSE b/node_modules/@babel/helper-simple-access/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/helper-simple-access/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/helper-simple-access/README.md b/node_modules/@babel/helper-simple-access/README.md new file mode 100644 index 0000000..01aa70a --- /dev/null +++ b/node_modules/@babel/helper-simple-access/README.md @@ -0,0 +1,19 @@ +# @babel/helper-simple-access + +> Babel helper for ensuring that access to a given value is performed through simple accesses + +See our website [@babel/helper-simple-access](https://babeljs.io/docs/en/babel-helper-simple-access) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-simple-access +``` + +or using yarn: + +```sh +yarn add @babel/helper-simple-access +``` diff --git a/node_modules/@babel/helper-simple-access/lib/index.js b/node_modules/@babel/helper-simple-access/lib/index.js new file mode 100644 index 0000000..69bacda --- /dev/null +++ b/node_modules/@babel/helper-simple-access/lib/index.js @@ -0,0 +1,93 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { +  value: true +}); +exports.default = simplifyAccess; + +var _t = require("@babel/types"); + +const { +  LOGICAL_OPERATORS, +  assignmentExpression, +  binaryExpression, +  cloneNode, +  identifier, +  logicalExpression, +  numericLiteral, +  sequenceExpression, +  unaryExpression +} = _t; + +function simplifyAccess(path, bindingNames) { +  path.traverse(simpleAssignmentVisitor, { +    scope: path.scope, +    bindingNames, +    seen: new WeakSet() +  }); +} + +const simpleAssignmentVisitor = { +  UpdateExpression: { +    exit(path) { +      const { +        scope, +        bindingNames +      } = this; +      const arg = path.get("argument"); +      if (!arg.isIdentifier()) return; +      const localName = arg.node.name; +      if (!bindingNames.has(localName)) return; + +      if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { +        return; +      } + +      if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) { +        const operator = path.node.operator == "++" ? "+=" : "-="; +        path.replaceWith(assignmentExpression(operator, arg.node, numericLiteral(1))); +      } else if (path.node.prefix) { +        path.replaceWith(assignmentExpression("=", identifier(localName), binaryExpression(path.node.operator[0], unaryExpression("+", arg.node), numericLiteral(1)))); +      } else { +        const old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old"); +        const varName = old.name; +        path.scope.push({ +          id: old +        }); +        const binary = binaryExpression(path.node.operator[0], identifier(varName), numericLiteral(1)); +        path.replaceWith(sequenceExpression([assignmentExpression("=", identifier(varName), unaryExpression("+", arg.node)), assignmentExpression("=", cloneNode(arg.node), binary), identifier(varName)])); +      } +    } + +  }, +  AssignmentExpression: { +    exit(path) { +      const { +        scope, +        seen, +        bindingNames +      } = this; +      if (path.node.operator === "=") return; +      if (seen.has(path.node)) return; +      seen.add(path.node); +      const left = path.get("left"); +      if (!left.isIdentifier()) return; +      const localName = left.node.name; +      if (!bindingNames.has(localName)) return; + +      if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { +        return; +      } + +      const operator = path.node.operator.slice(0, -1); + +      if (LOGICAL_OPERATORS.includes(operator)) { +        path.replaceWith(logicalExpression(operator, path.node.left, assignmentExpression("=", cloneNode(path.node.left), path.node.right))); +      } else { +        path.node.right = binaryExpression(operator, cloneNode(path.node.left), path.node.right); +        path.node.operator = "="; +      } +    } + +  } +};
\ No newline at end of file diff --git a/node_modules/@babel/helper-simple-access/package.json b/node_modules/@babel/helper-simple-access/package.json new file mode 100644 index 0000000..e30c7ed --- /dev/null +++ b/node_modules/@babel/helper-simple-access/package.json @@ -0,0 +1,26 @@ +{ +  "name": "@babel/helper-simple-access", +  "version": "7.16.7", +  "description": "Babel helper for ensuring that access to a given value is performed through simple accesses", +  "author": "The Babel Team (https://babel.dev/team)", +  "homepage": "https://babel.dev/docs/en/next/babel-helper-simple-access", +  "license": "MIT", +  "publishConfig": { +    "access": "public" +  }, +  "repository": { +    "type": "git", +    "url": "https://github.com/babel/babel.git", +    "directory": "packages/babel-helper-simple-access" +  }, +  "main": "./lib/index.js", +  "dependencies": { +    "@babel/types": "^7.16.7" +  }, +  "devDependencies": { +    "@babel/traverse": "^7.16.7" +  }, +  "engines": { +    "node": ">=6.9.0" +  } +}
\ No newline at end of file  | 
