mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	formatApiPath / formatAssetPath - Implement smart functionality to detect double subpath (#2777)
Today we have two functions that wrap our paths with the subpath. Since all of our customers are hosted on a subpath, such as /eubb1001, we need to account for this path when building API paths and asset paths. These functions could be smarter, we could, for example detect if we have already added the base path and ignore it if it already exists. **This PR implements this and adds 2 capabilities:** 1. If there is list of paths that need to be joined and one is subset of another, it is removed. 2. All duplicate paths in the list are removed
This commit is contained in:
		
							parent
							
								
									340bcf1d1b
								
							
						
					
					
						commit
						d5e47ac352
					
				| @ -28,6 +28,7 @@ test('formatAssetPath', () => { | ||||
|     expect(formatAssetPath('/a', '/x')).toEqual('/x/a'); | ||||
|     expect(formatAssetPath('/a/', '/x/')).toEqual('/x/a'); | ||||
|     expect(formatAssetPath('a/b/', 'x/y/')).toEqual('/x/y/a/b'); | ||||
|     expect(formatAssetPath('x/y/', 'x/y/')).toEqual('/x/y'); | ||||
|     expect(formatAssetPath('//a//b//', '//x//y//')).toEqual('/x/y/a/b'); | ||||
| }); | ||||
| 
 | ||||
| @ -42,6 +43,7 @@ test('formatApiPath', () => { | ||||
|     expect(formatApiPath('/', '/')).toEqual(''); | ||||
|     expect(formatApiPath('a', 'x')).toEqual('/x/a'); | ||||
|     expect(formatApiPath('/a', '/x')).toEqual('/x/a'); | ||||
|     expect(formatApiPath('/a', '/x/a')).toEqual('/x/a'); | ||||
|     expect(formatApiPath('/a/', '/x/')).toEqual('/x/a'); | ||||
|     expect(formatApiPath('a/b/', 'x/y/')).toEqual('/x/y/a/b'); | ||||
|     expect(formatApiPath('//a//b//', '//x//y//')).toEqual('/x/y/a/b'); | ||||
|  | ||||
| @ -23,7 +23,14 @@ export const parseBasePath = (value = basePathMetaTagContent()): string => { | ||||
| 
 | ||||
| // Join paths with a leading separator and without a trailing separator.
 | ||||
| const joinPaths = (...paths: string[]): string => { | ||||
|     return ['', ...paths] | ||||
|     const filteredPaths = paths.filter(path => { | ||||
|         return !paths.some( | ||||
|             currentPath => currentPath !== path && currentPath.includes(path) | ||||
|         ); | ||||
|     }); | ||||
|     const uniquePaths = [...new Set(filteredPaths)]; | ||||
| 
 | ||||
|     return ['', ...uniquePaths] | ||||
|         .join('/') | ||||
|         .replace(/\/+$/g, '') // Remove trailing separators.
 | ||||
|         .replace(/\/+/g, '/'); // Collapse repeated separators.
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user