forked from ungleich-public/cdist
		
	
		
			
	
	
		
			18 lines
		
	
	
	
		
			757 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			18 lines
		
	
	
	
		
			757 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								__typename /foo/bar # possible, usual use case
							 | 
						||
| 
								 | 
							
								require="__a//b" __typename /foo/bar # possible and happens often for __a/$id in loops
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__typename /foo/bar/ # trailing slash will be stripped, can be documented
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__typename /foo//bar//baz # // will be converted to / implicitly through fs; error prone; disallow
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require="__a//b//c" __typename # // will be converted to / implicitly through fs; error prone; disallow
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    1) allow require __a//b: type __a, object id /b
							 | 
						||
| 
								 | 
							
								        => strip first slash of object id, as we do in non-dep-mode
							 | 
						||
| 
								 | 
							
								    2) allow _one_ trailing /: __type /foo/bar/ and require="__foo/abc/"
							 | 
						||
| 
								 | 
							
								        => strip one leading slash of object id
							 | 
						||
| 
								 | 
							
								    3) disallow // within object id
							 | 
						||
| 
								 | 
							
								    4) disallow starting or ending / after 1) and 2)
							 |