@react-native-firebase/auth 26.3.3 → 27.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/RNFBAuth.podspec +8 -2
  3. package/android/build.gradle +5 -0
  4. package/android/src/main/java/io/invertase/firebase/auth/AuthListenerHandle.java +26 -0
  5. package/android/src/main/java/io/invertase/firebase/auth/NativeRNFBTurboAuth.java +68 -102
  6. package/android/src/main/java/io/invertase/firebase/auth/RNFBAuthCacheRegistry.kt +77 -0
  7. package/android/src/main/java/io/invertase/firebase/auth/RNFBAuthListenerRegistry.kt +76 -0
  8. package/android/src/test/java/io/invertase/firebase/auth/RNFBAuthCacheRegistryTest.java +184 -0
  9. package/android/src/test/java/io/invertase/firebase/auth/RNFBAuthListenerRegistryTest.java +171 -0
  10. package/dist/module/ActionCodeURL.js +1 -1
  11. package/dist/module/ActionCodeURL.js.map +1 -1
  12. package/dist/module/index.js +1 -2
  13. package/dist/module/index.js.map +1 -1
  14. package/dist/module/version.js +1 -1
  15. package/dist/typescript/lib/ActionCodeURL.d.ts.map +1 -1
  16. package/dist/typescript/lib/types/internal.d.ts +2 -3
  17. package/dist/typescript/lib/types/internal.d.ts.map +1 -1
  18. package/dist/typescript/lib/version.d.ts +1 -1
  19. package/ios/RNFBAuth/RNFBAuthCacheRegistry.h +41 -0
  20. package/ios/RNFBAuth/RNFBAuthCacheRegistry.m +84 -0
  21. package/ios/RNFBAuth/RNFBAuthCacheRegistryStorage.swift +53 -0
  22. package/ios/RNFBAuth/RNFBAuthErrorCodeMapper.swift +333 -0
  23. package/ios/RNFBAuth/RNFBAuthHelper.m +147 -262
  24. package/ios/RNFBAuth/RNFBAuthListenerRegistry.h +39 -0
  25. package/ios/RNFBAuth/RNFBAuthListenerRegistry.m +83 -0
  26. package/ios/RNFBAuth/RNFBAuthListenerRegistryStorage.swift +76 -0
  27. package/ios/RNFBAuth/RNFBAuthNullSentinelDecoder.h +40 -0
  28. package/ios/RNFBAuth/RNFBAuthNullSentinelDecoder.m +49 -0
  29. package/ios/RNFBAuth.xcodeproj/project.pbxproj +22 -0
  30. package/ios/RNFBAuthUnitTests/RNFBAuthCacheRegistryStorageTests.swift +72 -0
  31. package/ios/RNFBAuthUnitTests/RNFBAuthCacheRegistryTests.m +131 -0
  32. package/ios/RNFBAuthUnitTests/RNFBAuthErrorCodeMapperTests.swift +250 -0
  33. package/ios/RNFBAuthUnitTests/RNFBAuthListenerRegistryStorageTests.swift +122 -0
  34. package/ios/RNFBAuthUnitTests/RNFBAuthListenerRegistryTests.m +152 -0
  35. package/ios/RNFBAuthUnitTests/RNFBAuthNullSentinelDecodeTests.m +78 -0
  36. package/ios/RNFBAuthUnitTests/RNFBAuthUnitTests.xcodeproj/project.pbxproj +311 -0
  37. package/ios/RNFBAuthUnitTests/RNFBAuthUnitTests.xcodeproj/xcshareddata/xcschemes/RNFBAuthUnitTests.xcscheme +69 -0
  38. package/lib/ActionCodeURL.ts +1 -2
  39. package/lib/index.ts +1 -1
  40. package/lib/types/internal.ts +2 -2
  41. package/lib/version.ts +1 -1
  42. package/package.json +5 -4
  43. package/plugin/build/index.js +4 -0
  44. package/plugin/build/ios/index.d.ts +2 -1
  45. package/plugin/build/ios/index.js +3 -1
  46. package/plugin/build/ios/openUrlFix.js +12 -0
  47. package/plugin/build/ios/sceneDelegate.d.ts +34 -0
  48. package/plugin/build/ios/sceneDelegate.js +127 -0
  49. package/plugin/build/ios/sceneLifecycle.d.ts +32 -0
  50. package/plugin/build/ios/sceneLifecycle.js +115 -0
  51. package/plugin/src/index.ts +9 -1
  52. package/plugin/src/ios/index.ts +2 -1
  53. package/plugin/src/ios/openUrlFix.ts +15 -0
  54. package/plugin/src/ios/sceneDelegate.ts +159 -0
  55. package/plugin/src/ios/sceneLifecycle.ts +134 -0
  56. package/plugin/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,311 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 56;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ A9000000000000000000000A /* RNFBHandleMap.m in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000008 /* RNFBHandleMap.m */; };
11
+ A9000000000000000000000B /* RNFBAuthListenerRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000018 /* RNFBAuthListenerRegistry.m */; };
12
+ A9000000000000000000000C /* RNFBAuthListenerRegistryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000009 /* RNFBAuthListenerRegistryTests.m */; };
13
+ A9000000000000000000001E /* RNFBAuthCacheRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = A9000000000000000000001C /* RNFBAuthCacheRegistry.m */; };
14
+ A9000000000000000000001F /* RNFBAuthCacheRegistryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A9000000000000000000001D /* RNFBAuthCacheRegistryTests.m */; };
15
+ A90000000000000000000030 /* RNFBNullSentinelDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000031 /* RNFBNullSentinelDecoding.swift */; };
16
+ A90000000000000000000032 /* RNFBAuthNullSentinelDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000033 /* RNFBAuthNullSentinelDecoder.m */; };
17
+ A90000000000000000000038 /* RNFBAuthNullSentinelDecodeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000039 /* RNFBAuthNullSentinelDecodeTests.m */; };
18
+ A90000000000000000000015 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A90000000000000000000014 /* XCTest.framework */; };
19
+ A90000000000000000000020 /* RNFBHandleMapStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000021 /* RNFBHandleMapStorage.swift */; };
20
+ A90000000000000000000022 /* RNFBAuthCacheRegistryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000023 /* RNFBAuthCacheRegistryStorage.swift */; };
21
+ A90000000000000000000024 /* RNFBAuthCacheRegistryStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000025 /* RNFBAuthCacheRegistryStorageTests.swift */; };
22
+ A90000000000000000000026 /* RNFBAuthListenerRegistryStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000027 /* RNFBAuthListenerRegistryStorage.swift */; };
23
+ A90000000000000000000028 /* RNFBAuthListenerRegistryStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90000000000000000000029 /* RNFBAuthListenerRegistryStorageTests.swift */; };
24
+ A9000000000000000000002A /* RNFBAuthErrorCodeMapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9000000000000000000002B /* RNFBAuthErrorCodeMapper.swift */; };
25
+ A9000000000000000000002C /* RNFBAuthErrorCodeMapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9000000000000000000002D /* RNFBAuthErrorCodeMapperTests.swift */; };
26
+ /* End PBXBuildFile section */
27
+
28
+ /* Begin PBXFileReference section */
29
+ A90000000000000000000003 /* RNFBAuthUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNFBAuthUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
30
+ A90000000000000000000007 /* RNFBHandleMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBHandleMap.h; path = ../../../app/ios/RNFBApp/RNFBHandleMap.h; sourceTree = SOURCE_ROOT; };
31
+ A90000000000000000000008 /* RNFBHandleMap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBHandleMap.m; path = ../../../app/ios/RNFBApp/RNFBHandleMap.m; sourceTree = SOURCE_ROOT; };
32
+ A90000000000000000000009 /* RNFBAuthListenerRegistryTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBAuthListenerRegistryTests.m; sourceTree = "<group>"; };
33
+ A90000000000000000000016 /* RNFBAuthListenerRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBAuthListenerRegistry.h; path = ../RNFBAuth/RNFBAuthListenerRegistry.h; sourceTree = SOURCE_ROOT; };
34
+ A90000000000000000000018 /* RNFBAuthListenerRegistry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBAuthListenerRegistry.m; path = ../RNFBAuth/RNFBAuthListenerRegistry.m; sourceTree = SOURCE_ROOT; };
35
+ A90000000000000000000019 /* RNFBAuthCacheRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBAuthCacheRegistry.h; path = ../RNFBAuth/RNFBAuthCacheRegistry.h; sourceTree = SOURCE_ROOT; };
36
+ A9000000000000000000001C /* RNFBAuthCacheRegistry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBAuthCacheRegistry.m; path = ../RNFBAuth/RNFBAuthCacheRegistry.m; sourceTree = SOURCE_ROOT; };
37
+ A9000000000000000000001D /* RNFBAuthCacheRegistryTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBAuthCacheRegistryTests.m; sourceTree = "<group>"; };
38
+ A90000000000000000000031 /* RNFBNullSentinelDecoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = RNFBNullSentinelDecoding.swift; path = ../../../app/ios/RNFBApp/RNFBNullSentinelDecoding.swift; sourceTree = SOURCE_ROOT; };
39
+ A90000000000000000000033 /* RNFBAuthNullSentinelDecoder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBAuthNullSentinelDecoder.m; path = ../RNFBAuth/RNFBAuthNullSentinelDecoder.m; sourceTree = SOURCE_ROOT; };
40
+ A9000000000000000000003B /* RNFBAuthNullSentinelDecoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBAuthNullSentinelDecoder.h; path = ../RNFBAuth/RNFBAuthNullSentinelDecoder.h; sourceTree = SOURCE_ROOT; };
41
+ A90000000000000000000039 /* RNFBAuthNullSentinelDecodeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBAuthNullSentinelDecodeTests.m; sourceTree = "<group>"; };
42
+ A90000000000000000000014 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
43
+ A90000000000000000000021 /* RNFBHandleMapStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = RNFBHandleMapStorage.swift; path = ../../../app/ios/RNFBApp/RNFBHandleMapStorage.swift; sourceTree = SOURCE_ROOT; };
44
+ A90000000000000000000023 /* RNFBAuthCacheRegistryStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = RNFBAuthCacheRegistryStorage.swift; path = ../RNFBAuth/RNFBAuthCacheRegistryStorage.swift; sourceTree = SOURCE_ROOT; };
45
+ A90000000000000000000025 /* RNFBAuthCacheRegistryStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNFBAuthCacheRegistryStorageTests.swift; sourceTree = "<group>"; };
46
+ A90000000000000000000027 /* RNFBAuthListenerRegistryStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = RNFBAuthListenerRegistryStorage.swift; path = ../RNFBAuth/RNFBAuthListenerRegistryStorage.swift; sourceTree = SOURCE_ROOT; };
47
+ A90000000000000000000029 /* RNFBAuthListenerRegistryStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNFBAuthListenerRegistryStorageTests.swift; sourceTree = "<group>"; };
48
+ A9000000000000000000002B /* RNFBAuthErrorCodeMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = RNFBAuthErrorCodeMapper.swift; path = ../RNFBAuth/RNFBAuthErrorCodeMapper.swift; sourceTree = SOURCE_ROOT; };
49
+ A9000000000000000000002D /* RNFBAuthErrorCodeMapperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNFBAuthErrorCodeMapperTests.swift; sourceTree = "<group>"; };
50
+ /* End PBXFileReference section */
51
+
52
+ /* Begin PBXFrameworksBuildPhase section */
53
+ A9000000000000000000000D /* Frameworks */ = {
54
+ isa = PBXFrameworksBuildPhase;
55
+ buildActionMask = 2147483647;
56
+ files = (
57
+ A90000000000000000000015 /* XCTest.framework in Frameworks */,
58
+ );
59
+ runOnlyForDeploymentPostprocessing = 0;
60
+ };
61
+ /* End PBXFrameworksBuildPhase section */
62
+
63
+ /* Begin PBXGroup section */
64
+ A90000000000000000000004 = {
65
+ isa = PBXGroup;
66
+ children = (
67
+ A90000000000000000000006 /* Sources */,
68
+ A90000000000000000000005 /* Products */,
69
+ );
70
+ sourceTree = "<group>";
71
+ };
72
+ A90000000000000000000005 /* Products */ = {
73
+ isa = PBXGroup;
74
+ children = (
75
+ A90000000000000000000003 /* RNFBAuthUnitTests.xctest */,
76
+ );
77
+ name = Products;
78
+ sourceTree = "<group>";
79
+ };
80
+ A90000000000000000000006 /* Sources */ = {
81
+ isa = PBXGroup;
82
+ children = (
83
+ A90000000000000000000007 /* RNFBHandleMap.h */,
84
+ A90000000000000000000008 /* RNFBHandleMap.m */,
85
+ A90000000000000000000021 /* RNFBHandleMapStorage.swift */,
86
+ A90000000000000000000016 /* RNFBAuthListenerRegistry.h */,
87
+ A90000000000000000000018 /* RNFBAuthListenerRegistry.m */,
88
+ A90000000000000000000027 /* RNFBAuthListenerRegistryStorage.swift */,
89
+ A90000000000000000000009 /* RNFBAuthListenerRegistryTests.m */,
90
+ A90000000000000000000029 /* RNFBAuthListenerRegistryStorageTests.swift */,
91
+ A90000000000000000000019 /* RNFBAuthCacheRegistry.h */,
92
+ A9000000000000000000001C /* RNFBAuthCacheRegistry.m */,
93
+ A90000000000000000000023 /* RNFBAuthCacheRegistryStorage.swift */,
94
+ A9000000000000000000001D /* RNFBAuthCacheRegistryTests.m */,
95
+ A90000000000000000000031 /* RNFBNullSentinelDecoding.swift */,
96
+ A9000000000000000000003B /* RNFBAuthNullSentinelDecoder.h */,
97
+ A90000000000000000000033 /* RNFBAuthNullSentinelDecoder.m */,
98
+ A90000000000000000000039 /* RNFBAuthNullSentinelDecodeTests.m */,
99
+ A90000000000000000000025 /* RNFBAuthCacheRegistryStorageTests.swift */,
100
+ A9000000000000000000002B /* RNFBAuthErrorCodeMapper.swift */,
101
+ A9000000000000000000002D /* RNFBAuthErrorCodeMapperTests.swift */,
102
+ );
103
+ name = Sources;
104
+ sourceTree = "<group>";
105
+ };
106
+ /* End PBXGroup section */
107
+
108
+ /* Begin PBXNativeTarget section */
109
+ A90000000000000000000002 /* RNFBAuthUnitTests */ = {
110
+ isa = PBXNativeTarget;
111
+ buildConfigurationList = A90000000000000000000013 /* Build configuration list for PBXNativeTarget "RNFBAuthUnitTests" */;
112
+ buildPhases = (
113
+ A9000000000000000000000E /* Sources */,
114
+ A9000000000000000000000D /* Frameworks */,
115
+ );
116
+ buildRules = (
117
+ );
118
+ dependencies = (
119
+ );
120
+ name = RNFBAuthUnitTests;
121
+ productName = RNFBAuthUnitTests;
122
+ productReference = A90000000000000000000003 /* RNFBAuthUnitTests.xctest */;
123
+ productType = "com.apple.product-type.bundle.unit-test";
124
+ };
125
+ /* End PBXNativeTarget section */
126
+
127
+ /* Begin PBXProject section */
128
+ A90000000000000000000001 /* Project object */ = {
129
+ isa = PBXProject;
130
+ attributes = {
131
+ BuildIndependentTargetsInParallel = 1;
132
+ LastUpgradeCheck = 2600;
133
+ ORGANIZATIONNAME = Invertase;
134
+ TargetAttributes = {
135
+ A90000000000000000000002 = {
136
+ CreatedOnToolsVersion = 26.0;
137
+ };
138
+ };
139
+ };
140
+ buildConfigurationList = A90000000000000000000012 /* Build configuration list for PBXProject "RNFBAuthUnitTests" */;
141
+ compatibilityVersion = "Xcode 14.0";
142
+ developmentRegion = en;
143
+ hasScannedForEncodings = 0;
144
+ knownRegions = (
145
+ en,
146
+ Base,
147
+ );
148
+ mainGroup = A90000000000000000000004;
149
+ productRefGroup = A90000000000000000000005 /* Products */;
150
+ projectDirPath = "";
151
+ projectRoot = "";
152
+ targets = (
153
+ A90000000000000000000002 /* RNFBAuthUnitTests */,
154
+ );
155
+ };
156
+ /* End PBXProject section */
157
+
158
+ /* Begin PBXSourcesBuildPhase section */
159
+ A9000000000000000000000E /* Sources */ = {
160
+ isa = PBXSourcesBuildPhase;
161
+ buildActionMask = 2147483647;
162
+ files = (
163
+ A9000000000000000000000A /* RNFBHandleMap.m in Sources */,
164
+ A90000000000000000000020 /* RNFBHandleMapStorage.swift in Sources */,
165
+ A9000000000000000000000B /* RNFBAuthListenerRegistry.m in Sources */,
166
+ A90000000000000000000026 /* RNFBAuthListenerRegistryStorage.swift in Sources */,
167
+ A9000000000000000000000C /* RNFBAuthListenerRegistryTests.m in Sources */,
168
+ A90000000000000000000028 /* RNFBAuthListenerRegistryStorageTests.swift in Sources */,
169
+ A9000000000000000000001E /* RNFBAuthCacheRegistry.m in Sources */,
170
+ A90000000000000000000022 /* RNFBAuthCacheRegistryStorage.swift in Sources */,
171
+ A9000000000000000000001F /* RNFBAuthCacheRegistryTests.m in Sources */,
172
+ A90000000000000000000030 /* RNFBNullSentinelDecoding.swift in Sources */,
173
+ A90000000000000000000032 /* RNFBAuthNullSentinelDecoder.m in Sources */,
174
+ A90000000000000000000038 /* RNFBAuthNullSentinelDecodeTests.m in Sources */,
175
+ A90000000000000000000024 /* RNFBAuthCacheRegistryStorageTests.swift in Sources */,
176
+ A9000000000000000000002A /* RNFBAuthErrorCodeMapper.swift in Sources */,
177
+ A9000000000000000000002C /* RNFBAuthErrorCodeMapperTests.swift in Sources */,
178
+ );
179
+ runOnlyForDeploymentPostprocessing = 0;
180
+ };
181
+ /* End PBXSourcesBuildPhase section */
182
+
183
+ /* Begin XCBuildConfiguration section */
184
+ A9000000000000000000001A /* Debug */ = {
185
+ isa = XCBuildConfiguration;
186
+ buildSettings = {
187
+ ALWAYS_SEARCH_USER_PATHS = NO;
188
+ CLANG_ENABLE_MODULES = YES;
189
+ CLANG_ENABLE_OBJC_ARC = YES;
190
+ COPY_PHASE_STRIP = NO;
191
+ DEBUG_INFORMATION_FORMAT = dwarf;
192
+ ENABLE_TESTABILITY = YES;
193
+ GCC_C_LANGUAGE_STANDARD = gnu17;
194
+ GCC_DYNAMIC_NO_PIC = NO;
195
+ GCC_OPTIMIZATION_LEVEL = 0;
196
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
197
+ ONLY_ACTIVE_ARCH = YES;
198
+ SDKROOT = macosx;
199
+ SUPPORTED_PLATFORMS = macosx;
200
+ };
201
+ name = Debug;
202
+ };
203
+ A9000000000000000000001B /* Release */ = {
204
+ isa = XCBuildConfiguration;
205
+ buildSettings = {
206
+ ALWAYS_SEARCH_USER_PATHS = NO;
207
+ CLANG_ENABLE_MODULES = YES;
208
+ CLANG_ENABLE_OBJC_ARC = YES;
209
+ COPY_PHASE_STRIP = YES;
210
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
211
+ GCC_C_LANGUAGE_STANDARD = gnu17;
212
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
213
+ SDKROOT = macosx;
214
+ SUPPORTED_PLATFORMS = macosx;
215
+ };
216
+ name = Release;
217
+ };
218
+ A90000000000000000000010 /* Debug */ = {
219
+ isa = XCBuildConfiguration;
220
+ buildSettings = {
221
+ CLANG_ENABLE_CODE_COVERAGE = YES;
222
+ CODE_SIGNING_ALLOWED = NO;
223
+ CODE_SIGNING_REQUIRED = NO;
224
+ CODE_SIGN_IDENTITY = "-";
225
+ COMBINE_HIDPI_IMAGES = YES;
226
+ DEFINES_MODULE = YES;
227
+ GENERATE_INFOPLIST_FILE = YES;
228
+ HEADER_SEARCH_PATHS = (
229
+ "$(SRCROOT)",
230
+ "$(SRCROOT)/../../../app/ios",
231
+ "$(SRCROOT)/../../../app/ios/RNFBApp",
232
+ "$(SRCROOT)/../RNFBAuth",
233
+ );
234
+ LD_RUNPATH_SEARCH_PATHS = (
235
+ "$(inherited)",
236
+ "@executable_path/../Frameworks",
237
+ "@loader_path/../Frameworks",
238
+ );
239
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
240
+ OTHER_CFLAGS = (
241
+ "-fprofile-instr-generate",
242
+ "-fcoverage-mapping",
243
+ );
244
+ OTHER_LDFLAGS = (
245
+ "-fprofile-instr-generate",
246
+ );
247
+ PRODUCT_BUNDLE_IDENTIFIER = io.invertase.firebase.RNFBAuthUnitTests;
248
+ PRODUCT_NAME = "$(TARGET_NAME)";
249
+ SDKROOT = macosx;
250
+ SUPPORTED_PLATFORMS = macosx;
251
+ SWIFT_OBJC_INTERFACE_HEADER_NAME = "RNFBHandleMapStorage-Swift.inc";
252
+ SWIFT_VERSION = 5.10;
253
+ };
254
+ name = Debug;
255
+ };
256
+ A90000000000000000000011 /* Release */ = {
257
+ isa = XCBuildConfiguration;
258
+ buildSettings = {
259
+ CLANG_ENABLE_CODE_COVERAGE = YES;
260
+ CODE_SIGNING_ALLOWED = NO;
261
+ CODE_SIGNING_REQUIRED = NO;
262
+ CODE_SIGN_IDENTITY = "-";
263
+ COMBINE_HIDPI_IMAGES = YES;
264
+ DEFINES_MODULE = YES;
265
+ GENERATE_INFOPLIST_FILE = YES;
266
+ HEADER_SEARCH_PATHS = (
267
+ "$(SRCROOT)",
268
+ "$(SRCROOT)/../../../app/ios",
269
+ "$(SRCROOT)/../../../app/ios/RNFBApp",
270
+ "$(SRCROOT)/../RNFBAuth",
271
+ );
272
+ LD_RUNPATH_SEARCH_PATHS = (
273
+ "$(inherited)",
274
+ "@executable_path/../Frameworks",
275
+ "@loader_path/../Frameworks",
276
+ );
277
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
278
+ PRODUCT_BUNDLE_IDENTIFIER = io.invertase.firebase.RNFBAuthUnitTests;
279
+ PRODUCT_NAME = "$(TARGET_NAME)";
280
+ SDKROOT = macosx;
281
+ SUPPORTED_PLATFORMS = macosx;
282
+ SWIFT_OBJC_INTERFACE_HEADER_NAME = "RNFBHandleMapStorage-Swift.inc";
283
+ SWIFT_VERSION = 5.10;
284
+ };
285
+ name = Release;
286
+ };
287
+ /* End XCBuildConfiguration section */
288
+
289
+ /* Begin XCConfigurationList section */
290
+ A90000000000000000000012 /* Build configuration list for PBXProject "RNFBAuthUnitTests" */ = {
291
+ isa = XCConfigurationList;
292
+ buildConfigurations = (
293
+ A9000000000000000000001A /* Debug */,
294
+ A9000000000000000000001B /* Release */,
295
+ );
296
+ defaultConfigurationIsVisible = 0;
297
+ defaultConfigurationName = Debug;
298
+ };
299
+ A90000000000000000000013 /* Build configuration list for PBXNativeTarget "RNFBAuthUnitTests" */ = {
300
+ isa = XCConfigurationList;
301
+ buildConfigurations = (
302
+ A90000000000000000000010 /* Debug */,
303
+ A90000000000000000000011 /* Release */,
304
+ );
305
+ defaultConfigurationIsVisible = 0;
306
+ defaultConfigurationName = Debug;
307
+ };
308
+ /* End XCConfigurationList section */
309
+ };
310
+ rootObject = A90000000000000000000001 /* Project object */;
311
+ }
@@ -0,0 +1,69 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Scheme
3
+ LastUpgradeVersion = "2600"
4
+ version = "1.7">
5
+ <BuildAction
6
+ parallelizeBuildables = "YES"
7
+ buildImplicitDependencies = "YES">
8
+ <BuildActionEntries>
9
+ <BuildActionEntry
10
+ buildForTesting = "YES"
11
+ buildForRunning = "YES"
12
+ buildForProfiling = "NO"
13
+ buildForArchiving = "NO"
14
+ buildForAnalyzing = "YES">
15
+ <BuildableReference
16
+ BuildableIdentifier = "primary"
17
+ BlueprintIdentifier = "A90000000000000000000002"
18
+ BuildableName = "RNFBAuthUnitTests.xctest"
19
+ BlueprintName = "RNFBAuthUnitTests"
20
+ ReferencedContainer = "container:RNFBAuthUnitTests.xcodeproj">
21
+ </BuildableReference>
22
+ </BuildActionEntry>
23
+ </BuildActionEntries>
24
+ </BuildAction>
25
+ <TestAction
26
+ buildConfiguration = "Debug"
27
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
+ shouldUseLaunchSchemeArgsEnv = "YES"
30
+ codeCoverageEnabled = "YES">
31
+ <Testables>
32
+ <TestableReference
33
+ skipped = "NO">
34
+ <BuildableReference
35
+ BuildableIdentifier = "primary"
36
+ BlueprintIdentifier = "A90000000000000000000002"
37
+ BuildableName = "RNFBAuthUnitTests.xctest"
38
+ BlueprintName = "RNFBAuthUnitTests"
39
+ ReferencedContainer = "container:RNFBAuthUnitTests.xcodeproj">
40
+ </BuildableReference>
41
+ </TestableReference>
42
+ </Testables>
43
+ </TestAction>
44
+ <LaunchAction
45
+ buildConfiguration = "Debug"
46
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
47
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
48
+ launchStyle = "0"
49
+ useCustomWorkingDirectory = "NO"
50
+ ignoresPersistentStateOnLaunch = "NO"
51
+ debugDocumentVersioning = "YES"
52
+ debugServiceExtension = "internal"
53
+ allowLocationSimulation = "YES">
54
+ </LaunchAction>
55
+ <ProfileAction
56
+ buildConfiguration = "Release"
57
+ shouldUseLaunchSchemeArgsEnv = "YES"
58
+ savedToolIdentifier = ""
59
+ useCustomWorkingDirectory = "NO"
60
+ debugDocumentVersioning = "YES">
61
+ </ProfileAction>
62
+ <AnalyzeAction
63
+ buildConfiguration = "Debug">
64
+ </AnalyzeAction>
65
+ <ArchiveAction
66
+ buildConfiguration = "Release"
67
+ revealArchiveInOrganizer = "YES">
68
+ </ArchiveAction>
69
+ </Scheme>
@@ -141,9 +141,8 @@ export class ActionCodeURL {
141
141
  * @returns The {@link ActionCodeURL} object, or null if the link is invalid.
142
142
  */
143
143
  static parseLink(link: string): ActionCodeURL | null {
144
- const actionLink = parseDeepLink(link);
145
-
146
144
  try {
145
+ const actionLink = parseDeepLink(link);
147
146
  const searchParams = querystringDecode(extractQuerystring(actionLink));
148
147
  const apiKey = searchParams.apiKey ?? null;
149
148
  const code = searchParams.oobCode ?? null;
package/lib/index.ts CHANGED
@@ -47,11 +47,11 @@ import {
47
47
  parseListenerOrObserver,
48
48
  } from '@react-native-firebase/app/dist/module/common';
49
49
  import type { ReactNativeFirebase } from '@react-native-firebase/app';
50
- import { setReactNativeModule } from '@react-native-firebase/app/dist/module/internal/nativeModule';
51
50
  import {
52
51
  FirebaseModule,
53
52
  getOrCreateModularInstance,
54
53
  type ModuleConfig,
54
+ setReactNativeModule,
55
55
  } from '@react-native-firebase/app/dist/module/internal';
56
56
  import ConfirmationResultClass from './ConfirmationResult';
57
57
  import { ActionCodeURL } from './ActionCodeURL';
@@ -20,8 +20,8 @@ import type {} from '@react-native-firebase/app/dist/module/internal/NativeModul
20
20
  import type {
21
21
  ModuleConfig,
22
22
  NativeErrorUserInfo,
23
+ ReactNativeFirebaseEventEmitter,
23
24
  } from '@react-native-firebase/app/dist/module/types/internal';
24
- import type EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';
25
25
  import type {
26
26
  ActionCodeInfo,
27
27
  ActionCodeSettings,
@@ -411,7 +411,7 @@ export type AuthInternal = Auth & {
411
411
  verifyPasswordResetCode(code: string): Promise<string>;
412
412
  revokeToken(authorizationCode: string): Promise<void>;
413
413
  native: RNFBAuthModule;
414
- emitter: EventEmitter;
414
+ emitter: ReactNativeFirebaseEventEmitter;
415
415
  eventNameForApp(...args: Array<string | number>): string;
416
416
  _config: ModuleConfig;
417
417
  _tenantId: string | null;
package/lib/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '26.3.3';
2
+ export const version = '27.0.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-firebase/auth",
3
- "version": "26.3.3",
3
+ "version": "27.0.0",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "React Native Firebase - The authentication module provides an easy-to-use API to integrate an authentication workflow into new and existing applications. React Native Firebase provides access to all Firebase authentication methods and identity providers.",
6
6
  "main": "./dist/module/index.js",
@@ -30,6 +30,7 @@
30
30
  "android:codegen": "node ../../scripts/codegen-package.mjs auth android",
31
31
  "ios:codegen": "node ../../scripts/codegen-package.mjs auth ios"
32
32
  },
33
+ "homepage": "https://rnfirebase.io",
33
34
  "repository": {
34
35
  "type": "git",
35
36
  "url": "https://github.com/invertase/react-native-firebase",
@@ -46,11 +47,11 @@
46
47
  "@expo/plist": "^0.8.1"
47
48
  },
48
49
  "peerDependencies": {
49
- "@react-native-firebase/app": "26.3.3",
50
+ "@react-native-firebase/app": "27.0.0",
50
51
  "expo": ">=47.0.0"
51
52
  },
52
53
  "devDependencies": {
53
- "@react-native-firebase/app": "26.3.3",
54
+ "@react-native-firebase/app": "27.0.0",
54
55
  "expo": "^55.0.18",
55
56
  "react-native-builder-bob": "^0.40.13"
56
57
  },
@@ -101,5 +102,5 @@
101
102
  "node_modules/",
102
103
  "dist/"
103
104
  ],
104
- "gitHead": "04b90008385bf69be74f3a333d0dfea43ba32e64"
105
+ "gitHead": "0c7e942bca361f1765abaf233bf447d795718eff"
105
106
  }
@@ -9,7 +9,11 @@ const withRnFirebaseAuth = (config, props) => {
9
9
  return (0, config_plugins_1.withPlugins)(config, [
10
10
  // iOS
11
11
  [ios_1.withIosCaptchaUrlTypes, props],
12
+ // The two openURL fixes are mutually exclusive and detect which applies at prebuild time:
13
+ // app-delegate life cycle patches `AppDelegate.swift`, UIScene life cycle (Expo SDK 58+)
14
+ // patches `SceneDelegate.swift`.
12
15
  [ios_1.withIosCaptchaOpenUrlFix, props],
16
+ [ios_1.withIosCaptchaSceneDelegateFix, props],
13
17
  ]);
14
18
  };
15
19
  const pak = require('@react-native-firebase/auth/package.json');
@@ -1,3 +1,4 @@
1
1
  import { withIosCaptchaUrlTypes } from './urlTypes';
2
2
  import { withIosCaptchaOpenUrlFix } from './openUrlFix';
3
- export { withIosCaptchaUrlTypes, withIosCaptchaOpenUrlFix };
3
+ import { withIosCaptchaSceneDelegateFix } from './sceneDelegate';
4
+ export { withIosCaptchaUrlTypes, withIosCaptchaOpenUrlFix, withIosCaptchaSceneDelegateFix };
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withIosCaptchaOpenUrlFix = exports.withIosCaptchaUrlTypes = void 0;
3
+ exports.withIosCaptchaSceneDelegateFix = exports.withIosCaptchaOpenUrlFix = exports.withIosCaptchaUrlTypes = void 0;
4
4
  const urlTypes_1 = require("./urlTypes");
5
5
  Object.defineProperty(exports, "withIosCaptchaUrlTypes", { enumerable: true, get: function () { return urlTypes_1.withIosCaptchaUrlTypes; } });
6
6
  const openUrlFix_1 = require("./openUrlFix");
7
7
  Object.defineProperty(exports, "withIosCaptchaOpenUrlFix", { enumerable: true, get: function () { return openUrlFix_1.withIosCaptchaOpenUrlFix; } });
8
+ const sceneDelegate_1 = require("./sceneDelegate");
9
+ Object.defineProperty(exports, "withIosCaptchaSceneDelegateFix", { enumerable: true, get: function () { return sceneDelegate_1.withIosCaptchaSceneDelegateFix; } });
@@ -10,6 +10,7 @@ exports.isFirebaseSwizzlingDisabled = isFirebaseSwizzlingDisabled;
10
10
  exports.ensureFirebaseSwizzlingIsEnabled = ensureFirebaseSwizzlingIsEnabled;
11
11
  const config_plugins_1 = require("@expo/config-plugins");
12
12
  const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
13
+ const sceneLifecycle_1 = require("./sceneLifecycle");
13
14
  const withIosCaptchaOpenUrlFix = (config, props) => {
14
15
  // check configuration
15
16
  if (!shouldApplyIosOpenUrlFix({ config, props })) {
@@ -46,6 +47,17 @@ function withOpenUrlFixForAppDelegate({ config, props, }) {
46
47
  const configValue = props?.ios?.captchaOpenUrlFix || 'default';
47
48
  const newContents = modifyAppDelegate(contents, language);
48
49
  if (newContents === null) {
50
+ // Under the UIScene life cycle (Xcode 27+) UIKit stops calling `application(_:open:options:)` and the
51
+ // template drops the method. `withIosCaptchaSceneDelegateFix` patches `SceneDelegate.swift` instead.
52
+ const platformProjectRoot = config.modRequest.platformProjectRoot;
53
+ if ((0, sceneLifecycle_1.findSceneDelegateFile)(platformProjectRoot) !== null) {
54
+ return config;
55
+ }
56
+ if ((0, sceneLifecycle_1.infoPlistDeclaresSceneManifest)(platformProjectRoot)) {
57
+ // Scene life cycle declared but no SceneDelegate.swift to patch: neither plugin can apply the fix.
58
+ config_plugins_1.WarningAggregator.addWarningIOS('@react-native-firebase/auth', 'Skipping iOS openURL fix because Info.plist declares UIApplicationSceneManifest but no SceneDelegate.swift was found. Firebase Auth reCAPTCHA redirect URLs may be forwarded to your router.');
59
+ return config;
60
+ }
49
61
  if (configValue === true) {
50
62
  throw new Error("Failed to apply iOS openURL fix because no 'openURL' method was found");
51
63
  }
@@ -0,0 +1,34 @@
1
+ import { ConfigPlugin } from '@expo/config-plugins';
2
+ import { PluginConfigType } from '../pluginConfig';
3
+ export declare const generatedTag = "@react-native-firebase/auth-openURL";
4
+ /**
5
+ * Warm-path contract for the SceneDelegate reCAPTCHA patch.
6
+ *
7
+ * Firebase Auth presents reCAPTCHA in an in-app `SFSafariViewController` / auth session while the
8
+ * app is already running, then returns via a custom-scheme URL. Upstream documents and samples
9
+ * handle that return only in `scene(_:openURLContexts:)` (see Firebase phone-auth appendix and the
10
+ * Auth quickstart `SceneDelegate`); they do not route Auth reCAPTCHA through
11
+ * `scene(_:willConnectTo:options:)`. A cold start would also drop Auth's in-memory pending
12
+ * verification, so this plugin intentionally patches the warm path only.
13
+ */
14
+ export declare const sceneDelegateWarmPathContract: {
15
+ readonly handlesOpenURLContexts: true;
16
+ readonly handlesWillConnectTo: false;
17
+ readonly evidence: readonly ["https://firebase.google.com/docs/auth/ios/phone-auth#appendix:-using-phone-sign-in-without-swizzling", "https://github.com/firebase/quickstart-ios/blob/main/authentication/AuthenticationExample/SceneDelegate.swift"];
18
+ };
19
+ export declare const sceneDelegateFirebaseAuthImport = "import FirebaseAuth";
20
+ export declare const sceneDelegateOpenUrlBlock: string;
21
+ /**
22
+ * Add an `openURLContexts` override that lets Firebase Auth handle reCAPTCHA redirects, then
23
+ * forwards only unhandled contexts to `super` (Expo Router / RCTLinkingManager).
24
+ *
25
+ * Returns the modified contents, or null when the patch does not apply (already present, or the
26
+ * file is not a recognizable `SceneDelegate` subclass).
27
+ */
28
+ export declare function modifySceneDelegate(contents: string): string | null;
29
+ /**
30
+ * Applies the reCAPTCHA `openURL` fix to `SceneDelegate.swift` on projects that use the UIScene
31
+ * life cycle. On projects that still use the app-delegate life cycle this is a no-op, the
32
+ * `withIosCaptchaOpenUrlFix` plugin handles those.
33
+ */
34
+ export declare const withIosCaptchaSceneDelegateFix: ConfigPlugin<PluginConfigType>;