From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/@babel/traverse/lib/path/removal.js | 68 ++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 node_modules/@babel/traverse/lib/path/removal.js (limited to 'node_modules/@babel/traverse/lib/path/removal.js') diff --git a/node_modules/@babel/traverse/lib/path/removal.js b/node_modules/@babel/traverse/lib/path/removal.js new file mode 100644 index 00000000..9f4ba97b --- /dev/null +++ b/node_modules/@babel/traverse/lib/path/removal.js @@ -0,0 +1,68 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.remove = remove; +exports._removeFromScope = _removeFromScope; +exports._callRemovalHooks = _callRemovalHooks; +exports._remove = _remove; +exports._markRemoved = _markRemoved; +exports._assertUnremoved = _assertUnremoved; + +var _removalHooks = require("./lib/removal-hooks"); + +function remove() { + this._assertUnremoved(); + + this.resync(); + + this._removeFromScope(); + + if (this._callRemovalHooks()) { + this._markRemoved(); + + return; + } + + this.shareCommentsWithSiblings(); + + this._remove(); + + this._markRemoved(); +} + +function _removeFromScope() { + const bindings = this.getBindingIdentifiers(); + Object.keys(bindings).forEach(name => this.scope.removeBinding(name)); +} + +function _callRemovalHooks() { + var _arr = _removalHooks.hooks; + + for (var _i = 0; _i < _arr.length; _i++) { + const fn = _arr[_i]; + if (fn(this, this.parentPath)) return true; + } +} + +function _remove() { + if (Array.isArray(this.container)) { + this.container.splice(this.key, 1); + this.updateSiblingKeys(this.key, -1); + } else { + this._replaceWith(null); + } +} + +function _markRemoved() { + this.shouldSkip = true; + this.removed = true; + this.node = null; +} + +function _assertUnremoved() { + if (this.removed) { + throw this.buildCodeFrameError("NodePath has been removed so is read-only."); + } +} \ No newline at end of file -- cgit v1.2.3