# All files / platform config.ts

80% Statements 12/15
100% Branches 0/0
66.67% Functions 2/3
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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81

    1x
    1x

    1x
    1x
    1x
    1x
    1x

    1x

    1x
    1x

    456x

    1x

     /**
     * 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 { FirebaseApp, FirebaseNamespace } from '@firebase/app-types';
    import { _FirebaseNamespace } from '@firebase/app-types/private';
    import { PublicBlob } from '../api/blob';
    import {
      Firestore,
      PublicCollectionReference,
      PublicDocumentReference,
      PublicDocumentSnapshot,
      PublicFirestore,
      PublicQuery,
      PublicQueryDocumentSnapshot,
      PublicQuerySnapshot,
      PublicTransaction,
      PublicWriteBatch
    } from '../api/database';
    import { FieldPath } from '../api/field_path';
    import { PublicFieldValue } from '../api/field_value';
    import { GeoPoint } from '../api/geo_point';
    import { Timestamp } from '../api/timestamp';
    import { shallowCopy } from '../util/obj';

    const firestoreNamespace = {
      Firestore: PublicFirestore,
      GeoPoint,
      Timestamp,
      Blob: PublicBlob,
      Transaction: PublicTransaction,
      WriteBatch: PublicWriteBatch,
      DocumentReference: PublicDocumentReference,
      DocumentSnapshot: PublicDocumentSnapshot,
      Query: PublicQuery,
      QueryDocumentSnapshot: PublicQueryDocumentSnapshot,
      QuerySnapshot: PublicQuerySnapshot,
      CollectionReference: PublicCollectionReference,
      FieldPath,
      FieldValue: PublicFieldValue,
      setLogLevel: Firestore.setLogLevel
    };

    /**
     * Configures Firestore as part of the Firebase SDK by calling registerService.
     */
    export function configureForFirebase(firebase: FirebaseNamespace): void {
      (firebase as _FirebaseNamespace).INTERNAL.registerService(
        'firestore',
        (app: FirebaseApp) => new Firestore(app),
        shallowCopy(firestoreNamespace)
      );
    }

    /**
     * Exports the Firestore namespace into the provided `exportObject` object under
     * the key 'firestore'. This is used for wrapped binary that exposes Firestore
     * as a goog module.
     */
    export function configureForStandalone(exportObject: {
      [key: string]: {};
    }): void {
      const copiedNamespace = shallowCopy(firestoreNamespace);
      // Unlike the use with Firebase, the standalone allows the use of the
      // constructor, so export it's internal class
      copiedNamespace['Firestore'] = Firestore;
      exportObject['firestore'] = copiedNamespace;
    }