diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:43:05 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 22:18:30 +0800 |
| commit | 89e95b3f143682ed9a006991bacf45c9dcba4818 (patch) | |
| tree | 4f44cf41b828577d583890bdd5a1c31e8491a6ba /node_modules/@babel/plugin-transform-new-target | |
| parent | aa7f0199255277949790b41c56e8ec97dd4f0da4 (diff) | |
| download | xmake-docs-vuepress.tar.gz xmake-docs-vuepress.zip | |
remove node_modulesvuepress
Diffstat (limited to 'node_modules/@babel/plugin-transform-new-target')
3 files changed, 0 insertions, 216 deletions
diff --git a/node_modules/@babel/plugin-transform-new-target/README.md b/node_modules/@babel/plugin-transform-new-target/README.md deleted file mode 100644 index ccd5b4a4..00000000 --- a/node_modules/@babel/plugin-transform-new-target/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# @babel/plugin-transform-new-target - -This plugins allows babel to transform `new.target` meta property into a -(correct in most cases) `this.constructor` expression. - -## Example - -```js -function Foo() { - console.log(new.target); -} - -Foo(); // => undefined -new Foo(); // => Foo -``` - -```js -class Foo { - constructor() { - console.log(new.target); - } -} - -class Bar extends Foo { -} - -new Foo(); // => Foo -new Bar(); // => Bar -``` - -### Caveats - -This plugin relies on `this.constructor`, which means `super` must -already have been called when using untransformed classes. - -```js -class Foo {} - -class Bar extends Foo { - constructor() { - // This will be a problem if classes aren't transformed to ES5 - new.target; - super(); - } -} -``` - -Additionally, this plugin cannot transform all `Reflect.construct` cases -when using `newTarget` with ES5 function classes (transformed ES6 classes). - -```js -function Foo() { - console.log(new.target); -} - -// Bar extends Foo in ES5 -function Bar() { - Foo.call(this); -} -Bar.prototype = Object.create(Foo.prototype); -Bar.prototype.constructor = Bar; - -// Baz does not extend Foo -function Baz() {} - -Reflect.construct(Foo, []); // => Foo (correct) -Reflect.construct(Foo, [], Bar); // => Bar (correct) - -Reflect.construct(Bar, []); // => Bar (incorrect, though this is how ES5 - // inheritience is commonly implemented.) -Reflect.construct(Foo, [], Baz); // => undefined (incorrect) -``` - -## Installation - -```sh -npm install --save-dev @babel/plugin-transform-new-target -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["@babel/plugin-transform-new-target"] -} -``` - -### Via CLI - -```sh -babel --plugins @babel/plugin-transform-new-target script.js -``` - -### Via Node API - -```javascript -require("@babel/core").transform("code", { - plugins: ["@babel/plugin-transform-new-target"] -}); -``` diff --git a/node_modules/@babel/plugin-transform-new-target/lib/index.js b/node_modules/@babel/plugin-transform-new-target/lib/index.js deleted file mode 100644 index c8491997..00000000 --- a/node_modules/@babel/plugin-transform-new-target/lib/index.js +++ /dev/null @@ -1,89 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = void 0; - -function _helperPluginUtils() { - const data = require("@babel/helper-plugin-utils"); - - _helperPluginUtils = function _helperPluginUtils() { - return data; - }; - - return data; -} - -function _core() { - const data = require("@babel/core"); - - _core = function _core() { - return data; - }; - - return data; -} - -var _default = (0, _helperPluginUtils().declare)(api => { - api.assertVersion(7); - return { - name: "transform-new-target", - visitor: { - MetaProperty(path) { - const meta = path.get("meta"); - const property = path.get("property"); - const scope = path.scope; - - if (meta.isIdentifier({ - name: "new" - }) && property.isIdentifier({ - name: "target" - })) { - const func = path.findParent(path => { - if (path.isClass()) return true; - - if (path.isFunction() && !path.isArrowFunctionExpression()) { - if (path.isClassMethod({ - kind: "constructor" - })) { - return false; - } - - return true; - } - - return false; - }); - - if (!func) { - throw path.buildCodeFrameError("new.target must be under a (non-arrow) function or a class."); - } - - const node = func.node; - - if (!node.id) { - if (func.isMethod()) { - path.replaceWith(scope.buildUndefinedNode()); - return; - } - - node.id = scope.generateUidIdentifier("target"); - } - - const constructor = _core().types.memberExpression(_core().types.thisExpression(), _core().types.identifier("constructor")); - - if (func.isClass()) { - path.replaceWith(constructor); - return; - } - - path.replaceWith(_core().types.conditionalExpression(_core().types.binaryExpression("instanceof", _core().types.thisExpression(), _core().types.cloneNode(node.id)), constructor, scope.buildUndefinedNode())); - } - } - - } - }; -}); - -exports.default = _default;
\ No newline at end of file diff --git a/node_modules/@babel/plugin-transform-new-target/package.json b/node_modules/@babel/plugin-transform-new-target/package.json deleted file mode 100644 index b5cbf22d..00000000 --- a/node_modules/@babel/plugin-transform-new-target/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@babel/plugin-transform-new-target", - "version": "7.0.0-beta.47", - "description": "Transforms new.target meta property", - "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-new-target", - "license": "MIT", - "main": "lib/index.js", - "keywords": [ - "babel-plugin" - ], - "dependencies": { - "@babel/helper-plugin-utils": "7.0.0-beta.47" - }, - "peerDependencies": { - "@babel/core": "7.0.0-beta.47" - }, - "devDependencies": { - "@babel/core": "7.0.0-beta.47", - "@babel/helper-plugin-test-runner": "7.0.0-beta.47", - "@babel/plugin-proposal-class-properties": "7.0.0-beta.47", - "@babel/plugin-transform-arrow-functions": "7.0.0-beta.47" - } -} |
