@react-native-firebase/storage 26.3.2 → 26.4.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.
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import <XCTest/XCTest.h>
19
+
20
+ #import "RNFBHandleMap.h"
21
+ #import "RNFBStorageTaskRegistry.h"
22
+
23
+ @interface FakeStorageHandle : NSObject
24
+ @property(nonatomic, assign) NSInteger pauseCount;
25
+ @property(nonatomic, assign) NSInteger resumeCount;
26
+ @property(nonatomic, assign) NSInteger cancelCount;
27
+ @property(nonatomic, copy, nullable) void (^onCancel)(void);
28
+ - (void)pause;
29
+ - (void)resume;
30
+ - (void)cancel;
31
+ @end
32
+
33
+ @implementation FakeStorageHandle
34
+ - (void)pause {
35
+ self.pauseCount += 1;
36
+ }
37
+ - (void)resume {
38
+ self.resumeCount += 1;
39
+ }
40
+ - (void)cancel {
41
+ self.cancelCount += 1;
42
+ if (self.onCancel) {
43
+ self.onCancel();
44
+ }
45
+ }
46
+ @end
47
+
48
+ @interface RNFBStorageTaskRegistryTests : XCTestCase
49
+ @property(nonatomic, strong) RNFBStorageTaskRegistry *registry;
50
+ @end
51
+
52
+ @implementation RNFBStorageTaskRegistryTests
53
+
54
+ - (void)setUp {
55
+ [super setUp];
56
+ self.registry = [[RNFBStorageTaskRegistry alloc] init];
57
+ }
58
+
59
+ - (void)testPutGetTake_happyPath {
60
+ FakeStorageHandle *handle = [[FakeStorageHandle alloc] init];
61
+ NSError *error = nil;
62
+ XCTAssertTrue([self.registry put:@1 value:handle error:&error]);
63
+ XCTAssertNil(error);
64
+ XCTAssertEqual(handle, [self.registry get:@1]);
65
+ XCTAssertEqual(handle, [self.registry take:@1]);
66
+ XCTAssertNil([self.registry get:@1]);
67
+ XCTAssertEqual(handle.cancelCount, 0);
68
+ }
69
+
70
+ - (void)testPut_occupiedId_returnsCollision {
71
+ FakeStorageHandle *first = [[FakeStorageHandle alloc] init];
72
+ XCTAssertTrue([self.registry put:@1 value:first error:nil]);
73
+
74
+ NSError *error = nil;
75
+ XCTAssertFalse([self.registry put:@1 value:[[FakeStorageHandle alloc] init] error:&error]);
76
+ XCTAssertNotNil(error);
77
+ XCTAssertEqualObjects(error.domain, RNFBHandleMapErrorDomain);
78
+ XCTAssertEqual(error.code, RNFBHandleMapErrorCollision);
79
+ XCTAssertEqual(first, [self.registry get:@1]);
80
+ }
81
+
82
+ - (void)testPut_occupiedId_nilErrorOut_returnsNo {
83
+ FakeStorageHandle *first = [[FakeStorageHandle alloc] init];
84
+ XCTAssertTrue([self.registry put:@1 value:first error:nil]);
85
+ XCTAssertFalse([self.registry put:@1 value:[[FakeStorageHandle alloc] init] error:nil]);
86
+ XCTAssertEqual(first, [self.registry get:@1]);
87
+ }
88
+
89
+ - (void)testPutOrDiscard_collision_cancelsIncoming {
90
+ FakeStorageHandle *first = [[FakeStorageHandle alloc] init];
91
+ FakeStorageHandle *duplicate = [[FakeStorageHandle alloc] init];
92
+ XCTAssertTrue([self.registry put:@2 value:first error:nil]);
93
+ XCTAssertFalse([self.registry putOrDiscard:@2 value:duplicate]);
94
+ XCTAssertEqual(duplicate.cancelCount, 1);
95
+ XCTAssertEqual(first.cancelCount, 0);
96
+ XCTAssertEqual(first, [self.registry get:@2]);
97
+ }
98
+
99
+ - (void)testPutOrDiscard_storesWhenFree {
100
+ FakeStorageHandle *handle = [[FakeStorageHandle alloc] init];
101
+ XCTAssertTrue([self.registry putOrDiscard:@3 value:handle]);
102
+ XCTAssertEqual(handle, [self.registry get:@3]);
103
+ XCTAssertEqual(handle.cancelCount, 0);
104
+ }
105
+
106
+ - (void)testTakeAndCancel_cancelsAfterTake {
107
+ FakeStorageHandle *handle = [[FakeStorageHandle alloc] init];
108
+ XCTAssertTrue([self.registry put:@5 value:handle error:nil]);
109
+ XCTAssertTrue([self.registry takeAndCancel:@5]);
110
+ XCTAssertEqual(handle.cancelCount, 1);
111
+ XCTAssertNil([self.registry get:@5]);
112
+ }
113
+
114
+ /**
115
+ * get → cancel → identity take: if cancel clears A and a replacement B is put at the same id,
116
+ * trailing identity take must leave B registered (aligned with Android takeAndCancel).
117
+ */
118
+ - (void)testTakeAndCancel_replacementDuringCancel_leavesReplacement {
119
+ FakeStorageHandle *original = [[FakeStorageHandle alloc] init];
120
+ FakeStorageHandle *replacement = [[FakeStorageHandle alloc] init];
121
+ __weak RNFBStorageTaskRegistry *weakRegistry = self.registry;
122
+ original.onCancel = ^{
123
+ RNFBStorageTaskRegistry *registry = weakRegistry;
124
+ if (registry == nil) {
125
+ return;
126
+ }
127
+ // Simulate destroyTask clearing original then a new put at same id during cancel.
128
+ [registry take:@11];
129
+ [registry put:@11 value:replacement error:nil];
130
+ };
131
+ XCTAssertTrue([self.registry put:@11 value:original error:nil]);
132
+ XCTAssertTrue([self.registry takeAndCancel:@11]);
133
+ XCTAssertEqual(original.cancelCount, 1);
134
+ XCTAssertEqual(replacement, [self.registry get:@11]);
135
+ XCTAssertEqual(replacement.cancelCount, 0);
136
+ }
137
+
138
+ - (void)testTakeIf_whenIdentityMatches_takes {
139
+ FakeStorageHandle *handle = [[FakeStorageHandle alloc] init];
140
+ XCTAssertTrue([self.registry put:@8 value:handle error:nil]);
141
+ XCTAssertEqual(handle, [self.registry takeIf:@8
142
+ when:^BOOL(id value) {
143
+ return value == handle;
144
+ }]);
145
+ XCTAssertNil([self.registry get:@8]);
146
+ }
147
+
148
+ - (void)testTakeIf_whenIdentityMismatch_leavesMapping {
149
+ FakeStorageHandle *mapped = [[FakeStorageHandle alloc] init];
150
+ FakeStorageHandle *other = [[FakeStorageHandle alloc] init];
151
+ XCTAssertTrue([self.registry put:@9 value:mapped error:nil]);
152
+ XCTAssertNil([self.registry takeIf:@9
153
+ when:^BOOL(id value) {
154
+ return value == other;
155
+ }]);
156
+ XCTAssertEqual(mapped, [self.registry get:@9]);
157
+ }
158
+
159
+ /**
160
+ * Cancel-then-replace / late-observer: after original is taken (cancel), a replacement put at the
161
+ * same id must survive a late takeIf for the original.
162
+ */
163
+ - (void)testTakeIf_afterCancelReplace_lateObserverLeavesReplacement {
164
+ FakeStorageHandle *original = [[FakeStorageHandle alloc] init];
165
+ FakeStorageHandle *replacement = [[FakeStorageHandle alloc] init];
166
+ XCTAssertTrue([self.registry put:@10 value:original error:nil]);
167
+ // setTaskStatus cancel: identity take then cancel
168
+ XCTAssertEqual(original, [self.registry takeIf:@10
169
+ when:^BOOL(id value) {
170
+ return value == original;
171
+ }]);
172
+ [original cancel];
173
+ XCTAssertTrue([self.registry put:@10 value:replacement error:nil]);
174
+ // Late success/failure observer for the original must not steal replacement
175
+ XCTAssertNil([self.registry takeIf:@10
176
+ when:^BOOL(id value) {
177
+ return value == original;
178
+ }]);
179
+ XCTAssertEqual(replacement, [self.registry get:@10]);
180
+ XCTAssertEqual(original.cancelCount, 1);
181
+ XCTAssertEqual(replacement.cancelCount, 0);
182
+ }
183
+
184
+ - (void)testTakeAndCancel_missingKey_returnsNo {
185
+ XCTAssertFalse([self.registry takeAndCancel:@99]);
186
+ XCTAssertNil([self.registry get:@99]);
187
+ }
188
+
189
+ - (void)testTakeAndCancel_objectWithoutCancel_doesNotCrash {
190
+ NSObject *plain = [[NSObject alloc] init];
191
+ XCTAssertTrue([self.registry put:@7 value:plain error:nil]);
192
+ XCTAssertTrue([self.registry takeAndCancel:@7]);
193
+ XCTAssertNil([self.registry get:@7]);
194
+ }
195
+
196
+ - (void)testCancelAll_cancelsSnapshotAndLeavesEmpty {
197
+ FakeStorageHandle *a = [[FakeStorageHandle alloc] init];
198
+ FakeStorageHandle *b = [[FakeStorageHandle alloc] init];
199
+ XCTAssertTrue([self.registry put:@1 value:a error:nil]);
200
+ XCTAssertTrue([self.registry put:@2 value:b error:nil]);
201
+ [self.registry cancelAll];
202
+ XCTAssertEqual(a.cancelCount, 1);
203
+ XCTAssertEqual(b.cancelCount, 1);
204
+ XCTAssertNil([self.registry get:@1]);
205
+ XCTAssertNil([self.registry get:@2]);
206
+ }
207
+
208
+ - (void)testPut_afterTake_allowsReuse {
209
+ FakeStorageHandle *first = [[FakeStorageHandle alloc] init];
210
+ FakeStorageHandle *second = [[FakeStorageHandle alloc] init];
211
+ XCTAssertTrue([self.registry put:@1 value:first error:nil]);
212
+ XCTAssertEqual(first, [self.registry take:@1]);
213
+ XCTAssertTrue([self.registry put:@1 value:second error:nil]);
214
+ XCTAssertEqual(second, [self.registry get:@1]);
215
+ XCTAssertEqual(first.cancelCount, 0);
216
+ }
217
+
218
+ - (void)testCancelAll_objectWithoutCancel_doesNotCrash {
219
+ NSObject *plain = [[NSObject alloc] init];
220
+ XCTAssertTrue([self.registry put:@4 value:plain error:nil]);
221
+ [self.registry cancelAll];
222
+ XCTAssertNil([self.registry get:@4]);
223
+ }
224
+
225
+ @end
@@ -0,0 +1,251 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 56;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ E7000000000000000000000A /* RNFBHandleMap.m in Sources */ = {isa = PBXBuildFile; fileRef = E70000000000000000000008 /* RNFBHandleMap.m */; };
11
+ E7000000000000000000000B /* RNFBStorageTaskRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = E70000000000000000000018 /* RNFBStorageTaskRegistry.m */; };
12
+ E7000000000000000000000C /* RNFBStorageTaskRegistryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E70000000000000000000009 /* RNFBStorageTaskRegistryTests.m */; };
13
+ E70000000000000000000015 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E70000000000000000000014 /* XCTest.framework */; };
14
+ /* End PBXBuildFile section */
15
+
16
+ /* Begin PBXFileReference section */
17
+ E70000000000000000000003 /* RNFBStorageUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNFBStorageUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
18
+ E70000000000000000000007 /* RNFBHandleMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBHandleMap.h; path = ../../../app/ios/RNFBApp/RNFBHandleMap.h; sourceTree = SOURCE_ROOT; };
19
+ E70000000000000000000008 /* RNFBHandleMap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBHandleMap.m; path = ../../../app/ios/RNFBApp/RNFBHandleMap.m; sourceTree = SOURCE_ROOT; };
20
+ E70000000000000000000009 /* RNFBStorageTaskRegistryTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBStorageTaskRegistryTests.m; sourceTree = "<group>"; };
21
+ E70000000000000000000016 /* RNFBStorageTaskRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBStorageTaskRegistry.h; path = ../RNFBStorage/RNFBStorageTaskRegistry.h; sourceTree = SOURCE_ROOT; };
22
+ E70000000000000000000018 /* RNFBStorageTaskRegistry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBStorageTaskRegistry.m; path = ../RNFBStorage/RNFBStorageTaskRegistry.m; sourceTree = SOURCE_ROOT; };
23
+ E70000000000000000000014 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
24
+ /* End PBXFileReference section */
25
+
26
+ /* Begin PBXFrameworksBuildPhase section */
27
+ E7000000000000000000000D /* Frameworks */ = {
28
+ isa = PBXFrameworksBuildPhase;
29
+ buildActionMask = 2147483647;
30
+ files = (
31
+ E70000000000000000000015 /* XCTest.framework in Frameworks */,
32
+ );
33
+ runOnlyForDeploymentPostprocessing = 0;
34
+ };
35
+ /* End PBXFrameworksBuildPhase section */
36
+
37
+ /* Begin PBXGroup section */
38
+ E70000000000000000000004 = {
39
+ isa = PBXGroup;
40
+ children = (
41
+ E70000000000000000000006 /* Sources */,
42
+ E70000000000000000000005 /* Products */,
43
+ );
44
+ sourceTree = "<group>";
45
+ };
46
+ E70000000000000000000005 /* Products */ = {
47
+ isa = PBXGroup;
48
+ children = (
49
+ E70000000000000000000003 /* RNFBStorageUnitTests.xctest */,
50
+ );
51
+ name = Products;
52
+ sourceTree = "<group>";
53
+ };
54
+ E70000000000000000000006 /* Sources */ = {
55
+ isa = PBXGroup;
56
+ children = (
57
+ E70000000000000000000007 /* RNFBHandleMap.h */,
58
+ E70000000000000000000008 /* RNFBHandleMap.m */,
59
+ E70000000000000000000016 /* RNFBStorageTaskRegistry.h */,
60
+ E70000000000000000000018 /* RNFBStorageTaskRegistry.m */,
61
+ E70000000000000000000009 /* RNFBStorageTaskRegistryTests.m */,
62
+ );
63
+ name = Sources;
64
+ sourceTree = "<group>";
65
+ };
66
+ /* End PBXGroup section */
67
+
68
+ /* Begin PBXNativeTarget section */
69
+ E70000000000000000000002 /* RNFBStorageUnitTests */ = {
70
+ isa = PBXNativeTarget;
71
+ buildConfigurationList = E70000000000000000000013 /* Build configuration list for PBXNativeTarget "RNFBStorageUnitTests" */;
72
+ buildPhases = (
73
+ E7000000000000000000000E /* Sources */,
74
+ E7000000000000000000000D /* Frameworks */,
75
+ );
76
+ buildRules = (
77
+ );
78
+ dependencies = (
79
+ );
80
+ name = RNFBStorageUnitTests;
81
+ productName = RNFBStorageUnitTests;
82
+ productReference = E70000000000000000000003 /* RNFBStorageUnitTests.xctest */;
83
+ productType = "com.apple.product-type.bundle.unit-test";
84
+ };
85
+ /* End PBXNativeTarget section */
86
+
87
+ /* Begin PBXProject section */
88
+ E70000000000000000000001 /* Project object */ = {
89
+ isa = PBXProject;
90
+ attributes = {
91
+ BuildIndependentTargetsInParallel = 1;
92
+ LastUpgradeCheck = 2600;
93
+ ORGANIZATIONNAME = Invertase;
94
+ TargetAttributes = {
95
+ E70000000000000000000002 = {
96
+ CreatedOnToolsVersion = 26.0;
97
+ };
98
+ };
99
+ };
100
+ buildConfigurationList = E70000000000000000000012 /* Build configuration list for PBXProject "RNFBStorageUnitTests" */;
101
+ compatibilityVersion = "Xcode 14.0";
102
+ developmentRegion = en;
103
+ hasScannedForEncodings = 0;
104
+ knownRegions = (
105
+ en,
106
+ Base,
107
+ );
108
+ mainGroup = E70000000000000000000004;
109
+ productRefGroup = E70000000000000000000005 /* Products */;
110
+ projectDirPath = "";
111
+ projectRoot = "";
112
+ targets = (
113
+ E70000000000000000000002 /* RNFBStorageUnitTests */,
114
+ );
115
+ };
116
+ /* End PBXProject section */
117
+
118
+ /* Begin PBXSourcesBuildPhase section */
119
+ E7000000000000000000000E /* Sources */ = {
120
+ isa = PBXSourcesBuildPhase;
121
+ buildActionMask = 2147483647;
122
+ files = (
123
+ E7000000000000000000000A /* RNFBHandleMap.m in Sources */,
124
+ E7000000000000000000000B /* RNFBStorageTaskRegistry.m in Sources */,
125
+ E7000000000000000000000C /* RNFBStorageTaskRegistryTests.m in Sources */,
126
+ );
127
+ runOnlyForDeploymentPostprocessing = 0;
128
+ };
129
+ /* End PBXSourcesBuildPhase section */
130
+
131
+ /* Begin XCBuildConfiguration section */
132
+ E7000000000000000000001A /* Debug */ = {
133
+ isa = XCBuildConfiguration;
134
+ buildSettings = {
135
+ ALWAYS_SEARCH_USER_PATHS = NO;
136
+ CLANG_ENABLE_MODULES = YES;
137
+ CLANG_ENABLE_OBJC_ARC = YES;
138
+ COPY_PHASE_STRIP = NO;
139
+ DEBUG_INFORMATION_FORMAT = dwarf;
140
+ ENABLE_TESTABILITY = YES;
141
+ GCC_C_LANGUAGE_STANDARD = gnu17;
142
+ GCC_DYNAMIC_NO_PIC = NO;
143
+ GCC_OPTIMIZATION_LEVEL = 0;
144
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
145
+ ONLY_ACTIVE_ARCH = YES;
146
+ SDKROOT = macosx;
147
+ SUPPORTED_PLATFORMS = macosx;
148
+ };
149
+ name = Debug;
150
+ };
151
+ E7000000000000000000001B /* Release */ = {
152
+ isa = XCBuildConfiguration;
153
+ buildSettings = {
154
+ ALWAYS_SEARCH_USER_PATHS = NO;
155
+ CLANG_ENABLE_MODULES = YES;
156
+ CLANG_ENABLE_OBJC_ARC = YES;
157
+ COPY_PHASE_STRIP = YES;
158
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
159
+ GCC_C_LANGUAGE_STANDARD = gnu17;
160
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
161
+ SDKROOT = macosx;
162
+ SUPPORTED_PLATFORMS = macosx;
163
+ };
164
+ name = Release;
165
+ };
166
+ E70000000000000000000010 /* Debug */ = {
167
+ isa = XCBuildConfiguration;
168
+ buildSettings = {
169
+ CLANG_ENABLE_CODE_COVERAGE = YES;
170
+ CODE_SIGNING_ALLOWED = NO;
171
+ CODE_SIGNING_REQUIRED = NO;
172
+ CODE_SIGN_IDENTITY = "-";
173
+ COMBINE_HIDPI_IMAGES = YES;
174
+ GENERATE_INFOPLIST_FILE = YES;
175
+ HEADER_SEARCH_PATHS = (
176
+ "$(SRCROOT)/../../../app/ios",
177
+ "$(SRCROOT)/../../../app/ios/RNFBApp",
178
+ "$(SRCROOT)/../RNFBStorage",
179
+ );
180
+ LD_RUNPATH_SEARCH_PATHS = (
181
+ "$(inherited)",
182
+ "@executable_path/../Frameworks",
183
+ "@loader_path/../Frameworks",
184
+ );
185
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
186
+ OTHER_CFLAGS = (
187
+ "-fprofile-instr-generate",
188
+ "-fcoverage-mapping",
189
+ );
190
+ OTHER_LDFLAGS = (
191
+ "-fprofile-instr-generate",
192
+ );
193
+ PRODUCT_BUNDLE_IDENTIFIER = io.invertase.firebase.RNFBStorageUnitTests;
194
+ PRODUCT_NAME = "$(TARGET_NAME)";
195
+ SDKROOT = macosx;
196
+ SUPPORTED_PLATFORMS = macosx;
197
+ };
198
+ name = Debug;
199
+ };
200
+ E70000000000000000000011 /* Release */ = {
201
+ isa = XCBuildConfiguration;
202
+ buildSettings = {
203
+ CLANG_ENABLE_CODE_COVERAGE = YES;
204
+ CODE_SIGNING_ALLOWED = NO;
205
+ CODE_SIGNING_REQUIRED = NO;
206
+ CODE_SIGN_IDENTITY = "-";
207
+ COMBINE_HIDPI_IMAGES = YES;
208
+ GENERATE_INFOPLIST_FILE = YES;
209
+ HEADER_SEARCH_PATHS = (
210
+ "$(SRCROOT)/../../../app/ios",
211
+ "$(SRCROOT)/../../../app/ios/RNFBApp",
212
+ "$(SRCROOT)/../RNFBStorage",
213
+ );
214
+ LD_RUNPATH_SEARCH_PATHS = (
215
+ "$(inherited)",
216
+ "@executable_path/../Frameworks",
217
+ "@loader_path/../Frameworks",
218
+ );
219
+ MACOSX_DEPLOYMENT_TARGET = 14.0;
220
+ PRODUCT_BUNDLE_IDENTIFIER = io.invertase.firebase.RNFBStorageUnitTests;
221
+ PRODUCT_NAME = "$(TARGET_NAME)";
222
+ SDKROOT = macosx;
223
+ SUPPORTED_PLATFORMS = macosx;
224
+ };
225
+ name = Release;
226
+ };
227
+ /* End XCBuildConfiguration section */
228
+
229
+ /* Begin XCConfigurationList section */
230
+ E70000000000000000000012 /* Build configuration list for PBXProject "RNFBStorageUnitTests" */ = {
231
+ isa = XCConfigurationList;
232
+ buildConfigurations = (
233
+ E7000000000000000000001A /* Debug */,
234
+ E7000000000000000000001B /* Release */,
235
+ );
236
+ defaultConfigurationIsVisible = 0;
237
+ defaultConfigurationName = Debug;
238
+ };
239
+ E70000000000000000000013 /* Build configuration list for PBXNativeTarget "RNFBStorageUnitTests" */ = {
240
+ isa = XCConfigurationList;
241
+ buildConfigurations = (
242
+ E70000000000000000000010 /* Debug */,
243
+ E70000000000000000000011 /* Release */,
244
+ );
245
+ defaultConfigurationIsVisible = 0;
246
+ defaultConfigurationName = Debug;
247
+ };
248
+ /* End XCConfigurationList section */
249
+ };
250
+ rootObject = E70000000000000000000001 /* Project object */;
251
+ }
@@ -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 = "E70000000000000000000002"
18
+ BuildableName = "RNFBStorageUnitTests.xctest"
19
+ BlueprintName = "RNFBStorageUnitTests"
20
+ ReferencedContainer = "container:RNFBStorageUnitTests.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 = "E70000000000000000000002"
37
+ BuildableName = "RNFBStorageUnitTests.xctest"
38
+ BlueprintName = "RNFBStorageUnitTests"
39
+ ReferencedContainer = "container:RNFBStorageUnitTests.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>
package/lib/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '26.3.2';
2
+ export const version = '26.4.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-firebase/storage",
3
- "version": "26.3.2",
3
+ "version": "26.4.0",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "React Native Firebase - React Native Firebase provides native integration with Cloud Storage, providing support to upload and download files directly from your device and from your Firebase Cloud Storage bucket.",
6
6
  "main": "./dist/module/index.js",
@@ -28,6 +28,7 @@
28
28
  "android:codegen": "node ../../scripts/codegen-package.mjs storage android",
29
29
  "ios:codegen": "node ../../scripts/codegen-package.mjs storage ios"
30
30
  },
31
+ "homepage": "https://rnfirebase.io",
31
32
  "repository": {
32
33
  "type": "git",
33
34
  "url": "https://github.com/invertase/react-native-firebase",
@@ -48,14 +49,14 @@
48
49
  "download"
49
50
  ],
50
51
  "peerDependencies": {
51
- "@react-native-firebase/app": "26.3.2"
52
+ "@react-native-firebase/app": "26.4.0"
52
53
  },
53
54
  "publishConfig": {
54
55
  "access": "public",
55
56
  "provenance": true
56
57
  },
57
58
  "devDependencies": {
58
- "@react-native-firebase/app": "26.3.2",
59
+ "@react-native-firebase/app": "26.4.0",
59
60
  "react-native-builder-bob": "^0.41.0"
60
61
  },
61
62
  "exports": {
@@ -88,5 +89,5 @@
88
89
  "node_modules/",
89
90
  "dist/"
90
91
  ],
91
- "gitHead": "4ef21d038c5b372e67508265a5c3391a07c91fde"
92
+ "gitHead": "06701af5fdc19bae9f379567eadb29dfe81953c0"
92
93
  }