Sfoglia il codice sorgente

[Firestore] Remove FirestoreSwift (#13085)

Nick Cooke 1 anno fa
parent
commit
cf1b9419ea
32 ha cambiato i file con 284 aggiunte e 472 eliminazioni
  1. 3 1
      .github/workflows/client_app.yml
  2. 0 9
      .github/workflows/firestore.yml
  3. 0 1
      CoreOnly/Tests/FirebasePodTest/FirebasePodTest/AppDelegate.swift
  4. 0 7
      Example/FirestoreSample/FirestoreSample.xcodeproj/project.pbxproj
  5. 0 1
      Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsAnimationView.swift
  6. 1 1
      Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsMappingErrorView.swift
  7. 1 1
      Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsMappingErrorView2.swift
  8. 0 1
      Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsNoAnimationsView.swift
  9. 0 1
      Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsView.swift
  10. 48 62
      FirebaseCombineSwift/Sources/Firestore/CollectionReference+Combine.swift
  11. 212 226
      FirebaseCombineSwift/Sources/Firestore/DocumentReference+Combine.swift
  12. 0 39
      FirebaseFirestoreSwift.podspec
  13. 0 30
      FirebaseFirestoreSwift/Sources/FirebaseFirestoreSwift.swift
  14. 6 6
      Firestore/Example/Firestore.xcodeproj/project.pbxproj
  15. 1 1
      Firestore/Swift/Source/Codable/DocumentID.swift
  16. 0 1
      Firestore/Swift/Tests/Codable/CodableGeoPointTests.swift
  17. 0 1
      Firestore/Swift/Tests/Codable/CodableTimestampTests.swift
  18. 0 1
      Firestore/Swift/Tests/Codable/ConditionalConformanceTests.swift
  19. 0 1
      Firestore/Swift/Tests/Codable/FirestoreEncoderTests.swift
  20. 0 1
      Firestore/Swift/Tests/Integration/AggregationIntegrationTests.swift
  21. 0 1
      Firestore/Swift/Tests/Integration/AsyncAwaitIntegrationTests.swift
  22. 1 2
      Firestore/Swift/Tests/Integration/CodableIntegrationTests.swift
  23. 0 1
      Firestore/Swift/Tests/Integration/IndexingTests.swift
  24. 0 1
      Firestore/Swift/Tests/Integration/QueryIntegrationTests.swift
  25. 0 1
      Firestore/Swift/Tests/Integration/SnapshotListenerSourceTests.swift
  26. 8 15
      IntegrationTesting/ClientApp/ClientApp.xcodeproj/project.pbxproj
  27. 0 1
      IntegrationTesting/ClientApp/Shared-iOS12+/swift-import-test.swift
  28. 0 21
      Package.swift
  29. 0 18
      SwiftPM-PlatformExclude/FirebaseFirestoreSwiftWrap/dummy.m
  30. 0 15
      SwiftPM-PlatformExclude/FirebaseFirestoreSwiftWrap/include/dummy.h
  31. 0 1
      SwiftPMTests/swift-test/all-imports.swift
  32. 3 3
      scripts/api_diff_report/icore_module.py

+ 3 - 1
.github/workflows/client_app.yml

@@ -30,7 +30,9 @@ jobs:
       matrix:
         #TODO(ncooke3): Add multi-platform support: tvOS, macOS, catalyst
         platform: [iOS]
-        scheme: [ClientApp, ClientApp-iOS13]
+        scheme: [ClientApp-iOS13]
+        # TODO(ncooke3): Re-enable after updating Firestore binary.
+        #scheme: [ClientApp, ClientApp-iOS13]
     steps:
       - uses: actions/checkout@v4
       - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126

+ 0 - 9
.github/workflows/firestore.yml

@@ -50,7 +50,6 @@ jobs:
               # Podspec
               - 'FirebaseFirestoreInternal.podspec'
               - 'FirebaseFirestore.podspec'
-              - 'FirebaseFirestoreSwift.podspec'
 
               # CMake
               - '**CMakeLists.txt'
@@ -462,8 +461,6 @@ jobs:
       run: scripts/setup_spm_tests.sh
     - name: iOS Build Test
       run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestore ${{ matrix.target }} spmbuildonly
-    - name: Swift Build
-      run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestoreSwift ${{ matrix.target }} spmbuildonly
 
   spm-binary:
     # Either a scheduled run from public repo, or a pull request with firestore changes.
@@ -481,8 +478,6 @@ jobs:
       run: scripts/setup_spm_tests.sh
     - name: iOS Build Test
       run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestore iOS spmbuildonly
-    - name: Swift Build
-      run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestoreSwift iOS spmbuildonly
 
   check-firestore-internal-public-headers:
     # Either a scheduled run from public repo, or a pull request with firestore changes.
@@ -534,8 +529,6 @@ jobs:
   #     run: scripts/setup_spm_tests.sh
   #   - name: Build Test - Binary
   #     run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestore ${{ matrix.target }} spmbuildonly
-  #   - name: Swift Build
-  #     run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestoreSwift ${{ matrix.target }} spmbuildonly
 
   spm-binary-cron:
     # Don't run on private repo.
@@ -553,8 +546,6 @@ jobs:
       run: scripts/setup_spm_tests.sh
     - name: Build Test - Binary
       run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestore ${{ matrix.target }} spmbuildonly
-    - name: Swift Build
-      run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestoreSwift ${{ matrix.target }} spmbuildonly
 
   # A job that fails if any required job in the test matrix fails,
   # to be used as a required check for merging.

+ 0 - 1
CoreOnly/Tests/FirebasePodTest/FirebasePodTest/AppDelegate.swift

@@ -16,7 +16,6 @@ import Firebase
 
 // Verify that the following Firebase Swift APIs can be found.
 import FirebaseAnalytics
-import FirebaseFirestoreSwift
 import FirebaseInAppMessaging
 import UIKit
 

+ 0 - 7
Example/FirestoreSample/FirestoreSample.xcodeproj/project.pbxproj

@@ -8,7 +8,6 @@
 
 /* Begin PBXBuildFile section */
 		8817084726B95A63009E9281 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 8817084626B95A63009E9281 /* FirebaseFirestore */; };
-		8817084926B95A63009E9281 /* FirebaseFirestoreSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 8817084826B95A63009E9281 /* FirebaseFirestoreSwift */; };
 		88327B8826D62908002AA6D9 /* FavouriteFruitsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88327B8726D62908002AA6D9 /* FavouriteFruitsView.swift */; };
 		8844BA6126E0DD3F000786F0 /* FavouriteFruitsMappingErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8844BA6026E0DD3F000786F0 /* FavouriteFruitsMappingErrorView.swift */; };
 		88D5E37826EBD2F200808AFF /* FavouriteFruitsMappingErrorView2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D5E37726EBD2F200808AFF /* FavouriteFruitsMappingErrorView2.swift */; };
@@ -44,7 +43,6 @@
 			files = (
 				8817084726B95A63009E9281 /* FirebaseFirestore in Frameworks */,
 				88D9354C2A39D72300FD8AFF /* FirebaseAuth in Frameworks */,
-				8817084926B95A63009E9281 /* FirebaseFirestoreSwift in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -143,7 +141,6 @@
 			name = FirestoreSample;
 			packageProductDependencies = (
 				8817084626B95A63009E9281 /* FirebaseFirestore */,
-				8817084826B95A63009E9281 /* FirebaseFirestoreSwift */,
 				88D9354B2A39D72300FD8AFF /* FirebaseAuth */,
 			);
 			productName = FirestoreSample;
@@ -418,10 +415,6 @@
 			isa = XCSwiftPackageProductDependency;
 			productName = FirebaseFirestore;
 		};
-		8817084826B95A63009E9281 /* FirebaseFirestoreSwift */ = {
-			isa = XCSwiftPackageProductDependency;
-			productName = FirebaseFirestoreSwift;
-		};
 		88D9354B2A39D72300FD8AFF /* FirebaseAuth */ = {
 			isa = XCSwiftPackageProductDependency;
 			productName = FirebaseAuth;

+ 0 - 1
Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsAnimationView.swift

@@ -13,7 +13,6 @@
 // limitations under the License.
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import SwiftUI
 
 private struct Fruit: Codable, Identifiable, Equatable {

+ 1 - 1
Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsMappingErrorView.swift

@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import FirebaseFirestoreSwift
+import FirebaseFirestore
 import SwiftUI
 
 private struct Fruit: Codable, Identifiable, Equatable {

+ 1 - 1
Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsMappingErrorView2.swift

@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import FirebaseFirestoreSwift
+import FirebaseFirestore
 import SwiftUI
 
 private struct Fruit: Codable, Identifiable, Equatable {

+ 0 - 1
Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsNoAnimationsView.swift

@@ -13,7 +13,6 @@
 // limitations under the License.
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import SwiftUI
 
 private struct Fruit: Codable, Identifiable, Equatable {

+ 0 - 1
Example/FirestoreSample/FirestoreSample/Views/FavouriteFruitsView.swift

@@ -13,7 +13,6 @@
 // limitations under the License.
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import SwiftUI
 
 private struct Fruit: Codable, Identifiable, Equatable {

+ 48 - 62
FirebaseCombineSwift/Sources/Firestore/CollectionReference+Combine.swift

@@ -12,77 +12,63 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#if canImport(Combine) && swift(>=5.0)
+import Combine
+import FirebaseFirestore
 
-  import Combine
-  import FirebaseFirestore
+@available(swift 5.0)
+@available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 6.0, *)
+public extension CollectionReference {
+  // MARK: - Adding Documents
 
-  #if canImport(FirebaseFirestoreSwift)
-
-    import FirebaseFirestoreSwift
-
-  #endif
-
-  @available(swift 5.0)
-  @available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 6.0, *)
-  public extension CollectionReference {
-    // MARK: - Adding Documents
+  /// Adds a new document to this collection with the specified data, assigning it a document ID
+  /// automatically.
+  ///
+  /// - Parameter data: A `Dictionary` containing the data for the new document.
+  /// - Returns: A publisher emitting a `DocumentReference` value once the document has been
+  ///            successfully written to the server. This publisher will not emit while the
+  ///            client is offline, though local changes will be visible immediately.
+  func addDocument(data: [String: Any])
+    -> Future<DocumentReference, Error> {
+    var reference: DocumentReference?
+    return Future { promise in
+      reference = self.addDocument(data: data) { error in
+        if let error {
+          promise(.failure(error))
+        } else if let reference {
+          promise(.success(reference))
+        }
+      }
+    }
+  }
 
-    /// Adds a new document to this collection with the specified data, assigning it a document ID
-    /// automatically.
-    ///
-    /// - Parameter data: A `Dictionary` containing the data for the new document.
-    /// - Returns: A publisher emitting a `DocumentReference` value once the document has been
-    ///            successfully written to the server. This publisher will not emit while the
-    ///            client is offline, though local changes will be visible immediately.
-    func addDocument(data: [String: Any])
-      -> Future<DocumentReference, Error> {
-      var reference: DocumentReference?
-      return Future { promise in
-        reference = self.addDocument(data: data) { error in
+  /// Adds a new document to this collection with the specified data, assigning it a document ID
+  /// automatically.
+  ///
+  /// - Parameters:
+  ///   - value: An instance of `Encodable` to be encoded to a document.
+  ///   - encoder: An encoder instance to use to run the encoding.
+  /// - Returns: A publisher emitting a `DocumentReference` value once the document has been
+  ///            successfully written to the server. This publisher will not emit while the
+  ///            client is offline, though local changes will be visible immediately.
+  func addDocument<T: Encodable>(from value: T,
+                                 encoder: Firestore.Encoder = Firestore
+                                   .Encoder()) -> Future<
+    DocumentReference,
+    Error
+  > {
+    var reference: DocumentReference?
+    return Future { promise in
+      do {
+        try reference = self.addDocument(from: value, encoder: encoder) { error in
           if let error {
             promise(.failure(error))
           } else if let reference {
             promise(.success(reference))
           }
         }
+      } catch {
+        promise(.failure(error))
       }
     }
-
-    #if canImport(FirebaseFirestoreSwift)
-
-      /// Adds a new document to this collection with the specified data, assigning it a document ID
-      /// automatically.
-      ///
-      /// - Parameters:
-      ///   - value: An instance of `Encodable` to be encoded to a document.
-      ///   - encoder: An encoder instance to use to run the encoding.
-      /// - Returns: A publisher emitting a `DocumentReference` value once the document has been
-      ///            successfully written to the server. This publisher will not emit while the
-      ///            client is offline, though local changes will be visible immediately.
-      func addDocument<T: Encodable>(from value: T,
-                                     encoder: Firestore.Encoder = Firestore
-                                       .Encoder()) -> Future<
-        DocumentReference,
-        Error
-      > {
-        var reference: DocumentReference?
-        return Future { promise in
-          do {
-            try reference = self.addDocument(from: value, encoder: encoder) { error in
-              if let error {
-                promise(.failure(error))
-              } else if let reference {
-                promise(.success(reference))
-              }
-            }
-          } catch {
-            promise(.failure(error))
-          }
-        }
-      }
-
-    #endif
   }
-
-#endif
+}

+ 212 - 226
FirebaseCombineSwift/Sources/Firestore/DocumentReference+Combine.swift

@@ -12,279 +12,265 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#if canImport(Combine) && swift(>=5.0)
+import Combine
+import FirebaseFirestore
 
-  import Combine
-  import FirebaseFirestore
+@available(swift 5.0)
+@available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 6.0, *)
+public extension DocumentReference {
+  // MARK: - Set Data
 
-  #if canImport(FirebaseFirestoreSwift)
-
-    import FirebaseFirestoreSwift
-
-  #endif
+  /// Overwrites the document referred to by this `DocumentReference`. If no document exists, it
+  /// is created. If a document already exists, it is overwritten.
+  ///
+  /// - Parameter documentData: A `Dictionary` containing the fields that make up the document to
+  ///   be written.
+  /// - Returns: A publisher emitting a `Void` value once the document has been successfully
+  ///   written to the server. This publisher will not emit while the client is offline, though
+  ///   local changes will be visible immediately.
+  func setData(_ documentData: [String: Any]) -> Future<Void, Error> {
+    Future { promise in
+      self.setData(documentData) { error in
+        if let error {
+          promise(.failure(error))
+        } else {
+          promise(.success(()))
+        }
+      }
+    }
+  }
 
-  @available(swift 5.0)
-  @available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 6.0, *)
-  public extension DocumentReference {
-    // MARK: - Set Data
+  /// Writes to the document referred to by this `DocumentReference`. If the document does not yet
+  /// exist, it will be created. If you pass `merge: true`, the provided data will be merged into
+  /// any existing document.
+  ///
+  /// - Parameters:
+  ///   - documentData: A `Dictionary` containing the fields that make up the document to be
+  ///   written.
+  ///   - merge: Whether to merge the provided data into any existing document.
+  /// - Returns: A publisher emitting a `Void` value once the document has been successfully
+  ///   written to the server. This publisher will not emit while the client is offline, though
+  ///   local changes will be visible immediately.
+  func setData(_ documentData: [String: Any], merge: Bool) -> Future<Void, Error> {
+    Future { promise in
+      self.setData(documentData, merge: merge) { error in
+        if let error {
+          promise(.failure(error))
+        } else {
+          promise(.success(()))
+        }
+      }
+    }
+  }
 
-    /// Overwrites the document referred to by this `DocumentReference`. If no document exists, it
-    /// is created. If a document already exists, it is overwritten.
-    ///
-    /// - Parameter documentData: A `Dictionary` containing the fields that make up the document to
-    ///   be written.
-    /// - Returns: A publisher emitting a `Void` value once the document has been successfully
-    ///   written to the server. This publisher will not emit while the client is offline, though
-    ///   local changes will be visible immediately.
-    func setData(_ documentData: [String: Any]) -> Future<Void, Error> {
-      Future { promise in
-        self.setData(documentData) { error in
-          if let error {
-            promise(.failure(error))
-          } else {
-            promise(.success(()))
-          }
+  /// Writes to the document referred to by this `DocumentReference` and only replace the fields
+  /// specified under `mergeFields`. Any field that is not specified in `mergeFields` is ignored
+  /// and remains untouched. If the document doesn't yet exist, this method creates it and then
+  /// sets the data.
+  ///
+  /// - Parameters:
+  ///   - documentData: A `Dictionary` containing the fields that make up the document to be
+  ///   written.
+  ///   - mergeFields: An `Array` that contains a list of `String` or `FieldPath` elements
+  ///   specifying which fields to merge. Fields can contain dots to reference nested fields
+  ///   within the document.
+  /// - Returns: A publisher emitting a `Void` value once the document has been successfully
+  ///   written to the server. This publisher will not emit while the client is offline, though
+  ///   local changes will be visible immediately.
+  func setData(_ documentData: [String: Any], mergeFields: [Any]) -> Future<Void, Error> {
+    Future { promise in
+      self.setData(documentData, mergeFields: mergeFields) { error in
+        if let error {
+          promise(.failure(error))
+        } else {
+          promise(.success(()))
         }
       }
     }
+  }
 
-    /// Writes to the document referred to by this `DocumentReference`. If the document does not yet
-    /// exist, it will be created. If you pass `merge: true`, the provided data will be merged into
-    /// any existing document.
-    ///
-    /// - Parameters:
-    ///   - documentData: A `Dictionary` containing the fields that make up the document to be
-    ///   written.
-    ///   - merge: Whether to merge the provided data into any existing document.
-    /// - Returns: A publisher emitting a `Void` value once the document has been successfully
-    ///   written to the server. This publisher will not emit while the client is offline, though
-    ///   local changes will be visible immediately.
-    func setData(_ documentData: [String: Any], merge: Bool) -> Future<Void, Error> {
-      Future { promise in
-        self.setData(documentData, merge: merge) { error in
+  /// Encodes an instance of `Encodable` and overwrites the encoded data to the document
+  ///  referred by this `DocumentReference`. If no document exists, it is created. If a
+  ///  document already exists, it is overwritten.
+  ///
+  /// - Parameters:
+  ///   - value: An instance of `Encodable` to be encoded to a document.
+  ///   - encoder: An encoder instance to use to run the encoding.
+  /// - Returns: A publisher emitting a `Void` value once the document has been successfully
+  ///   written to the server. This publisher will not emit while the client is offline, though
+  ///   local changes will be visible immediately.
+  func setData<T: Encodable>(from value: T,
+                             encoder: Firestore.Encoder = Firestore.Encoder()) -> Future<
+    Void,
+    Error
+  > {
+    Future { promise in
+      do {
+        try self.setData(from: value, encoder: encoder) { error in
           if let error {
             promise(.failure(error))
           } else {
             promise(.success(()))
           }
         }
+      } catch {
+        promise(.failure(error))
       }
     }
+  }
 
-    /// Writes to the document referred to by this `DocumentReference` and only replace the fields
-    /// specified under `mergeFields`. Any field that is not specified in `mergeFields` is ignored
-    /// and remains untouched. If the document doesn't yet exist, this method creates it and then
-    /// sets the data.
-    ///
-    /// - Parameters:
-    ///   - documentData: A `Dictionary` containing the fields that make up the document to be
-    ///   written.
-    ///   - mergeFields: An `Array` that contains a list of `String` or `FieldPath` elements
-    ///   specifying which fields to merge. Fields can contain dots to reference nested fields
-    ///   within the document.
-    /// - Returns: A publisher emitting a `Void` value once the document has been successfully
-    ///   written to the server. This publisher will not emit while the client is offline, though
-    ///   local changes will be visible immediately.
-    func setData(_ documentData: [String: Any], mergeFields: [Any]) -> Future<Void, Error> {
-      Future { promise in
-        self.setData(documentData, mergeFields: mergeFields) { error in
+  /// Encodes an instance of `Encodable` and overwrites the encoded data to the document
+  /// referred
+  ///  by this `DocumentReference`. If no document exists, it is created. If a document already
+  ///  exists, it is overwritten. If you pass `merge: true`, the provided Encodable will be
+  /// merged
+  ///   into any existing document.
+  ///
+  /// - Parameters:
+  ///   - value: An instance of `Encodable` to be encoded to a document.
+  ///   - merge: Whether to merge the provided data into any existing document.
+  ///   - encoder: An encoder instance to use to run the encoding.
+  /// - Returns: A publisher emitting a `Void` value once the document has been successfully
+  ///   written to the server. This publisher will not emit while the client is offline, though
+  ///   local changes will be visible immediately.
+  func setData<T: Encodable>(from value: T, merge: Bool,
+                             encoder: Firestore.Encoder = Firestore.Encoder()) -> Future<
+    Void,
+    Error
+  > {
+    Future { promise in
+      do {
+        try self.setData(from: value, merge: merge, encoder: encoder) { error in
           if let error {
             promise(.failure(error))
           } else {
             promise(.success(()))
           }
         }
+      } catch {
+        promise(.failure(error))
       }
     }
+  }
 
-    #if canImport(FirebaseFirestoreSwift)
-
-      /// Encodes an instance of `Encodable` and overwrites the encoded data to the document
-      ///  referred by this `DocumentReference`. If no document exists, it is created. If a
-      ///  document already exists, it is overwritten.
-      ///
-      /// - Parameters:
-      ///   - value: An instance of `Encodable` to be encoded to a document.
-      ///   - encoder: An encoder instance to use to run the encoding.
-      /// - Returns: A publisher emitting a `Void` value once the document has been successfully
-      ///   written to the server. This publisher will not emit while the client is offline, though
-      ///   local changes will be visible immediately.
-      func setData<T: Encodable>(from value: T,
-                                 encoder: Firestore.Encoder = Firestore.Encoder()) -> Future<
-        Void,
-        Error
-      > {
-        Future { promise in
-          do {
-            try self.setData(from: value, encoder: encoder) { error in
-              if let error {
-                promise(.failure(error))
-              } else {
-                promise(.success(()))
-              }
-            }
-          } catch {
-            promise(.failure(error))
-          }
-        }
-      }
-
-      /// Encodes an instance of `Encodable` and overwrites the encoded data to the document
-      /// referred
-      ///  by this `DocumentReference`. If no document exists, it is created. If a document already
-      ///  exists, it is overwritten. If you pass `merge: true`, the provided Encodable will be
-      /// merged
-      ///   into any existing document.
-      ///
-      /// - Parameters:
-      ///   - value: An instance of `Encodable` to be encoded to a document.
-      ///   - merge: Whether to merge the provided data into any existing document.
-      ///   - encoder: An encoder instance to use to run the encoding.
-      /// - Returns: A publisher emitting a `Void` value once the document has been successfully
-      ///   written to the server. This publisher will not emit while the client is offline, though
-      ///   local changes will be visible immediately.
-      func setData<T: Encodable>(from value: T, merge: Bool,
-                                 encoder: Firestore.Encoder = Firestore.Encoder()) -> Future<
-        Void,
-        Error
-      > {
-        Future { promise in
-          do {
-            try self.setData(from: value, merge: merge, encoder: encoder) { error in
-              if let error {
-                promise(.failure(error))
-              } else {
-                promise(.success(()))
-              }
-            }
-          } catch {
-            promise(.failure(error))
-          }
-        }
-      }
-
-      /// Encodes an instance of `Encodable` and writes the encoded data to the document referred by
-      /// this `DocumentReference` by only replacing the fields specified under mergeFields. Any
-      /// field
-      /// that is not specified in mergeFields is ignored and remains untouched. If the document
-      /// doesn’t yet exist, this method creates it and then sets the data.
-      ///
-      /// - Parameters:
-      ///   - value: An instance of `Encodable` to be encoded to a document.
-      ///   - mergeFields: An `Array` that contains a list of `String` or `FieldPath` elements
-      ///   specifying which fields to merge. Fields can contain dots to reference nested fields
-      ///   within the document.
-      ///   - encoder: An encoder instance to use to run the encoding.
-      /// - Returns: A publisher emitting a `Void` value once the document has been successfully
-      ///   written to the server. This publisher will not emit while the client is offline, though
-      ///   local changes will be visible immediately.
-      func setData<T: Encodable>(from value: T, mergeFields: [Any],
-                                 encoder: Firestore.Encoder = Firestore.Encoder()) -> Future<
-        Void,
-        Error
-      > {
-        Future { promise in
-          do {
-            try self.setData(from: value, mergeFields: mergeFields, encoder: encoder) { error in
-              if let error {
-                promise(.failure(error))
-              } else {
-                promise(.success(()))
-              }
-            }
-          } catch {
-            promise(.failure(error))
-          }
-        }
-      }
-
-    #endif
-
-    // MARK: - Update Data
-
-    /// Updates fields in the document referred to by this `DocumentReference`. If the document does
-    /// not exist, the update fails and the specified completion block receives an error.
-    ///
-    /// - Parameter documentData: A `Dictionary` containing the fields (expressed as a `String` or
-    ///   `FieldPath`) and values with which to update the document.
-    /// - Returns: A publisher emitting a `Void` when the update is complete. This block will only
-    ///   execute when the client is online and the commit has completed against the server. This
-    ///   publisher will not emit while the device is offline, though local changes will be visible
-    ///   immediately.
-    func updateData(_ documentData: [String: Any]) -> Future<Void, Error> {
-      Future { promise in
-        self.updateData(documentData) { error in
+  /// Encodes an instance of `Encodable` and writes the encoded data to the document referred by
+  /// this `DocumentReference` by only replacing the fields specified under mergeFields. Any
+  /// field
+  /// that is not specified in mergeFields is ignored and remains untouched. If the document
+  /// doesn’t yet exist, this method creates it and then sets the data.
+  ///
+  /// - Parameters:
+  ///   - value: An instance of `Encodable` to be encoded to a document.
+  ///   - mergeFields: An `Array` that contains a list of `String` or `FieldPath` elements
+  ///   specifying which fields to merge. Fields can contain dots to reference nested fields
+  ///   within the document.
+  ///   - encoder: An encoder instance to use to run the encoding.
+  /// - Returns: A publisher emitting a `Void` value once the document has been successfully
+  ///   written to the server. This publisher will not emit while the client is offline, though
+  ///   local changes will be visible immediately.
+  func setData<T: Encodable>(from value: T, mergeFields: [Any],
+                             encoder: Firestore.Encoder = Firestore.Encoder()) -> Future<
+    Void,
+    Error
+  > {
+    Future { promise in
+      do {
+        try self.setData(from: value, mergeFields: mergeFields, encoder: encoder) { error in
           if let error {
             promise(.failure(error))
           } else {
             promise(.success(()))
           }
         }
+      } catch {
+        promise(.failure(error))
       }
     }
+  }
 
-    // MARK: - Delete
+  // MARK: - Update Data
 
-    /// Deletes the document referred to by this `DocumentReference`.
-    ///
-    /// - Returns: A publisher emitting a `Void` when the document has been deleted from the server.
-    ///   This publisher will not emit while the device is offline, though local changes will be
-    ///   visible immediately.
-    func delete() -> Future<Void, Error> {
-      Future { promise in
-        self.delete { error in
-          if let error {
-            promise(.failure(error))
-          } else {
-            promise(.success(()))
-          }
+  /// Updates fields in the document referred to by this `DocumentReference`. If the document does
+  /// not exist, the update fails and the specified completion block receives an error.
+  ///
+  /// - Parameter documentData: A `Dictionary` containing the fields (expressed as a `String` or
+  ///   `FieldPath`) and values with which to update the document.
+  /// - Returns: A publisher emitting a `Void` when the update is complete. This block will only
+  ///   execute when the client is online and the commit has completed against the server. This
+  ///   publisher will not emit while the device is offline, though local changes will be visible
+  ///   immediately.
+  func updateData(_ documentData: [String: Any]) -> Future<Void, Error> {
+    Future { promise in
+      self.updateData(documentData) { error in
+        if let error {
+          promise(.failure(error))
+        } else {
+          promise(.success(()))
         }
       }
     }
+  }
 
-    // MARK: - Get Document
+  // MARK: - Delete
 
-    /// Reads the document referenced by this `DocumentReference`.
-    ///
-    /// - Parameter source: Indicates whether the results should be fetched from the cache only
-    ///  (`Source.cache`), the server only (`Source.server`), or to attempt the server and fall back
-    ///   to the cache (`Source.default`).
-    /// - Returns: A publisher emitting a `DocumentSnapshot` instance.
-    func getDocument(source: FirestoreSource = .default)
-      -> Future<DocumentSnapshot, Error> {
-      Future { promise in
-        self.getDocument(source: source) { snapshot, error in
-          if let error {
-            promise(.failure(error))
-          } else if let snapshot {
-            promise(.success(snapshot))
-          }
+  /// Deletes the document referred to by this `DocumentReference`.
+  ///
+  /// - Returns: A publisher emitting a `Void` when the document has been deleted from the server.
+  ///   This publisher will not emit while the device is offline, though local changes will be
+  ///   visible immediately.
+  func delete() -> Future<Void, Error> {
+    Future { promise in
+      self.delete { error in
+        if let error {
+          promise(.failure(error))
+        } else {
+          promise(.success(()))
         }
       }
     }
+  }
 
-    // MARK: - Snapshot Publisher
+  // MARK: - Get Document
 
-    /// Registers a publisher that publishes document snapshot changes.
-    ///
-    /// - Parameter includeMetadataChanges: Whether metadata-only changes (i.e. only
-    ///   `DocumentSnapshot.metadata` changed) should trigger snapshot events.
-    /// - Returns: A publisher emitting `DocumentSnapshot` instances.
-    func snapshotPublisher(includeMetadataChanges: Bool = false)
-      -> AnyPublisher<DocumentSnapshot, Error> {
-      let subject = PassthroughSubject<DocumentSnapshot, Error>()
-      let listenerHandle =
-        addSnapshotListener(includeMetadataChanges: includeMetadataChanges) { snapshot, error in
-          if let error {
-            subject.send(completion: .failure(error))
-          } else if let snapshot {
-            subject.send(snapshot)
-          }
+  /// Reads the document referenced by this `DocumentReference`.
+  ///
+  /// - Parameter source: Indicates whether the results should be fetched from the cache only
+  ///  (`Source.cache`), the server only (`Source.server`), or to attempt the server and fall back
+  ///   to the cache (`Source.default`).
+  /// - Returns: A publisher emitting a `DocumentSnapshot` instance.
+  func getDocument(source: FirestoreSource = .default)
+    -> Future<DocumentSnapshot, Error> {
+    Future { promise in
+      self.getDocument(source: source) { snapshot, error in
+        if let error {
+          promise(.failure(error))
+        } else if let snapshot {
+          promise(.success(snapshot))
         }
-      return subject
-        .handleEvents(receiveCancel: listenerHandle.remove)
-        .eraseToAnyPublisher()
+      }
     }
   }
 
-#endif
+  // MARK: - Snapshot Publisher
+
+  /// Registers a publisher that publishes document snapshot changes.
+  ///
+  /// - Parameter includeMetadataChanges: Whether metadata-only changes (i.e. only
+  ///   `DocumentSnapshot.metadata` changed) should trigger snapshot events.
+  /// - Returns: A publisher emitting `DocumentSnapshot` instances.
+  func snapshotPublisher(includeMetadataChanges: Bool = false)
+    -> AnyPublisher<DocumentSnapshot, Error> {
+    let subject = PassthroughSubject<DocumentSnapshot, Error>()
+    let listenerHandle =
+      addSnapshotListener(includeMetadataChanges: includeMetadataChanges) { snapshot, error in
+        if let error {
+          subject.send(completion: .failure(error))
+        } else if let snapshot {
+          subject.send(snapshot)
+        }
+      }
+    return subject
+      .handleEvents(receiveCancel: listenerHandle.remove)
+      .eraseToAnyPublisher()
+  }
+}

+ 0 - 39
FirebaseFirestoreSwift.podspec

@@ -1,39 +0,0 @@
-#
-# Be sure to run `pod lib lint FirebaseFirestoreSwift.podspec' to ensure this is a
-# valid spec before submitting.
-#
-
-Pod::Spec.new do |s|
-  s.name                    = 'FirebaseFirestoreSwift'
-  s.version                 = '10.19.0'
-  s.summary                 = 'Swift Extensions for Google Cloud Firestore'
-
-  s.description      = <<-DESC
-Google Cloud Firestore is a NoSQL document database built for automatic scaling, high performance, and ease of application development.
-                       DESC
-
-  s.homepage                = 'https://developers.google.com/'
-  s.license                 = { :type => 'Apache-2.0', :file => 'LICENSE' }
-  s.authors                 = 'Google, Inc.'
-
-  s.source                  = {
-    :git => 'https://github.com/Firebase/firebase-ios-sdk.git',
-    :tag => 'CocoaPods-' + s.version.to_s
-  }
-
-  s.swift_version           = '5.9'
-  s.ios.deployment_target   = '13.0'
-  s.osx.deployment_target   = '10.15'
-  s.tvos.deployment_target  = '13.0'
-
-  s.cocoapods_version       = '>= 1.12.0'
-  s.prefix_header_file      = false
-
-  s.requires_arc            = true
-  s.source_files = [
-    'FirebaseFirestoreSwift/Sources/FirebaseFirestoreSwift.swift'
-  ]
-
-  s.dependency 'FirebaseFirestore', '~> 10.17'
-
-end

+ 0 - 30
FirebaseFirestoreSwift/Sources/FirebaseFirestoreSwift.swift

@@ -1,30 +0,0 @@
-// Copyright 2023 Google LLC
-//
-// 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.
-
-#warning(
-  "All of the public API from `FirebaseFirestoreSwift` can now be accessed through the `FirebaseFirestore` module. Therefore, the `FirebaseFirestoreSwift` module is deprecated and will be removed in the future. See https://firebase.google.com/docs/ios/swift-migration for migration instructions."
-)
-
-// The `@_exported` is needed to prevent breaking clients that are using
-// types prefixed with the `FirebaseFirestoreSwift` namespace.
-@_exported import enum FirebaseFirestore.DecodingFailureStrategy
-@_exported import struct FirebaseFirestore.DocumentID
-@_exported import protocol FirebaseFirestore.DocumentIDWrappable
-@_exported import struct FirebaseFirestore.ExplicitNull
-@_exported import enum FirebaseFirestore.FirestoreDecodingError
-@_exported import enum FirebaseFirestore.FirestoreEncodingError
-@_exported import struct FirebaseFirestore.FirestoreQuery
-@_exported import enum FirebaseFirestore.QueryPredicate
-@_exported import struct FirebaseFirestore.ServerTimestamp
-@_exported import protocol FirebaseFirestore.ServerTimestampWrappable

+ 6 - 6
Firestore/Example/Firestore.xcodeproj/project.pbxproj

@@ -5899,13 +5899,13 @@
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = "";
-				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+				MACOSX_DEPLOYMENT_TARGET = 10.15;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_CFLAGS = "";
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = "1,2";
-				TVOS_DEPLOYMENT_TARGET = 12.0;
+				TVOS_DEPLOYMENT_TARGET = 13.0;
 			};
 			name = Debug;
 		};
@@ -5948,13 +5948,13 @@
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				HEADER_SEARCH_PATHS = "";
-				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+				MACOSX_DEPLOYMENT_TARGET = 10.15;
 				OTHER_CFLAGS = "";
 				SDKROOT = iphoneos;
 				SWIFT_COMPILATION_MODE = wholemodule;
 				TARGETED_DEVICE_FAMILY = "1,2";
-				TVOS_DEPLOYMENT_TARGET = 12.0;
+				TVOS_DEPLOYMENT_TARGET = 13.0;
 				VALIDATE_PRODUCT = YES;
 			};
 			name = Release;

+ 1 - 1
Firestore/Swift/Source/Codable/DocumentID.swift

@@ -127,7 +127,7 @@ public struct DocumentID<Value: DocumentIDWrappable & Codable>:
   private func logIgnoredValueWarning(value: Value) {
     FirebaseLogger.log(
       level: .warning,
-      service: "[FirebaseFirestoreSwift]",
+      service: "[FirebaseFirestore]",
       code: "I-FST000002",
       message: """
       Attempting to initialize or set a @DocumentID property with a non-nil \

+ 0 - 1
Firestore/Swift/Tests/Codable/CodableGeoPointTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 import XCTest
 

+ 0 - 1
Firestore/Swift/Tests/Codable/CodableTimestampTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 import XCTest
 

+ 0 - 1
Firestore/Swift/Tests/Codable/ConditionalConformanceTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 import XCTest
 

+ 0 - 1
Firestore/Swift/Tests/Codable/FirestoreEncoderTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 import XCTest
 

+ 0 - 1
Firestore/Swift/Tests/Integration/AggregationIntegrationTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 
 @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)

+ 0 - 1
Firestore/Swift/Tests/Integration/AsyncAwaitIntegrationTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 
 let emptyBundle = """

+ 1 - 2
Firestore/Swift/Tests/Integration/CodableIntegrationTests.swift

@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-import FirebaseFirestore
-@testable import FirebaseFirestoreSwift
+@testable import FirebaseFirestore
 import Foundation
 
 class CodableIntegrationTests: FSTIntegrationTestCase {

+ 0 - 1
Firestore/Swift/Tests/Integration/IndexingTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 
 class IndexingTests: FSTIntegrationTestCase {

+ 0 - 1
Firestore/Swift/Tests/Integration/QueryIntegrationTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 
 class QueryIntegrationTests: FSTIntegrationTestCase {

+ 0 - 1
Firestore/Swift/Tests/Integration/SnapshotListenerSourceTests.swift

@@ -15,7 +15,6 @@
  */
 
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import Foundation
 
 @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)

+ 8 - 15
IntegrationTesting/ClientApp/ClientApp.xcodeproj/project.pbxproj

@@ -38,7 +38,6 @@
 		EA7DF59929EF3326005664A7 /* FirebaseDynamicLinks in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = EA7DF59829EF3326005664A7 /* FirebaseDynamicLinks */; };
 		EA7DF59B29EF3326005664A7 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59A29EF3326005664A7 /* FirebaseFirestore */; };
 		EA7DF59D29EF3326005664A7 /* FirebaseFirestoreCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59C29EF3326005664A7 /* FirebaseFirestoreCombine-Community */; };
-		EA7DF59F29EF3327005664A7 /* FirebaseFirestoreSwift in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59E29EF3327005664A7 /* FirebaseFirestoreSwift */; };
 		EA7DF5A129EF3327005664A7 /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5A029EF3327005664A7 /* FirebaseFunctions */; };
 		EA7DF5A329EF3327005664A7 /* FirebaseFunctionsCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5A229EF3327005664A7 /* FirebaseFunctionsCombine-Community */; };
 		EA7DF5A529EF3327005664A7 /* FirebaseInAppMessaging-Beta in Frameworks */ = {isa = PBXBuildFile; platformFilters = (ios, maccatalyst, tvos, ); productRef = EA7DF5A429EF3327005664A7 /* FirebaseInAppMessaging-Beta */; };
@@ -98,7 +97,6 @@
 				EA7DF59B29EF3326005664A7 /* FirebaseFirestore in Frameworks */,
 				EA0BC0FF29F06D5B005B8AEE /* FirebaseAnalyticsOnDeviceConversion in Frameworks */,
 				EA7DF58329EF3326005664A7 /* FirebaseAnalytics in Frameworks */,
-				EA7DF59F29EF3327005664A7 /* FirebaseFirestoreSwift in Frameworks */,
 				EA7DF5AD29EF3327005664A7 /* FirebaseMLModelDownloader in Frameworks */,
 				EA7DF58B29EF3326005664A7 /* FirebaseAppCheck in Frameworks */,
 				EA7DF58929EF3326005664A7 /* FirebaseAnalyticsWithoutAdIdSupport in Frameworks */,
@@ -312,7 +310,6 @@
 				EA7DF59829EF3326005664A7 /* FirebaseDynamicLinks */,
 				EA7DF59A29EF3326005664A7 /* FirebaseFirestore */,
 				EA7DF59C29EF3326005664A7 /* FirebaseFirestoreCombine-Community */,
-				EA7DF59E29EF3327005664A7 /* FirebaseFirestoreSwift */,
 				EA7DF5A029EF3327005664A7 /* FirebaseFunctions */,
 				EA7DF5A229EF3327005664A7 /* FirebaseFunctionsCombine-Community */,
 				EA7DF5A429EF3327005664A7 /* FirebaseInAppMessaging-Beta */,
@@ -659,7 +656,7 @@
 				"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
 				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
 				MACOSX_DEPLOYMENT_TARGET = 10.13;
@@ -675,7 +672,7 @@
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2,3";
-				TVOS_DEPLOYMENT_TARGET = 12.0;
+				TVOS_DEPLOYMENT_TARGET = 13.0;
 			};
 			name = Debug;
 		};
@@ -702,7 +699,7 @@
 				"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
 				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
 				MACOSX_DEPLOYMENT_TARGET = 10.13;
@@ -717,7 +714,7 @@
 				SWIFT_EMIT_LOC_STRINGS = YES;
 				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2,3";
-				TVOS_DEPLOYMENT_TARGET = 12.0;
+				TVOS_DEPLOYMENT_TARGET = 13.0;
 			};
 			name = Release;
 		};
@@ -742,10 +739,10 @@
 				"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
 				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				MACOSX_DEPLOYMENT_TARGET = 10.15;
 				MARKETING_VERSION = 1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.ClientApp-CocoaPods";
 				PRODUCT_NAME = "$(TARGET_NAME)";
@@ -778,10 +775,10 @@
 				"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
 				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
 				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
-				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				MACOSX_DEPLOYMENT_TARGET = 10.15;
 				MARKETING_VERSION = 1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.ClientApp-CocoaPods";
 				PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1052,10 +1049,6 @@
 			isa = XCSwiftPackageProductDependency;
 			productName = "FirebaseFirestoreCombine-Community";
 		};
-		EA7DF59E29EF3327005664A7 /* FirebaseFirestoreSwift */ = {
-			isa = XCSwiftPackageProductDependency;
-			productName = FirebaseFirestoreSwift;
-		};
 		EA7DF5A029EF3327005664A7 /* FirebaseFunctions */ = {
 			isa = XCSwiftPackageProductDependency;
 			productName = FirebaseFunctions;

+ 0 - 1
IntegrationTesting/ClientApp/Shared-iOS12+/swift-import-test.swift

@@ -35,7 +35,6 @@ import FirebaseFirestore
 #if SWIFT_PACKAGE
   import FirebaseFirestoreCombineSwift
 #endif // SWIFT_PACKAGE
-import FirebaseFirestoreSwift
 import FirebaseFunctions
 #if SWIFT_PACKAGE
   import FirebaseFunctionsCombineSwift

+ 0 - 21
Package.swift

@@ -85,10 +85,6 @@ let package = Package(
       name: "FirebaseFirestore",
       targets: ["FirebaseFirestoreTarget"]
     ),
-    .library(
-      name: "FirebaseFirestoreSwift",
-      targets: ["FirebaseFirestoreSwiftTarget"]
-    ),
     .library(
       name: "FirebaseFunctions",
       targets: ["FirebaseFunctions"]
@@ -474,7 +470,6 @@ let package = Package(
       name: "FirebaseFirestoreCombineSwift",
       dependencies: [
         "FirebaseFirestoreTarget",
-        "FirebaseFirestoreSwift",
       ],
       path: "FirebaseCombineSwift/Sources/Firestore"
     ),
@@ -668,21 +663,6 @@ let package = Package(
     ),
 
     firestoreWrapperTarget(),
-    .target(
-      name: "FirebaseFirestoreSwiftTarget",
-      dependencies: [.target(name: "FirebaseFirestoreSwift",
-                             condition: .when(platforms: [.iOS, .macCatalyst, .tvOS, .macOS,
-                                                          .visionOS]))],
-      path: "SwiftPM-PlatformExclude/FirebaseFirestoreSwiftWrap"
-    ),
-
-    .target(
-      name: "FirebaseFirestoreSwift",
-      dependencies: [
-        "FirebaseFirestoreTarget",
-      ],
-      path: "FirebaseFirestoreSwift/Sources"
-    ),
 
     // MARK: - Firebase Functions
 
@@ -1178,7 +1158,6 @@ let package = Package(
         "FirebaseDatabase",
         "FirebaseDynamicLinks",
         "FirebaseFirestoreTarget",
-        "FirebaseFirestoreSwift",
         "FirebaseFunctions",
         .target(name: "FirebaseInAppMessaging",
                 condition: .when(platforms: [.iOS, .tvOS])),

+ 0 - 18
SwiftPM-PlatformExclude/FirebaseFirestoreSwiftWrap/dummy.m

@@ -1,18 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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 <TargetConditionals.h>
-#if TARGET_OS_WATCH
-#warning "Firebase FirestoreSwift does not support watchOS"
-#endif

+ 0 - 15
SwiftPM-PlatformExclude/FirebaseFirestoreSwiftWrap/include/dummy.h

@@ -1,15 +0,0 @@
-// Copyright 2020 Google LLC
-//
-// 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.
-
-// Prevent a missing umbrella header warning.

+ 0 - 1
SwiftPMTests/swift-test/all-imports.swift

@@ -25,7 +25,6 @@ import FirebaseCrashlytics
 import FirebaseDatabase
 import FirebaseDynamicLinks
 import FirebaseFirestore
-import FirebaseFirestoreSwift
 import FirebaseFunctions
 import FirebaseInstallations
 import FirebaseMessaging

+ 3 - 3
scripts/api_diff_report/icore_module.py

@@ -32,8 +32,8 @@ MODULE_LIST = [
     'FirebaseCrashlytics',
     'FirebaseDatabase',
     'FirebaseDynamicLinks',
+    'FirebaseFirestoreInternal',
     'FirebaseFirestore',
-    'FirebaseFirestoreSwift',
     'FirebaseFunctions',
     'FirebaseInAppMessaging'
     'FirebaseInstallations',
@@ -126,8 +126,8 @@ def get_root_dir(module_name, source_files):
     {module_name}/Sources or {module_name}/Source
     """
   MODULE_ROOT_PATCH = {
-      'FirebaseFirestore': 'Firestore/Source',
-      'FirebaseFirestoreSwift': 'Firestore/Swift/Source',
+      'FirebaseFirestoreInternal': 'Firestore/Source',
+      'FirebaseFirestore': 'Firestore/Swift/Source',
       'FirebaseCrashlytics': 'Crashlytics/Crashlytics',
   }
   if module_name in MODULE_ROOT_PATCH: