65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								"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() {
							 | 
						||
| 
								 | 
							
								  for (const fn of _removalHooks.hooks) {
							 | 
						||
| 
								 | 
							
								    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.");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |