# All files / util assert.ts

100% Statements 9/9
100% Branches 2/2
100% Functions 2/2
100% Lines 9/9

    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

    2x

    2x

    2x

    6x
    6x

    6x

    2x
    1022705x
    5x

     /**
     * Copyright 2017 Google Inc.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */

    import { SDK_VERSION } from '../core/version';

    import { error } from './log';

    /**
     * Unconditionally fails, throwing an Error with the given message.
     *
     * Returns any so it can be used in expressions:
     * @example
     * let futureVar = fail('not implemented yet');
     */
    export function fail(failure: string): never {
      // Log the failure in addition to throw an exception, just in case the
      // exception is swallowed.
      const message =
        `FIRESTORE (${SDK_VERSION}) INTERNAL ASSERTION FAILED: ` + failure;
      error(message);

      // NOTE: We don't use FirestoreError here because these are internal failures
      // that cannot be handled by the user. (Also it would create a circular
      // dependency between the error and assert modules which doesn't work.)
      throw new Error(message);
    }

    /**
     * Fails if the given assertion condition is false, throwing an Error with the
     * given message if it did.
     */
    export function assert(assertion: boolean, message: string) {
      if (!assertion) {
        fail(message);
      }
    }