feat: docker compose maybe
This commit is contained in:
		
							
								
								
									
										49
									
								
								node_modules/is-reference/src/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								node_modules/is-reference/src/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
/** @typedef { import('estree').Node} Node */
 | 
			
		||||
/** @typedef {Node | {
 | 
			
		||||
 *   type: 'PropertyDefinition';
 | 
			
		||||
 *   computed: boolean;
 | 
			
		||||
 *   value: Node
 | 
			
		||||
 * }} NodeWithPropertyDefinition */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 * @param {NodeWithPropertyDefinition} node
 | 
			
		||||
 * @param {NodeWithPropertyDefinition} parent
 | 
			
		||||
 * @returns {boolean}
 | 
			
		||||
 */
 | 
			
		||||
export default function is_reference (node, parent) {
 | 
			
		||||
	if (node.type === 'MemberExpression') {
 | 
			
		||||
		return !node.computed && is_reference(node.object, node);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (node.type === 'Identifier') {
 | 
			
		||||
		if (!parent) return true;
 | 
			
		||||
 | 
			
		||||
		switch (parent.type) {
 | 
			
		||||
			// disregard `bar` in `foo.bar`
 | 
			
		||||
			case 'MemberExpression': return parent.computed || node === parent.object;
 | 
			
		||||
 | 
			
		||||
			// disregard the `foo` in `class {foo(){}}` but keep it in `class {[foo](){}}`
 | 
			
		||||
			case 'MethodDefinition': return parent.computed;
 | 
			
		||||
 | 
			
		||||
			// disregard the `foo` in `class {foo=bar}` but keep it in `class {[foo]=bar}` and `class {bar=foo}`
 | 
			
		||||
			case 'PropertyDefinition': return parent.computed || node === parent.value;
 | 
			
		||||
 | 
			
		||||
			// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`
 | 
			
		||||
			case 'Property': return parent.computed || node === parent.value;
 | 
			
		||||
 | 
			
		||||
			// disregard the `bar` in `export { foo as bar }` or
 | 
			
		||||
			// the foo in `import { foo as bar }`
 | 
			
		||||
			case 'ExportSpecifier':
 | 
			
		||||
			case 'ImportSpecifier': return node === parent.local;
 | 
			
		||||
 | 
			
		||||
			// disregard the `foo` in `foo: while (...) { ... break foo; ... continue foo;}`
 | 
			
		||||
			case 'LabeledStatement':
 | 
			
		||||
			case 'BreakStatement':
 | 
			
		||||
			case 'ContinueStatement': return false;
 | 
			
		||||
			default: return true;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user