29 lines
		
	
	
	
		
			664 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			664 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable file
		
	
	
	
	
| const updateScripts = ({ content, originalContent = {} }) => {
 | |
|   const newScripts = content.scripts
 | |
| 
 | |
|   if (!newScripts) {
 | |
|     return originalContent
 | |
|   }
 | |
| 
 | |
|   // validate scripts content being appended
 | |
|   const hasInvalidScripts = () =>
 | |
|     Object.entries(newScripts)
 | |
|       .some(([key, value]) =>
 | |
|         typeof key !== 'string' || typeof value !== 'string')
 | |
|   if (hasInvalidScripts()) {
 | |
|     throw Object.assign(
 | |
|       new TypeError(
 | |
|         'package.json scripts should be a key-value pair of strings.'),
 | |
|       { code: 'ESCRIPTSINVALID' }
 | |
|     )
 | |
|   }
 | |
| 
 | |
|   return {
 | |
|     ...originalContent,
 | |
|     scripts: {
 | |
|       ...newScripts,
 | |
|     },
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = updateScripts
 |