expo-file-system 57.0.4 → 57.0.6

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 +14 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/filesystem/FileSystemUploadTask.kt +14 -5
  4. package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyModule.kt +5 -45
  5. package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyReader.kt +57 -0
  6. package/build/legacy/FileSystem.types.d.ts +2 -2
  7. package/expo-module.config.json +1 -1
  8. package/ios/FileSystemFile.swift +2 -2
  9. package/ios/Legacy/FileSystemHelpers.swift +16 -2
  10. package/ios/Legacy/FileSystemLegacyModule.swift +5 -5
  11. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{57.0.4/expo.modules.filesystem-57.0.4-sources.jar → 57.0.6/expo.modules.filesystem-57.0.6-sources.jar} +0 -0
  12. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.md5 +1 -0
  13. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.sha1 +1 -0
  14. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.sha256 +1 -0
  15. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.sha512 +1 -0
  16. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar +0 -0
  17. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.md5 +1 -0
  18. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.sha1 +1 -0
  19. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.sha256 +1 -0
  20. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.sha512 +1 -0
  21. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{57.0.4/expo.modules.filesystem-57.0.4.module → 57.0.6/expo.modules.filesystem-57.0.6.module} +22 -22
  22. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.md5 +1 -0
  23. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.sha1 +1 -0
  24. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.sha256 +1 -0
  25. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.sha512 +1 -0
  26. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{57.0.4/expo.modules.filesystem-57.0.4.pom → 57.0.6/expo.modules.filesystem-57.0.6.pom} +1 -1
  27. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.md5 +1 -0
  28. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.sha1 +1 -0
  29. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.sha256 +1 -0
  30. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.sha512 +1 -0
  31. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml +4 -4
  32. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.md5 +1 -1
  33. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha1 +1 -1
  34. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256 +1 -1
  35. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512 +1 -1
  36. package/package.json +5 -5
  37. package/prebuilds/output/debug/xcframeworks/ExpoFileSystem.tar.gz +0 -0
  38. package/prebuilds/output/release/xcframeworks/ExpoFileSystem.tar.gz +0 -0
  39. package/src/legacy/FileSystem.types.ts +2 -2
  40. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.md5 +0 -1
  41. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.sha1 +0 -1
  42. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.sha256 +0 -1
  43. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.sha512 +0 -1
  44. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar +0 -0
  45. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.md5 +0 -1
  46. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.sha1 +0 -1
  47. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.sha256 +0 -1
  48. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.sha512 +0 -1
  49. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.md5 +0 -1
  50. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.sha1 +0 -1
  51. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.sha256 +0 -1
  52. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.sha512 +0 -1
  53. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.md5 +0 -1
  54. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.sha1 +0 -1
  55. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.sha256 +0 -1
  56. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,20 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 57.0.6 — 2026-08-26
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [android] Fixed slow uploads of SAF-backed `content://` files by resolving the request body's content length once, instead of querying it through `ContentResolver` for every 8 KiB written. ([#49206](https://github.com/expo/expo/pull/49206) by [@gmaclennan](https://github.com/gmaclennan))
18
+ ### 💡 Others
19
+
20
+ ## 57.0.5 — 2026-08-20
21
+
22
+ ### 🐛 Bug fixes
23
+
24
+ - [iOS] Fix wrong permissions for text() and bytes(). ([#42422](https://github.com/expo/expo/pull/42422)) by [@simoneldevig](https://github.com/simoneldevig))
25
+ - Fixed `readAsStringAsync` to respect `position` and `length` when reading UTF-8 strings. ([#20291](https://github.com/expo/expo/issues/20291) by [@mvincentong](https://github.com/mvincentong)) ([#45714](https://github.com/expo/expo/pull/45714) by [@mvincentong](https://github.com/mvincentong))
26
+
13
27
  ## 57.0.4 — 2026-08-14
14
28
 
15
29
  _This version does not introduce any user-facing changes._
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '57.0.4'
7
+ version = '57.0.6'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.filesystem"
11
11
  defaultConfig {
12
12
  versionCode 30
13
- versionName "57.0.4"
13
+ versionName "57.0.6"
14
14
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15
15
  }
16
16
  testOptions {
@@ -226,12 +226,16 @@ private class CountingRequestBody(
226
226
  private val requestBody: RequestBody,
227
227
  private val progressListener: (Long, Long) -> Unit
228
228
  ) : RequestBody() {
229
+ // Resolved once: contentLength() is a ContentResolver query for SAF-backed
230
+ // files, and the counting sink needs the total on every segment written.
231
+ private val cachedContentLength: Long by lazy { requestBody.contentLength() }
232
+
229
233
  override fun contentType() = requestBody.contentType()
230
234
 
231
- override fun contentLength() = requestBody.contentLength()
235
+ override fun contentLength() = cachedContentLength
232
236
 
233
237
  override fun writeTo(sink: BufferedSink) {
234
- val countingSink = CountingSink(sink, this, progressListener)
238
+ val countingSink = CountingSink(sink, cachedContentLength, progressListener)
235
239
  val bufferedSink = countingSink.buffer()
236
240
  requestBody.writeTo(bufferedSink)
237
241
  bufferedSink.flush()
@@ -243,7 +247,7 @@ private class CountingRequestBody(
243
247
  */
244
248
  private class CountingSink(
245
249
  sink: Sink,
246
- private val requestBody: RequestBody,
250
+ private val totalBytes: Long,
247
251
  private val progressListener: (Long, Long) -> Unit
248
252
  ) : ForwardingSink(sink) {
249
253
  private var bytesWritten = 0L
@@ -251,14 +255,19 @@ private class CountingSink(
251
255
  override fun write(source: Buffer, byteCount: Long) {
252
256
  super.write(source, byteCount)
253
257
  bytesWritten += byteCount
254
- progressListener(bytesWritten, requestBody.contentLength())
258
+ progressListener(bytesWritten, totalBytes)
255
259
  }
256
260
  }
257
261
 
258
262
  private fun UnifiedFileInterface.asRequestBody(contentType: String?): RequestBody {
259
263
  return object : RequestBody() {
264
+ // length() is a ContentResolver query for content:// files, and ContentProviderFile
265
+ // and AssetFile can fall back to reading the whole stream; resolve it once, and
266
+ // not before OkHttp asks for it.
267
+ private val resolvedLength: Long by lazy { length() }
268
+
260
269
  override fun contentType() = contentType?.toMediaTypeOrNull()
261
- override fun contentLength() = length()
270
+ override fun contentLength() = resolvedLength
262
271
  override fun writeTo(sink: BufferedSink) {
263
272
  inputStream().use { input ->
264
273
  val source = input.source()
@@ -43,7 +43,6 @@ import org.apache.commons.codec.digest.DigestUtils
43
43
  import org.apache.commons.io.FileUtils
44
44
  import org.apache.commons.io.IOUtils
45
45
  import java.io.BufferedInputStream
46
- import java.io.ByteArrayOutputStream
47
46
  import java.io.File
48
47
  import java.io.FileInputStream
49
48
  import java.io.FileNotFoundException
@@ -183,29 +182,10 @@ open class FileSystemLegacyModule : Module() {
183
182
  val uri = Uri.parse(slashifyFilePath(uriStr))
184
183
  ensurePermission(uri, FilePermissionService.Permission.READ)
185
184
 
186
- // TODO:Bacon: Add more encoding types to match iOS
187
185
  val encoding = options.encoding
188
- var contents: String?
189
- if (encoding == EncodingType.BASE64) {
190
- getInputStream(uri).use { inputStream ->
191
- contents = if (options.length != null && options.position != null) {
192
- val buffer = ByteArray(options.length)
193
- inputStream.skip(options.position.toLong())
194
- val bytesRead = inputStream.read(buffer, 0, options.length)
195
- Base64.encodeToString(buffer, 0, bytesRead, Base64.NO_WRAP)
196
- } else {
197
- val inputData = getInputStreamBytes(inputStream)
198
- Base64.encodeToString(inputData, Base64.NO_WRAP)
199
- }
200
- }
201
- } else {
202
- contents = when {
203
- uri.scheme == "file" -> IOUtils.toString(FileInputStream(uri.toFile()))
204
- uri.scheme == "asset" -> IOUtils.toString(openAssetInputStream(uri))
205
- uri.scheme == null -> IOUtils.toString(openResourceInputStream(uriStr))
206
- uri.isSAFUri -> IOUtils.toString(context.contentResolver.openInputStream(uri))
207
- else -> throw IOException("Unsupported scheme for location '$uri'.")
208
- }
186
+
187
+ val contents = getInputStream(uri, uriStr).use { inputStream ->
188
+ readInputStreamAsString(inputStream, encoding, options)
209
189
  }
210
190
  return@AsyncFunction contents
211
191
  }
@@ -1069,9 +1049,10 @@ open class FileSystemLegacyModule : Module() {
1069
1049
  }
1070
1050
 
1071
1051
  @Throws(IOException::class)
1072
- private fun getInputStream(uri: Uri) = when {
1052
+ private fun getInputStream(uri: Uri, uriStr: String? = null) = when {
1073
1053
  uri.scheme == "file" -> FileInputStream(uri.toFile())
1074
1054
  uri.scheme == "asset" -> openAssetInputStream(uri)
1055
+ uri.scheme == null && !uriStr.isNullOrEmpty() -> openResourceInputStream(uriStr)
1075
1056
  uri.isSAFUri -> context.contentResolver.openInputStream(uri)!!
1076
1057
  else -> throw IOException("Unsupported scheme for location '$uri'.")
1077
1058
  }
@@ -1104,27 +1085,6 @@ open class FileSystemLegacyModule : Module() {
1104
1085
 
1105
1086
  private fun parseFileUri(uriStr: String) = uriStr.substring(uriStr.indexOf(':') + 3)
1106
1087
 
1107
- @Throws(IOException::class)
1108
- private fun getInputStreamBytes(inputStream: InputStream): ByteArray {
1109
- val bytesResult: ByteArray
1110
- val byteBuffer = ByteArrayOutputStream()
1111
- val bufferSize = 1024
1112
- val buffer = ByteArray(bufferSize)
1113
- try {
1114
- var len: Int
1115
- while (inputStream.read(buffer).also { len = it } != -1) {
1116
- byteBuffer.write(buffer, 0, len)
1117
- }
1118
- bytesResult = byteBuffer.toByteArray()
1119
- } finally {
1120
- try {
1121
- byteBuffer.close()
1122
- } catch (ignored: IOException) {
1123
- }
1124
- }
1125
- return bytesResult
1126
- }
1127
-
1128
1088
  // Copied out of React Native's `NetworkingModule.java`
1129
1089
  private fun translateHeaders(headers: Headers): Bundle {
1130
1090
  val responseHeaders = Bundle()
@@ -0,0 +1,57 @@
1
+ package expo.modules.filesystem.legacy
2
+
3
+ import android.util.Base64
4
+ import java.io.InputStream
5
+
6
+ // `encoding` is nullable because the record converter leaves fields absent from the JS options
7
+ // object null instead of applying the `ReadingOptions` default. Anything that is not base64 is
8
+ // read as UTF-8, which is what the module did before this function existed.
9
+ internal fun readInputStreamAsString(
10
+ inputStream: InputStream,
11
+ encoding: EncodingType?,
12
+ options: ReadingOptions
13
+ ): String {
14
+ val bytes = inputStream.readBytes(options)
15
+
16
+ return if (encoding == EncodingType.BASE64) {
17
+ Base64.encodeToString(bytes, Base64.NO_WRAP)
18
+ } else {
19
+ String(bytes, Charsets.UTF_8)
20
+ }
21
+ }
22
+
23
+ private fun InputStream.readBytes(options: ReadingOptions): ByteArray {
24
+ if (options.length != null && options.position != null) {
25
+ skipBytes(options.position.toLong())
26
+ return readByteRange(options.length)
27
+ }
28
+ return readBytes()
29
+ }
30
+
31
+ private fun InputStream.skipBytes(position: Long) {
32
+ var remaining = position
33
+ while (remaining > 0) {
34
+ val skipped = skip(remaining)
35
+ if (skipped > 0) {
36
+ remaining -= skipped
37
+ continue
38
+ }
39
+ if (read() == -1) {
40
+ break
41
+ }
42
+ remaining--
43
+ }
44
+ }
45
+
46
+ private fun InputStream.readByteRange(length: Int): ByteArray {
47
+ val buffer = ByteArray(length)
48
+ var offset = 0
49
+ while (offset < length) {
50
+ val bytesRead = read(buffer, offset, length - offset)
51
+ if (bytesRead <= 0) {
52
+ break
53
+ }
54
+ offset += bytesRead
55
+ }
56
+ return buffer.copyOf(offset)
57
+ }
@@ -230,11 +230,11 @@ export type ReadingOptions = {
230
230
  */
231
231
  encoding?: EncodingType | 'utf8' | 'base64';
232
232
  /**
233
- * Optional number of bytes to skip. This option is only used when `encoding: FileSystem.EncodingType.Base64` and `length` is defined.
233
+ * Optional number of bytes to skip before reading. This option is only used when `length` is defined.
234
234
  * */
235
235
  position?: number;
236
236
  /**
237
- * Optional number of bytes to read. This option is only used when `encoding: FileSystem.EncodingType.Base64` and `position` is defined.
237
+ * Optional number of bytes to read. This option is only used when `position` is defined.
238
238
  */
239
239
  length?: number;
240
240
  };
@@ -12,7 +12,7 @@
12
12
  "publication": {
13
13
  "groupId": "host.exp.exponent",
14
14
  "artifactId": "expo.modules.filesystem",
15
- "version": "57.0.4",
15
+ "version": "57.0.6",
16
16
  "repository": "local-maven-repo"
17
17
  }
18
18
  }
@@ -130,13 +130,13 @@ internal final class FileSystemFile: FileSystemPath {
130
130
  }
131
131
 
132
132
  func text() throws -> String {
133
- return try withCorrectTypeAndScopedAccess(permission: .write) {
133
+ return try withCorrectTypeAndScopedAccess(permission: .read) {
134
134
  return try String(contentsOf: url)
135
135
  }
136
136
  }
137
137
 
138
138
  func bytes() throws -> Data {
139
- return try withCorrectTypeAndScopedAccess(permission: .write) {
139
+ return try withCorrectTypeAndScopedAccess(permission: .read) {
140
140
  return try Data(contentsOf: url)
141
141
  }
142
142
  }
@@ -14,19 +14,33 @@ internal func ensureFileDirectoryExists(_ fileUrl: URL) throws {
14
14
  }
15
15
 
16
16
  internal func readFileAsBase64(path: String, options: ReadingOptions) throws -> String {
17
+ return try readFileData(path: path, options: options).base64EncodedString(options: .endLineWithLineFeed)
18
+ }
19
+
20
+ internal func readFileAsString(path: String, encoding: String.Encoding, options: ReadingOptions) throws -> String {
21
+ guard let string = String(data: try readFileData(path: path, options: options), encoding: encoding) else {
22
+ throw FileNotReadableException(path)
23
+ }
24
+ return string
25
+ }
26
+
27
+ private func readFileData(path: String, options: ReadingOptions) throws -> Data {
17
28
  let file = FileHandle(forReadingAtPath: path)
18
29
 
19
30
  guard let file else {
20
31
  throw FileNotExistsException(path)
21
32
  }
33
+ defer {
34
+ try? file.close()
35
+ }
22
36
  if let position = options.position, position != 0 {
23
37
  // TODO: Handle these errors?
24
38
  try? file.seek(toOffset: UInt64(position))
25
39
  }
26
40
  if let length = options.length {
27
- return file.readData(ofLength: length).base64EncodedString(options: .endLineWithLineFeed)
41
+ return file.readData(ofLength: length)
28
42
  }
29
- return file.readDataToEndOfFile().base64EncodedString(options: .endLineWithLineFeed)
43
+ return file.readDataToEndOfFile()
30
44
  }
31
45
 
32
46
  internal func writeFileAsBase64(path: String, string: String) throws {
@@ -75,11 +75,11 @@ public final class FileSystemLegacyModule: Module {
75
75
  if options.encoding == .base64 {
76
76
  return try readFileAsBase64(path: url.path, options: options)
77
77
  }
78
- do {
79
- return try String(contentsOfFile: url.path, encoding: options.encoding.toStringEncoding() ?? .utf8)
80
- } catch {
81
- throw FileNotReadableException(url.path)
82
- }
78
+ return try readFileAsString(
79
+ path: url.path,
80
+ encoding: options.encoding.toStringEncoding() ?? .utf8,
81
+ options: options
82
+ )
83
83
  }
84
84
 
85
85
  AsyncFunction("writeAsStringAsync") { (url: URL, string: String, options: WritingOptions) in
@@ -0,0 +1 @@
1
+ 198d441c46eefe2bcf7a848a0a2526d708f4aedf7df793afd661220a58f0ac80
@@ -0,0 +1 @@
1
+ 0b9afee49c5f8278f312c63308879185585b20b90804801c8c7b981731b0a8b9bc3e494ef0d910ee106a00caad027376d52943f14ee55a65bf9aa7bbc291acf6
@@ -0,0 +1 @@
1
+ 3e2b67c2e0b15fd89354be1f282473e954058d89970ea7e91ec0aebb42fd5833
@@ -0,0 +1 @@
1
+ 899a73a321af913d976b012a0c6745c2f93507890eca9ebcc703981eaafe84659b0e69a89ae4e7f94e745b937849d15a92aeab417e824c76f4649238e57c0804
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.filesystem",
6
- "version": "57.0.4",
6
+ "version": "57.0.6",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -68,13 +68,13 @@
68
68
  ],
69
69
  "files": [
70
70
  {
71
- "name": "expo.modules.filesystem-57.0.4.aar",
72
- "url": "expo.modules.filesystem-57.0.4.aar",
73
- "size": 692428,
74
- "sha512": "856e77adb55cdd548e0cba3d9e14a61ed0b72cddde65ae6299b0238e510d358cfd9e8d4549f49943fab98e6d21fcfa81ddd7b71dfbe848a89d00197c6d6c907d",
75
- "sha256": "1f810f75c6c0bace739085182ddfda3dacff48238f4251c26626cc89733178fe",
76
- "sha1": "b005244be8fd61d7fb137e94aae0ac8bfaf42a2c",
77
- "md5": "40f8afaff5b2b59fecbcd789d55a5b3c"
71
+ "name": "expo.modules.filesystem-57.0.6.aar",
72
+ "url": "expo.modules.filesystem-57.0.6.aar",
73
+ "size": 693468,
74
+ "sha512": "899a73a321af913d976b012a0c6745c2f93507890eca9ebcc703981eaafe84659b0e69a89ae4e7f94e745b937849d15a92aeab417e824c76f4649238e57c0804",
75
+ "sha256": "3e2b67c2e0b15fd89354be1f282473e954058d89970ea7e91ec0aebb42fd5833",
76
+ "sha1": "75747db46e9a0fdedd24371e394b5f3fb829c7b3",
77
+ "md5": "f0991e75aa20f83164a3043ef46b3687"
78
78
  }
79
79
  ]
80
80
  },
@@ -157,13 +157,13 @@
157
157
  ],
158
158
  "files": [
159
159
  {
160
- "name": "expo.modules.filesystem-57.0.4.aar",
161
- "url": "expo.modules.filesystem-57.0.4.aar",
162
- "size": 692428,
163
- "sha512": "856e77adb55cdd548e0cba3d9e14a61ed0b72cddde65ae6299b0238e510d358cfd9e8d4549f49943fab98e6d21fcfa81ddd7b71dfbe848a89d00197c6d6c907d",
164
- "sha256": "1f810f75c6c0bace739085182ddfda3dacff48238f4251c26626cc89733178fe",
165
- "sha1": "b005244be8fd61d7fb137e94aae0ac8bfaf42a2c",
166
- "md5": "40f8afaff5b2b59fecbcd789d55a5b3c"
160
+ "name": "expo.modules.filesystem-57.0.6.aar",
161
+ "url": "expo.modules.filesystem-57.0.6.aar",
162
+ "size": 693468,
163
+ "sha512": "899a73a321af913d976b012a0c6745c2f93507890eca9ebcc703981eaafe84659b0e69a89ae4e7f94e745b937849d15a92aeab417e824c76f4649238e57c0804",
164
+ "sha256": "3e2b67c2e0b15fd89354be1f282473e954058d89970ea7e91ec0aebb42fd5833",
165
+ "sha1": "75747db46e9a0fdedd24371e394b5f3fb829c7b3",
166
+ "md5": "f0991e75aa20f83164a3043ef46b3687"
167
167
  }
168
168
  ]
169
169
  },
@@ -177,13 +177,13 @@
177
177
  },
178
178
  "files": [
179
179
  {
180
- "name": "expo.modules.filesystem-57.0.4-sources.jar",
181
- "url": "expo.modules.filesystem-57.0.4-sources.jar",
182
- "size": 50743,
183
- "sha512": "088459ae823742c88f6b378e59b80fb9bf2f94769ac067636144f1e233c88509f9c5aa99f0f0500ae20f4e93b335cd07c66b846e05d26f1476776d15439977eb",
184
- "sha256": "b93839878f7d0d2e5b2c45d48dd3f66cbc81544c056dac4afd9b925a3ad1c470",
185
- "sha1": "437a520d50ffcce8c217a7d7d23bced2b9950bc0",
186
- "md5": "ce27cedadf73bf6fbb8733848a6fa461"
180
+ "name": "expo.modules.filesystem-57.0.6-sources.jar",
181
+ "url": "expo.modules.filesystem-57.0.6-sources.jar",
182
+ "size": 51453,
183
+ "sha512": "0b9afee49c5f8278f312c63308879185585b20b90804801c8c7b981731b0a8b9bc3e494ef0d910ee106a00caad027376d52943f14ee55a65bf9aa7bbc291acf6",
184
+ "sha256": "198d441c46eefe2bcf7a848a0a2526d708f4aedf7df793afd661220a58f0ac80",
185
+ "sha1": "8e28a29e9497ae4214a5f3cb58c3afe7c6600e23",
186
+ "md5": "fcc4d08d855bd22413d68126d69826e8"
187
187
  }
188
188
  ]
189
189
  }
@@ -0,0 +1 @@
1
+ 1940179a19039be7b6a497b304d5ecfcf7380e4741058228647dd0ec97da0374
@@ -0,0 +1 @@
1
+ 437c2cc349033895c18fcc11aeffd2adaa1b268aa2db809bd7786f37d31f509ba2f468e2099518bb83f84263aa271a4e6abc8b2b4d86d3a75d49aef4272df115
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>host.exp.exponent</groupId>
11
11
  <artifactId>expo.modules.filesystem</artifactId>
12
- <version>57.0.4</version>
12
+ <version>57.0.6</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.filesystem</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ fc7b012f381a80012f120e6f298c883efa2bf2bb0e08135460fa526d3751fec0
@@ -0,0 +1 @@
1
+ 158f620bde283f904e7591216ee334e8065bf2c3c783946d77f87a38ad806732d59c283d03530ff29c458280807bb1e628f41f868acd08c9b2106c7b1fc76c10
@@ -3,11 +3,11 @@
3
3
  <groupId>host.exp.exponent</groupId>
4
4
  <artifactId>expo.modules.filesystem</artifactId>
5
5
  <versioning>
6
- <latest>57.0.4</latest>
7
- <release>57.0.4</release>
6
+ <latest>57.0.6</latest>
7
+ <release>57.0.6</release>
8
8
  <versions>
9
- <version>57.0.4</version>
9
+ <version>57.0.6</version>
10
10
  </versions>
11
- <lastUpdated>20260814151646</lastUpdated>
11
+ <lastUpdated>20260826195103</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 75149d25d96bc50bb88b1202e1972756
1
+ 8fa97a66c4a74f2666e62943abd5962a
@@ -1 +1 @@
1
- d1d761b0c55534e4fd25d04fbe67716804bb533e
1
+ f5ada1a24733f46ab837b688caefeb19bf357ea5
@@ -1 +1 @@
1
- 7a0b1b92a5f9d1e686ef183f991db80e48e889987047a540a13d7feb6c1c46d8
1
+ 448eeeb5944cad1e8e1a3b7187e45ae899c5647bfc29f9896a60886468dd2634
@@ -1 +1 @@
1
- 7b42995a11173fe31462572499b25c5adaa6ba5a50aff3c82a177017d3c06b3f9f2409fea4f1981186930770697cd3bc4e2849bbf5b3bf1e675ff128881bf3c4
1
+ bd1210770ba7fc0c10bc2e9f02e5ba09722363c1c10eac8f613958f0a2233c348070949c2aa4efbac3c3c236b69fb33be8474e4ab40545c3a45acb3189a91396
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-file-system",
3
- "version": "57.0.4",
3
+ "version": "57.0.6",
4
4
  "description": "Provides access to the local file system on the device.",
5
5
  "main": "src/index.ts",
6
6
  "types": "build/index.d.ts",
@@ -41,15 +41,15 @@
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^22.14.0",
44
- "expo": "57.0.13",
45
- "jest-expo": "57.0.4",
46
- "expo-module-scripts": "56.0.3"
44
+ "expo": "57.0.17",
45
+ "expo-module-scripts": "56.0.3",
46
+ "jest-expo": "57.0.5"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "expo": "*",
50
50
  "react-native": "*"
51
51
  },
52
- "gitHead": "c6fb38fc01a4f652079c1587b3a9fdf12c3196c1",
52
+ "gitHead": "c300d2cc60c9e684e64f48d9bc90ea18a571d01d",
53
53
  "scripts": {
54
54
  "build": "expo-module build",
55
55
  "clean": "expo-module clean",
@@ -254,11 +254,11 @@ export type ReadingOptions = {
254
254
  */
255
255
  encoding?: EncodingType | 'utf8' | 'base64';
256
256
  /**
257
- * Optional number of bytes to skip. This option is only used when `encoding: FileSystem.EncodingType.Base64` and `length` is defined.
257
+ * Optional number of bytes to skip before reading. This option is only used when `length` is defined.
258
258
  * */
259
259
  position?: number;
260
260
  /**
261
- * Optional number of bytes to read. This option is only used when `encoding: FileSystem.EncodingType.Base64` and `position` is defined.
261
+ * Optional number of bytes to read. This option is only used when `position` is defined.
262
262
  */
263
263
  length?: number;
264
264
  };
@@ -1 +0,0 @@
1
- b93839878f7d0d2e5b2c45d48dd3f66cbc81544c056dac4afd9b925a3ad1c470
@@ -1 +0,0 @@
1
- 088459ae823742c88f6b378e59b80fb9bf2f94769ac067636144f1e233c88509f9c5aa99f0f0500ae20f4e93b335cd07c66b846e05d26f1476776d15439977eb
@@ -1 +0,0 @@
1
- 1f810f75c6c0bace739085182ddfda3dacff48238f4251c26626cc89733178fe
@@ -1 +0,0 @@
1
- 856e77adb55cdd548e0cba3d9e14a61ed0b72cddde65ae6299b0238e510d358cfd9e8d4549f49943fab98e6d21fcfa81ddd7b71dfbe848a89d00197c6d6c907d
@@ -1 +0,0 @@
1
- ce7f90cf2e988172ecedc5501c8b446957e155b9d56443a2ede1468d9b69a6d3
@@ -1 +0,0 @@
1
- 25b073453a97f42b57ec07e4e0b486bbdf5276fb5fa2d0c9c7818f189a4a52940d33cbc93f16969a9434572f543d47f02128e106b16e71780719fec42ef3f218
@@ -1 +0,0 @@
1
- 465494d21102c95f768b6a4253ae1121b27efb9ca051fe0a029705b9654d97f6
@@ -1 +0,0 @@
1
- 1282eb29b00ff025c403a0e2353dc5d7be2cc71d45391a8be12960cac42987b351f9795b65d94431002e9ce58e6c753e103887d509ad2bfa67e2344fd514127e