34 lines
		
	
	
		
			536 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			536 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var result = require('./')();
 | |
| 
 | |
| var test = {
 | |
| 	__proto__: null,
 | |
| 	foo: {}
 | |
| };
 | |
| 
 | |
| var setter = require('./helpers/setDunder');
 | |
| 
 | |
| /** @type {import('./mutator')} */
 | |
| module.exports = function hasMutator() {
 | |
| 	if (!result) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	var obj = { __proto__: test };
 | |
| 	// @ts-expect-error: TS errors on an inherited property for some reason
 | |
| 	if (obj.foo !== test.foo) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	if (!setter) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	setter(obj, null);
 | |
| 	if ('foo' in obj || 'toString' in obj) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	return true;
 | |
| };
 |