all files / firebase/modules/firestore/ Path.js

80% Statements 12/15
62.5% Branches 5/8
100% Functions 8/8
80% Lines 12/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60                        3765×       10× 10×           754×       686×       2234×       1440×                           2319×   2319×     2319×      
/**
 * @flow
 * Path representation wrapper
 */
 
/**
 * @class Path
 */
export default class Path {
  _parts: string[];
 
  constructor(pathComponents: string[]) {
    this._parts = pathComponents;
  }
 
  get id(): string | null {
    Eif (this._parts.length > 0) {
      return this._parts[this._parts.length - 1];
    }
    return null;
  }
 
  get isDocument(): boolean {
    return this._parts.length > 0 && this._parts.length % 2 === 0;
  }
 
  get isCollection(): boolean {
    return this._parts.length % 2 === 1;
  }
 
  get relativeName(): string {
    return this._parts.join('/');
  }
 
  child(relativePath: string): Path {
    return new Path(this._parts.concat(relativePath.split('/')));
  }
 
  parent(): Path | null {
    Iif (this._parts.length === 0) {
      return null;
    }
 
    return new Path(this._parts.slice(0, this._parts.length - 1));
  }
 
  /**
   *
   * @package
   */
  static fromName(name: string): Path {
    const parts = name.split('/');
 
    Iif (parts.length === 0) {
      return new Path([]);
    }
    return new Path(parts);
  }
}