expo-modules-core 2.3.11 → 2.3.13

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.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,19 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 2.3.13 — 2025-05-08
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [Android] Fix `getSharedObjectId` for devices running android 7 and below. ([#36698](https://github.com/expo/expo/pull/36698) by [@lukmccall](https://github.com/lukmccall))
18
+ - [iOS] Fixed missing upload progress from `XMLHttpRequest` when network inspector is enabled. ([#36715](https://github.com/expo/expo/pull/36715) by [@kudo](https://github.com/kudo))
19
+
20
+ ## 2.3.12 — 2025-04-30
21
+
22
+ ### 🐛 Bug fixes
23
+
24
+ - Fixed `extraMavenRepos` not applied on Gradle subprojects. ([#36500](https://github.com/expo/expo/pull/36500) by [@lukmccall](https://github.com/lukmccall))
25
+
13
26
  ## 2.3.11 — 2025-04-28
14
27
 
15
28
  _This version does not introduce any user-facing changes._
@@ -25,7 +25,7 @@ if (shouldIncludeCompose) {
25
25
  }
26
26
 
27
27
  group = 'host.exp.exponent'
28
- version = '2.3.11'
28
+ version = '2.3.13'
29
29
 
30
30
  def isExpoModulesCoreTests = {
31
31
  Gradle gradle = getGradle()
@@ -75,7 +75,7 @@ android {
75
75
  defaultConfig {
76
76
  consumerProguardFiles 'proguard-rules.pro'
77
77
  versionCode 1
78
- versionName "2.3.11"
78
+ versionName "2.3.13"
79
79
  buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
80
80
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled.toString()
81
81
 
@@ -5,7 +5,7 @@
5
5
  namespace expo {
6
6
 
7
7
  int JSharedObject::getId() noexcept {
8
- static const auto method = getClass()->getMethod<int()>("getSharedObjectId");
8
+ static const auto method = javaClassStatic()->getMethod<int()>("getSharedObjectId");
9
9
  return method(self());
10
10
  }
11
11
 
@@ -149,6 +149,36 @@ public final class ExpoRequestInterceptorProtocol: URLProtocol, URLSessionDataDe
149
149
  client?.urlProtocol(self, didReceive: challengeWithSender)
150
150
  }
151
151
 
152
+ public func urlSession(
153
+ _ session: URLSession,
154
+ task: URLSessionTask,
155
+ didSendBodyData bytesSent: Int64,
156
+ totalBytesSent: Int64,
157
+ totalBytesExpectedToSend: Int64
158
+ ) {
159
+ // swiftlint:disable line_length
160
+ // Apple does not support sending upload progress from URLProtocol back to URLProtocolClient.
161
+ // > Similarly, there is no way for your NSURLProtocol subclass to call the NSURLConnection delegate's -connection:needNewBodyStream: or -connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: methods (<rdar://problem/9226155> and <rdar://problem/9226157>). The latter is not a serious concern--it just means that your clients don't get upload progress--but the former is a real issue. If you're in a situation where you might need a second copy of a request body, you will need your own logic to make that copy, including the case where the body is a stream.
162
+ // See: https://developer.apple.com/library/archive/samplecode/CustomHTTPProtocol/Listings/Read_Me_About_CustomHTTPProtocol_txt.html
163
+ //
164
+ // Workaround to get the original task's URLSessionDelegate through the internal property and send upload process
165
+ // Fixes https://github.com/expo/expo/issues/28269
166
+ // swiftlint:enable line_length
167
+ guard let task = self.task else {
168
+ return
169
+ }
170
+ if #available(iOS 15.0, tvOS 15.0, macOS 12.0, *), let delegate = task.delegate {
171
+ // For the case if the task has a dedicated delegate than the default delegate from its URLSession
172
+ delegate.urlSession?(session, task: task, didSendBodyData: bytesSent, totalBytesSent: totalBytesSent, totalBytesExpectedToSend: totalBytesExpectedToSend)
173
+ return
174
+ }
175
+ guard let session = task.value(forKey: "session") as? URLSession,
176
+ let delegate = session.delegate as? URLSessionTaskDelegate else {
177
+ return
178
+ }
179
+ delegate.urlSession?(session, task: task, didSendBodyData: bytesSent, totalBytesSent: totalBytesSent, totalBytesExpectedToSend: totalBytesExpectedToSend)
180
+ }
181
+
152
182
  /**
153
183
  Data structure to save the response for redirection
154
184
  */
@@ -100,4 +100,21 @@ public final class URLSessionSessionDelegateProxy: NSObject, URLSessionDataDeleg
100
100
  completionHandler(.performDefaultHandling, nil)
101
101
  }
102
102
  }
103
+
104
+ public func urlSession(
105
+ _ session: URLSession,
106
+ task: URLSessionTask,
107
+ didSendBodyData bytesSent: Int64,
108
+ totalBytesSent: Int64,
109
+ totalBytesExpectedToSend: Int64
110
+ ) {
111
+ if let delegate = getDelegate(task: task) {
112
+ delegate.urlSession?(
113
+ session,
114
+ task: task,
115
+ didSendBodyData: bytesSent,
116
+ totalBytesSent: totalBytesSent,
117
+ totalBytesExpectedToSend: totalBytesExpectedToSend)
118
+ }
119
+ }
103
120
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "2.3.11",
3
+ "version": "2.3.13",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "main": "src/index.ts",
6
6
  "types": "build/index.d.ts",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "devDependencies": {
44
44
  "@testing-library/react-native": "^13.1.0",
45
- "expo-module-scripts": "^4.1.5"
45
+ "expo-module-scripts": "^4.1.7"
46
46
  },
47
- "gitHead": "45bd8a319fb2d6abadac8dcb0c821a55a1f0caa3"
47
+ "gitHead": "49c9d53cf0a9fc8179d1c8f5268beadd141f70ca"
48
48
  }