You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  | //      createDeleter :: AttachmentsPath ->
 | 
					
						
							|  |  |  | //                       RelativePath ->
 | 
					
						
							|  |  |  | //                       IO Unit
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import path from 'path'; | 
					
						
							|  |  |  | import { isString } from 'lodash'; | 
					
						
							|  |  |  | import fse from 'fs-extra'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const createDeleter = (root: string) => { | 
					
						
							|  |  |  |   if (!isString(root)) { | 
					
						
							|  |  |  |     throw new TypeError("'root' must be a path"); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return async (relativePath: string) => { | 
					
						
							|  |  |  |     if (!isString(relativePath)) { | 
					
						
							|  |  |  |       throw new TypeError("'relativePath' must be a string"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const absolutePath = path.join(root, relativePath); | 
					
						
							|  |  |  |     const normalized = path.normalize(absolutePath); | 
					
						
							|  |  |  |     if (!normalized.startsWith(root)) { | 
					
						
							|  |  |  |       throw new Error('Invalid relative path'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     await fse.remove(absolutePath); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const PATH = 'attachments.noindex'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //      getPath :: AbsolutePath -> AbsolutePath
 | 
					
						
							|  |  |  | export const getAttachmentsPath = (userDataPath: string) => { | 
					
						
							|  |  |  |   if (!isString(userDataPath)) { | 
					
						
							|  |  |  |     throw new TypeError("'userDataPath' must be a string"); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   return path.join(userDataPath, PATH); | 
					
						
							|  |  |  | }; |