https://github.com/angular/angular
Raw File
Tip revision: 3beb7116afeb1c7899804f43b8cb78e374d1d5a8 authored by Kara Erickson on 08 August 2018, 18:00:23 UTC
release: cut the v6.1.2 release
Tip revision: 3beb711
FirebaseRedirect.ts
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]);
    }
  }
}
back to top