17 lines
		
	
	
		
			651 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			17 lines
		
	
	
		
			651 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import * as XRegExp from 'xregexp';
							 | 
						||
| 
								 | 
							
								import { FirebaseGlob } from './FirebaseGlob';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export class FirebaseRedirect {
							 | 
						||
| 
								 | 
							
								  glob = new FirebaseGlob(this.source);
							 | 
						||
| 
								 | 
							
								  constructor(public source: string, public destination: string) {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  replace(url: string) {
							 | 
						||
| 
								 | 
							
								    const match = this.glob.match(url);
							 | 
						||
| 
								 | 
							
								    if (match) {
							 | 
						||
| 
								 | 
							
								      const paramReplacers = Object.keys(this.glob.namedParams).map(name => [ XRegExp(`:${name}`, 'g'), match[name] ]);
							 | 
						||
| 
								 | 
							
								      const restReplacers = Object.keys(this.glob.restParams).map(name => [ XRegExp(`:${name}\\*`, 'g'), match[name] ]);
							 | 
						||
| 
								 | 
							
								      return XRegExp.replaceEach(this.destination, [...paramReplacers, ...restReplacers]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |