You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							29 lines
						
					
					
						
							661 B
						
					
					
				
			
		
		
	
	
							29 lines
						
					
					
						
							661 B
						
					
					
				| 'use strict';
 | |
| 
 | |
| const StrictModeError = require('../../error/strict');
 | |
| 
 | |
| module.exports = function handleImmutable(schematype, strict, obj, key, fullPath, ctx) {
 | |
|   if (schematype == null || !schematype.options || !schematype.options.immutable) {
 | |
|     return false;
 | |
|   }
 | |
|   let immutable = schematype.options.immutable;
 | |
| 
 | |
|   if (typeof immutable === 'function') {
 | |
|     immutable = immutable.call(ctx, ctx);
 | |
|   }
 | |
|   if (!immutable) {
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   if (strict === false) {
 | |
|     return false;
 | |
|   }
 | |
|   if (strict === 'throw') {
 | |
|     throw new StrictModeError(null,
 | |
|       `Field ${fullPath} is immutable and strict = 'throw'`);
 | |
|   }
 | |
| 
 | |
|   delete obj[key];
 | |
|   return true;
 | |
| };
 |