Skip to content

Commit

Permalink
feat: add SPM support (#795)
Browse files Browse the repository at this point in the history
* feat: add SPM support

* wip

* fixes
  • Loading branch information
robingenz authored Jan 13, 2025
1 parent 73f3ca4 commit 0bffff0
Show file tree
Hide file tree
Showing 84 changed files with 697 additions and 447 deletions.
15 changes: 15 additions & 0 deletions .changeset/breezy-wasps-clean.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
'@capacitor-firebase/analytics': minor
'@capacitor-firebase/app': minor
'@capacitor-firebase/app-check': minor
'@capacitor-firebase/authentication': minor
'@capacitor-firebase/crashlytics': minor
'@capacitor-firebase/firestore': minor
'@capacitor-firebase/functions': minor
'@capacitor-firebase/messaging': minor
'@capacitor-firebase/performance': minor
'@capacitor-firebase/remote-config': minor
'@capacitor-firebase/storage': minor
---

feat: add SPM support
16 changes: 14 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
workflow_dispatch:

env:
NODE_VERSION: 18
NODE_VERSION: 20
JAVA_VERSION: 17

jobs:
Expand All @@ -35,8 +35,20 @@ jobs:
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Install dependencies
- name: Install Node.js dependencies
run: npm ci
- name: Install CocoaPods dependencies of packages affected by changes
if: github.ref != 'refs/heads/main'
run: npm run affected:ios:pod:install
- name: Install all CocoaPods dependencies
if: github.ref == 'refs/heads/main'
run: npm run ios:pod:install
- name: Install SPM dependencies of packages affected by changes
if: github.ref != 'refs/heads/main'
run: npm run affected:ios:spm:install
- name: Install all SPM dependencies
if: github.ref == 'refs/heads/main'
run: npm run ios:spm:install
- name: Build packages affected by changes
if: github.ref != 'refs/heads/main'
run: npm run affected:verify
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"docgen": "turbo run docgen",
"build": "turbo run build",
"ios:pod:install": "turbo run ios:pod:install --concurrency=1 --no-cache",
"ios:spm:install": "turbo run ios:spm:install --concurrency=1 --no-cache",
"affected:verify": "npm run affected:verify:android && npm run affected:verify:ios && npm run affected:verify:web",
"affected:verify:android": "turbo run verify:android --since=origin/main --concurrency=1 --no-cache",
"affected:verify:ios": "turbo run verify:ios --since=origin/main --concurrency=1 --no-cache",
Expand All @@ -23,6 +24,8 @@
"affected:fmt": "turbo run fmt --since=origin/main",
"affected:docgen": "turbo run docgen --since=origin/main",
"affected:build": "turbo run build --since=origin/main",
"affected:ios:pod:install": "turbo run ios:pod:install --since=origin/main --concurrency=1 --no-cache",
"affected:ios:spm:install": "turbo run ios:spm:install --since=origin/main --concurrency=1 --no-cache",
"changeset": "changeset",
"release": "npm run build && changeset publish",
"release:preview": "pkg-pr-new publish './packages/*'"
Expand Down
8 changes: 8 additions & 0 deletions packages/analytics/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down
31 changes: 31 additions & 0 deletions packages/analytics/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// swift-tools-version: 5.9
import PackageDescription

let package = Package(
name: "CapacitorFirebaseAnalytics",
platforms: [.iOS(.v13)],
products: [
.library(
name: "CapacitorFirebaseAnalytics",
targets: ["FirebaseAnalyticsPlugin"])
],
dependencies: [
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"),
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "11.0.0"))
],
targets: [
.target(
name: "FirebaseAnalyticsPlugin",
dependencies: [
.product(name: "Capacitor", package: "capacitor-swift-pm"),
.product(name: "Cordova", package: "capacitor-swift-pm"),
.product(name: "FirebaseAnalytics", package: "firebase-ios-sdk"),
.product(name: "FirebaseCore", package: "firebase-ios-sdk")
],
path: "ios/Sources/FirebaseAnalyticsPlugin"),
.testTarget(
name: "FirebaseAnalyticsPluginTests",
dependencies: ["FirebaseAnalyticsPlugin"],
path: "ios/Tests/FirebaseAnalyticsPluginTests")
]
)
4 changes: 2 additions & 2 deletions packages/analytics/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ This plugin will use the following project variables (defined in your app’s `v

### iOS

Add the `CapacitorFirebaseAnalytics/Analytics` pod to your `Podfile` (usually `ios/App/Podfile`):
If you are using **CocoaPods** for your iOS project, you need to add the `CapacitorFirebaseAnalytics/Analytics` pod to your `Podfile` (usually `ios/App/Podfile`):

```diff
target 'App' do
Expand All @@ -47,7 +47,7 @@ See [Disable Analytics data collection](https://firebase.google.com/docs/analyti

#### Disable IDFA collection

If you want to install Firebase without any IDFA collection capability, use the `CapacitorFirebaseAnalytics/AnalyticsWithoutAdIdSupport` pod in place of the `CapacitorFirebaseAnalytics/Analytics` pod:
If you are using **CocoaPods** for your iOS project and you want to disable IDFA collection, you can use the `CapacitorFirebaseAnalytics/AnalyticsWithoutAdIdSupport` pod instead of the `CapacitorFirebaseAnalytics/Analytics` pod:

```diff
target 'App' do
Expand Down
8 changes: 0 additions & 8 deletions packages/analytics/ios/Plugin.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
/* Begin PBXBuildFile section */
50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; };
50ADFF97201F53D600D50D53 /* FirebaseAppPluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* FirebaseAppPluginTests.swift */; };
50ADFF99201F53D600D50D53 /* FirebaseAnalyticsPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* FirebaseAnalyticsPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; };
50ADFFA82020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m */; };
50E1A94820377CB70090CE1A /* FirebaseAnalyticsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* FirebaseAnalyticsPlugin.swift */; };
53EE56AA2776D9AC371BFCC7 /* Pods_Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C7FD685DEF5EDF81FDB15B6 /* Pods_Plugin.framework */; };
7C7B6D8B27E1291F00CB649E /* FirebaseAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C7B6D8A27E1291F00CB649E /* FirebaseAnalytics.swift */; };
Expand All @@ -35,13 +33,11 @@
3C7FD685DEF5EDF81FDB15B6 /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4E9F9DDB2E99D3C74C8FF90E /* Pods-PluginTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.debug.xcconfig"; path = "Target Support Files/Pods-PluginTests/Pods-PluginTests.debug.xcconfig"; sourceTree = "<group>"; };
50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF8B201F53D600D50D53 /* FirebaseAnalyticsPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirebaseAnalyticsPlugin.h; sourceTree = "<group>"; };
50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF96201F53D600D50D53 /* FirebaseAppPluginTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAppPluginTests.swift; sourceTree = "<group>"; };
50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFFA72020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirebaseAnalyticsPlugin.m; sourceTree = "<group>"; };
50E1A94720377CB70090CE1A /* FirebaseAnalyticsPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseAnalyticsPlugin.swift; sourceTree = "<group>"; };
6BB8E29378BE344FBB163D08 /* Pods_PluginTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PluginTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7C7B6D8A27E1291F00CB649E /* FirebaseAnalytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAnalytics.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -97,8 +93,6 @@
50E1A94720377CB70090CE1A /* FirebaseAnalyticsPlugin.swift */,
7C7B6D8A27E1291F00CB649E /* FirebaseAnalytics.swift */,
7CA39F842BAD8E7A001D9491 /* FirebaseAnalyticsHelper.swift */,
50ADFF8B201F53D600D50D53 /* FirebaseAnalyticsPlugin.h */,
50ADFFA72020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m */,
50ADFF8C201F53D600D50D53 /* Info.plist */,
);
path = Plugin;
Expand Down Expand Up @@ -141,7 +135,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
50ADFF99201F53D600D50D53 /* FirebaseAnalyticsPlugin.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -332,7 +325,6 @@
7C7B6D8B27E1291F00CB649E /* FirebaseAnalytics.swift in Sources */,
7CA39F852BAD8E7A001D9491 /* FirebaseAnalyticsHelper.swift in Sources */,
50E1A94820377CB70090CE1A /* FirebaseAnalyticsPlugin.swift in Sources */,
50ADFFA82020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
10 changes: 0 additions & 10 deletions packages/analytics/ios/Plugin/FirebaseAnalyticsPlugin.h

This file was deleted.

17 changes: 0 additions & 17 deletions packages/analytics/ios/Plugin/FirebaseAnalyticsPlugin.m

This file was deleted.

16 changes: 15 additions & 1 deletion packages/analytics/ios/Plugin/FirebaseAnalyticsPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,21 @@ import FirebaseCore
* here: https://capacitorjs.com/docs/plugins/ios
*/
@objc(FirebaseAnalyticsPlugin)
public class FirebaseAnalyticsPlugin: CAPPlugin {
public class FirebaseAnalyticsPlugin: CAPPlugin, CAPBridgedPlugin {
public let identifier = "FirebaseAnalyticsPlugin"
public let jsName = "FirebaseAnalytics"
public let pluginMethods: [CAPPluginMethod] = [
CAPPluginMethod(name: "getAppInstanceId", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "setConsent", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "setUserId", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "setUserProperty", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "setCurrentScreen", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "logEvent", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "setSessionTimeoutDuration", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "setEnabled", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "isEnabled", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "resetAnalyticsData", returnType: CAPPluginReturnPromise),
]
public let errorUserIdMissing = "userId must be provided."
public let errorKeyMissing = "key must be provided."
public let errorValueMissing = "value must be provided."
Expand Down
4 changes: 3 additions & 1 deletion packages/analytics/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"android/build.gradle",
"dist/",
"ios/Plugin/",
"CapacitorFirebaseAnalytics.podspec"
"CapacitorFirebaseAnalytics.podspec",
"Package.swift"
],
"author": "Robin Genz <[email protected]>",
"license": "Apache-2.0",
Expand Down Expand Up @@ -53,6 +54,7 @@
"clean": "rimraf ./dist",
"watch": "tsc --watch",
"ios:pod:install": "cd ios && pod install --repo-update && cd ..",
"ios:spm:install": "cd ios && swift package resolve && cd ..",
"prepublishOnly": "npm run build"
},
"devDependencies": {
Expand Down
8 changes: 8 additions & 0 deletions packages/app-check/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down
31 changes: 31 additions & 0 deletions packages/app-check/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// swift-tools-version: 5.9
import PackageDescription

let package = Package(
name: "CapacitorFirebaseAppCheck",
platforms: [.iOS(.v13)],
products: [
.library(
name: "CapacitorFirebaseAppCheck",
targets: ["FirebaseAppCheckPlugin"])
],
dependencies: [
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"),
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "11.0.0"))
],
targets: [
.target(
name: "FirebaseAppCheckPlugin",
dependencies: [
.product(name: "Capacitor", package: "capacitor-swift-pm"),
.product(name: "Cordova", package: "capacitor-swift-pm"),
.product(name: "FirebaseAppCheck", package: "firebase-ios-sdk"),
.product(name: "FirebaseCore", package: "firebase-ios-sdk")
],
path: "ios/Sources/FirebaseAppCheckPlugin"),
.testTarget(
name: "FirebaseAppCheckPluginTests",
dependencies: ["FirebaseAppCheckPlugin"],
path: "ios/Tests/FirebaseAppCheckPluginTests")
]
)
8 changes: 0 additions & 8 deletions packages/app-check/ios/Plugin.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
2F98D68224C9AAE500613A4C /* FirebaseAppCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F98D68124C9AAE400613A4C /* FirebaseAppCheck.swift */; };
50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; };
50ADFF97201F53D600D50D53 /* FirebaseAppCheckPluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* FirebaseAppCheckPluginTests.swift */; };
50ADFF99201F53D600D50D53 /* FirebaseAppCheckPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* FirebaseAppCheckPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; };
50ADFFA82020EE4F00D50D53 /* FirebaseAppCheckPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* FirebaseAppCheckPlugin.m */; };
50E1A94820377CB70090CE1A /* FirebaseAppCheckPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* FirebaseAppCheckPlugin.swift */; };
7C7664AB2917181500B2C286 /* CustomAppCheckProviderFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C7664AA2917181500B2C286 /* CustomAppCheckProviderFactory.swift */; };
/* End PBXBuildFile section */
Expand All @@ -33,13 +31,11 @@
2F98D68124C9AAE400613A4C /* FirebaseAppCheck.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseAppCheck.swift; sourceTree = "<group>"; };
3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF8B201F53D600D50D53 /* FirebaseAppCheckPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirebaseAppCheckPlugin.h; sourceTree = "<group>"; };
50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF96201F53D600D50D53 /* FirebaseAppCheckPluginTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAppCheckPluginTests.swift; sourceTree = "<group>"; };
50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFFA72020EE4F00D50D53 /* FirebaseAppCheckPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirebaseAppCheckPlugin.m; sourceTree = "<group>"; };
50E1A94720377CB70090CE1A /* FirebaseAppCheckPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseAppCheckPlugin.swift; sourceTree = "<group>"; };
5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = "<group>"; };
7C7664AA2917181500B2C286 /* CustomAppCheckProviderFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomAppCheckProviderFactory.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -97,8 +93,6 @@
50E1A94720377CB70090CE1A /* FirebaseAppCheckPlugin.swift */,
2F98D68124C9AAE400613A4C /* FirebaseAppCheck.swift */,
7C7664AA2917181500B2C286 /* CustomAppCheckProviderFactory.swift */,
50ADFF8B201F53D600D50D53 /* FirebaseAppCheckPlugin.h */,
50ADFFA72020EE4F00D50D53 /* FirebaseAppCheckPlugin.m */,
50ADFF8C201F53D600D50D53 /* Info.plist */,
);
path = Plugin;
Expand Down Expand Up @@ -141,7 +135,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
50ADFF99201F53D600D50D53 /* FirebaseAppCheckPlugin.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -325,7 +318,6 @@
files = (
50E1A94820377CB70090CE1A /* FirebaseAppCheckPlugin.swift in Sources */,
2F98D68224C9AAE500613A4C /* FirebaseAppCheck.swift in Sources */,
50ADFFA82020EE4F00D50D53 /* FirebaseAppCheckPlugin.m in Sources */,
7C7664AB2917181500B2C286 /* CustomAppCheckProviderFactory.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
Loading

0 comments on commit 0bffff0

Please sign in to comment.