expo-file-system 56.0.5 → 56.0.7

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 (62) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/android/build.gradle +2 -3
  3. package/android/src/main/java/expo/modules/filesystem/FileSystemDirectory.kt +15 -0
  4. package/android/src/main/java/expo/modules/filesystem/FileSystemFile.kt +12 -2
  5. package/android/src/main/java/expo/modules/filesystem/FileSystemModule.kt +10 -4
  6. package/android/src/main/java/expo/modules/filesystem/FileSystemPath.kt +34 -5
  7. package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyModule.kt +8 -4
  8. package/build/Directory.d.ts.map +1 -1
  9. package/build/File.d.ts +2 -0
  10. package/build/File.d.ts.map +1 -1
  11. package/build/legacy/FileSystem.d.ts +1 -1
  12. package/expo-module.config.json +1 -1
  13. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{56.0.5/expo.modules.filesystem-56.0.5-sources.jar → 56.0.7/expo.modules.filesystem-56.0.7-sources.jar} +0 -0
  14. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.md5 +1 -0
  15. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.sha1 +1 -0
  16. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.sha256 +1 -0
  17. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.sha512 +1 -0
  18. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar +0 -0
  19. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.md5 +1 -0
  20. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.sha1 +1 -0
  21. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.sha256 +1 -0
  22. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.sha512 +1 -0
  23. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{56.0.5/expo.modules.filesystem-56.0.5.module → 56.0.7/expo.modules.filesystem-56.0.7.module} +22 -36
  24. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.md5 +1 -0
  25. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.sha1 +1 -0
  26. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.sha256 +1 -0
  27. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.sha512 +1 -0
  28. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{56.0.5/expo.modules.filesystem-56.0.5.pom → 56.0.7/expo.modules.filesystem-56.0.7.pom} +1 -7
  29. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.md5 +1 -0
  30. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.sha1 +1 -0
  31. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.sha256 +1 -0
  32. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.sha512 +1 -0
  33. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml +4 -4
  34. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.md5 +1 -1
  35. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha1 +1 -1
  36. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256 +1 -1
  37. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512 +1 -1
  38. package/mocks/FileSystem.ts +787 -51
  39. package/package.json +4 -4
  40. package/plugin/tsconfig.tsbuildinfo +1 -1
  41. package/prebuilds/output/debug/xcframeworks/ExpoFileSystem.tar.gz +0 -0
  42. package/prebuilds/output/release/xcframeworks/ExpoFileSystem.tar.gz +0 -0
  43. package/src/Directory.ts +0 -2
  44. package/src/File.ts +10 -0
  45. package/src/legacy/FileSystem.ts +1 -1
  46. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5-sources.jar.md5 +0 -1
  47. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5-sources.jar.sha1 +0 -1
  48. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5-sources.jar.sha256 +0 -1
  49. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5-sources.jar.sha512 +0 -1
  50. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.aar +0 -0
  51. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.aar.md5 +0 -1
  52. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.aar.sha1 +0 -1
  53. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.aar.sha256 +0 -1
  54. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.aar.sha512 +0 -1
  55. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.module.md5 +0 -1
  56. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.module.sha1 +0 -1
  57. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.module.sha256 +0 -1
  58. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.module.sha512 +0 -1
  59. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.pom.md5 +0 -1
  60. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.pom.sha1 +0 -1
  61. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.pom.sha256 +0 -1
  62. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.5/expo.modules.filesystem-56.0.5.pom.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,29 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 56.0.7 — 2026-05-20
14
+
15
+ ### 🛠 Breaking changes
16
+
17
+ - [Android] In Expo Go, `Paths.cache` and `Paths.document` are now pointing to experience-isolated directories. ([#45977](https://github.com/expo/expo/pull/45977) by [@barthap](https://github.com/barthap))
18
+
19
+ ## 56.0.6 — 2026-05-19
20
+
21
+ ### 🎉 New features
22
+
23
+ - Added `File.json()` and `File.formData()` to satisfy `Blob` type augmentations in consumer projects. ([#45685](https://github.com/expo/expo/pull/45685) by [@mvincentong](https://github.com/mvincentong))
24
+
25
+ ### 🐛 Bug fixes
26
+
27
+ - Fixed the jest mock's `FileSystemFileHandle` to honor `FileMode` string values (`'r'`, `'w'`, `'wa'`, `'wt'`, `'rw'`) instead of the obsolete name table, expose handle and file metadata, and match the documented default mode for `content://` URIs. The dispatch is now exhaustive over `FileMode`, so future enum additions fail to compile in the mock. (by [@radko93](https://github.com/radko93))
28
+ - [Android] Added missing permission checks to `delete()` and `openHandle()` in the next-gen File System API. ([#45967](https://github.com/expo/expo/pull/45967) by [@barthap](https://github.com/barthap))
29
+ - [Android] Fixed path traversal vulnerability in `createFile`, `createDirectory`, and `rename` that allowed escaping the parent directory. ([#45967](https://github.com/expo/expo/pull/45967) by [@barthap](https://github.com/barthap))
30
+ - [Android] Fixed `Paths.cache` and `Paths.document` pointing to wrong directory in Expo Go. ([#45977](https://github.com/expo/expo/pull/45977) by [@barthap](https://github.com/barthap))
31
+
32
+ ### 💡 Others
33
+
34
+ - [Android] Remove unused native dependencies. ([#45939](https://github.com/expo/expo/pull/45939) by [@jakex7](https://github.com/jakex7))
35
+
13
36
  ## 56.0.5 — 2026-05-15
14
37
 
15
38
  ### 💡 Others
@@ -64,6 +87,7 @@ _This version does not introduce any user-facing changes._
64
87
 
65
88
  ### 💡 Others
66
89
 
90
+ - Add behavioral Jest mocks for the class-based `File` / `Directory` / `Paths` API, backed by an in-memory filesystem so tests can exercise create/write/read/move/copy/delete roundtrips without hand-rolling a `jest.mock`. ([#45027](https://github.com/expo/expo/pull/45027) by [@radko93](https://github.com/radko93))
67
91
  - Deprecate `modificationTime` in favor of new `lastModified`, compatible with web `File` interface. ([#43411](https://github.com/expo/expo/pull/43411) by [@HubertBer](https://github.com/HubertBer))
68
92
  - Deprecate `File.pickFileAsync(arg1, arg2)` in favour of new `File.pickFileAsync(options)`. ([#43411](https://github.com/expo/expo/pull/43411) by [@HubertBer](https://github.com/HubertBer))
69
93
  - [Android] Optimized performance of copy and move operations. ([#44357](https://github.com/expo/expo/pull/44357), [#44358](https://github.com/expo/expo/pull/44358) by [@barthap](https://github.com/barthap))
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '56.0.5'
7
+ version = '56.0.7'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.filesystem"
11
11
  defaultConfig {
12
12
  versionCode 30
13
- versionName "56.0.5"
13
+ versionName "56.0.7"
14
14
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15
15
  }
16
16
  testOptions {
@@ -24,7 +24,6 @@ dependencies {
24
24
  api 'com.squareup.okhttp3:okhttp:4.9.2'
25
25
  api 'com.squareup.okhttp3:okhttp-urlconnection:4.9.2'
26
26
  api 'com.squareup.okio:okio:2.9.0'
27
- api "androidx.legacy:legacy-support-v4:1.0.0"
28
27
  api "androidx.documentfile:documentfile:1.1.0"
29
28
  implementation 'com.facebook.react:react-android'
30
29
 
@@ -2,6 +2,7 @@ package expo.modules.filesystem
2
2
 
3
3
  import android.net.Uri
4
4
  import expo.modules.kotlin.services.FilePermissionService
5
+ import java.io.File
5
6
 
6
7
  class FileSystemDirectory(uri: Uri) : FileSystemPath(uri) {
7
8
  fun validatePath() {
@@ -76,6 +77,7 @@ class FileSystemDirectory(uri: Uri) : FileSystemPath(uri) {
76
77
  fun createFile(mimeType: String?, fileName: String): FileSystemFile {
77
78
  validateType()
78
79
  validatePermission(FilePermissionService.Permission.WRITE)
80
+ validateChildTarget(fileName)
79
81
  val newFile = file.createFile(mimeType ?: "text/plain", fileName)
80
82
  ?: throw UnableToCreateException("file could not be created")
81
83
  return FileSystemFile(newFile.uri)
@@ -84,11 +86,24 @@ class FileSystemDirectory(uri: Uri) : FileSystemPath(uri) {
84
86
  fun createDirectory(fileName: String): FileSystemDirectory {
85
87
  validateType()
86
88
  validatePermission(FilePermissionService.Permission.WRITE)
89
+ validateChildTarget(fileName)
87
90
  val newDirectory = file.createDirectory(fileName)
88
91
  ?: throw UnableToCreateException("directory could not be created")
89
92
  return FileSystemDirectory(newDirectory.uri)
90
93
  }
91
94
 
95
+ private fun validateChildTarget(fileName: String) {
96
+ validateFileSystemChildName(fileName)
97
+ if (uri.isContentUri || uri.isAssetUri) {
98
+ return
99
+ }
100
+ val parent = javaFile.canonicalFile
101
+ val child = File(parent, fileName).canonicalFile
102
+ if (child.parentFile?.canonicalPath != parent.canonicalPath) {
103
+ throw UnableToCreateException("child path escapes parent directory")
104
+ }
105
+ }
106
+
92
107
  // this function is internal and will be removed in the future (when returning arrays of shared objects is supported)
93
108
  fun listAsRecords(): List<Map<String, Any>> {
94
109
  validateType()
@@ -10,6 +10,12 @@ import expo.modules.kotlin.typedarray.TypedArray
10
10
  import java.io.FileOutputStream
11
11
  import java.security.MessageDigest
12
12
 
13
+ internal fun FileMode.requiredPermissions(): List<FilePermissionService.Permission> = when (this) {
14
+ FileMode.READ -> listOf(FilePermissionService.Permission.READ)
15
+ FileMode.WRITE, FileMode.APPEND, FileMode.TRUNCATE -> listOf(FilePermissionService.Permission.WRITE)
16
+ FileMode.READ_WRITE -> listOf(FilePermissionService.Permission.READ, FilePermissionService.Permission.WRITE)
17
+ }
18
+
13
19
  class FileSystemFile(uri: Uri) : FileSystemPath(uri) {
14
20
  private val contentResolver
15
21
  get() = appContext?.reactContext?.contentResolver ?: throw Exceptions.ReactContextLost()
@@ -56,9 +62,13 @@ class FileSystemFile(uri: Uri) : FileSystemPath(uri) {
56
62
 
57
63
  fun openHandle(mode: FileMode?): FileSystemFileHandle {
58
64
  val fileImpl = file
65
+ val resolvedMode = mode ?: if (fileImpl is SAFDocumentFile) FileMode.READ else FileMode.READ_WRITE
66
+ for (permission in resolvedMode.requiredPermissions()) {
67
+ validatePermission(permission)
68
+ }
59
69
  return when (fileImpl) {
60
- is JavaFile -> FileSystemFileHandle.forJavaFile(fileImpl, mode ?: FileMode.READ_WRITE)
61
- is SAFDocumentFile -> FileSystemFileHandle.forContentURI(fileImpl.uri, mode ?: FileMode.READ, contentResolver)
70
+ is JavaFile -> FileSystemFileHandle.forJavaFile(fileImpl, resolvedMode)
71
+ is SAFDocumentFile -> FileSystemFileHandle.forContentURI(fileImpl.uri, resolvedMode, contentResolver)
62
72
  else -> throw Exceptions.IllegalStateException("File handle is not supported for ${file.uri}")
63
73
  }
64
74
  }
@@ -21,6 +21,12 @@ class FileSystemModule : Module() {
21
21
  private val context: Context
22
22
  get() = appContext.reactContext ?: throw Exceptions.AppContextLost()
23
23
 
24
+ private val filesDirectory: File
25
+ get() = appContext.persistentFilesDirectory
26
+
27
+ private val cacheDirectory: File
28
+ get() = appContext.cacheDirectory
29
+
24
30
  private val downloadStore = DownloadTaskStore()
25
31
 
26
32
  @RequiresApi(Build.VERSION_CODES.O)
@@ -30,11 +36,11 @@ class FileSystemModule : Module() {
30
36
  Events("downloadProgress")
31
37
 
32
38
  Constant("documentDirectory") {
33
- Uri.fromFile(context.filesDir).toString() + "/"
39
+ Uri.fromFile(filesDirectory).toString() + "/"
34
40
  }
35
41
 
36
42
  Constant("cacheDirectory") {
37
- Uri.fromFile(context.cacheDir).toString() + "/"
43
+ Uri.fromFile(cacheDirectory).toString() + "/"
38
44
  }
39
45
 
40
46
  Constant("bundleDirectory") {
@@ -42,11 +48,11 @@ class FileSystemModule : Module() {
42
48
  }
43
49
 
44
50
  Property("totalDiskSpace") {
45
- File(context.filesDir.path).totalSpace
51
+ filesDirectory.totalSpace
46
52
  }
47
53
 
48
54
  Property("availableDiskSpace") {
49
- File(context.filesDir.path).freeSpace
55
+ filesDirectory.freeSpace
50
56
  }
51
57
 
52
58
  AsyncFunction("downloadFileAsync") Coroutine { url: URI, to: FileSystemPath, options: DownloadOptions?, downloadUUID: String? ->
@@ -4,7 +4,6 @@ import android.content.Context
4
4
  import android.net.Uri
5
5
  import android.os.Build
6
6
  import android.provider.DocumentsContract
7
- import androidx.core.net.toUri
8
7
  import expo.modules.filesystem.unifiedfile.AssetFile
9
8
  import expo.modules.filesystem.unifiedfile.ContentProviderFile
10
9
  import expo.modules.filesystem.fsops.DestinationSpec
@@ -21,6 +20,16 @@ import java.util.EnumSet
21
20
  import java.util.regex.Pattern
22
21
  import kotlin.io.path.moveTo
23
22
 
23
+ internal fun validateFileSystemChildName(name: String) {
24
+ val invalid = name.isEmpty() ||
25
+ name == "." ||
26
+ name == ".." ||
27
+ name.any { it == '/' || it == '\\' }
28
+ if (invalid) {
29
+ throw UnableToCreateException("child name must be a single path segment")
30
+ }
31
+ }
32
+
24
33
  val Uri.isContentUri
25
34
  get(): Boolean {
26
35
  return scheme == "content"
@@ -75,6 +84,7 @@ abstract class FileSystemPath(var uri: Uri) : SharedObject() {
75
84
  }
76
85
 
77
86
  fun delete() {
87
+ validatePermission(FilePermissionService.Permission.WRITE)
78
88
  if (!file.exists()) {
79
89
  throw UnableToDeleteException("uri '${file.uri}' does not exist")
80
90
  }
@@ -134,9 +144,12 @@ abstract class FileSystemPath(var uri: Uri) : SharedObject() {
134
144
  // TODO: Consider adding a check for asset URIs – this returns asset files of Expo Go (such as root-cert), but these are already freely available on apk mirrors ect.
135
145
  return true
136
146
  }
147
+ return checkPermissionForPath(javaFile.path, permission)
148
+ }
137
149
 
150
+ private fun checkPermissionForPath(path: String, permission: FilePermissionService.Permission): Boolean {
138
151
  val permissions = appContext?.filePermission?.getPathPermissions(
139
- appContext?.reactContext ?: throw Exceptions.ReactContextLost(), javaFile.path
152
+ appContext?.reactContext ?: throw Exceptions.ReactContextLost(), path
140
153
  ) ?: EnumSet.noneOf(FilePermissionService.Permission::class.java)
141
154
  return permissions.contains(permission)
142
155
  }
@@ -176,15 +189,31 @@ abstract class FileSystemPath(var uri: Uri) : SharedObject() {
176
189
  fun rename(newName: String) {
177
190
  validateType()
178
191
  validatePermission(FilePermissionService.Permission.WRITE)
179
- val newFile = File(javaFile.parent, newName)
192
+ validateFileSystemChildName(newName)
193
+ val parent = javaFile.parentFile
194
+ ?: throw UnableToCreateException("parent directory does not exist")
195
+ // Use canonical paths only for containment checks, so symlinks and aliases cannot escape the parent.
196
+ val parentCanonicalPath = parent.canonicalPath
197
+ val newFile = File(parent, newName)
198
+ if (newFile.canonicalFile.parentFile?.canonicalPath != parentCanonicalPath) {
199
+ throw UnableToCreateException("child path escapes parent directory")
200
+ }
180
201
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
181
202
  javaFile.toPath().moveTo(newFile.toPath())
182
- uri = newFile.toUri()
183
203
  } else {
184
204
  javaFile.copyTo(newFile)
185
205
  javaFile.delete()
186
- uri = newFile.toUri()
187
206
  }
207
+ uri = renamedUri(newName)
208
+ }
209
+
210
+ private fun renamedUri(newName: String): Uri {
211
+ // Preserve the original URI spelling; canonical paths can rewrite /data/user/0 to /data/data.
212
+ val currentUri = uri.toString()
213
+ val currentPath = currentUri.trimEnd('/')
214
+ val parentUri = currentUri.substring(0, currentPath.lastIndexOf('/') + 1)
215
+ val renamedUri = Uri.withAppendedPath(Uri.parse(parentUri), newName).toString()
216
+ return Uri.parse(if (this is FileSystemDirectory) "$renamedUri/" else renamedUri)
188
217
  }
189
218
 
190
219
  val modificationTime: Long?
@@ -80,6 +80,10 @@ fun slashifyFilePath(path: String?): String? {
80
80
  open class FileSystemLegacyModule : Module() {
81
81
  private val context: Context
82
82
  get() = appContext.reactContext ?: throw Exceptions.AppContextLost()
83
+ private val filesDirectory: File
84
+ get() = appContext.persistentFilesDirectory
85
+ private val cacheDirectory: File
86
+ get() = appContext.cacheDirectory
83
87
  private var client: OkHttpClient? = null
84
88
  private var dirPermissionsRequest: Promise? = null
85
89
  private val taskHandlers: MutableMap<String, TaskHandler> = HashMap()
@@ -90,11 +94,11 @@ open class FileSystemLegacyModule : Module() {
90
94
  Name("ExponentFileSystem")
91
95
 
92
96
  Constant("documentDirectory") {
93
- Uri.fromFile(context.filesDir).toString() + "/"
97
+ Uri.fromFile(filesDirectory).toString() + "/"
94
98
  }
95
99
 
96
100
  Constant("cacheDirectory") {
97
- Uri.fromFile(context.cacheDir).toString() + "/"
101
+ Uri.fromFile(cacheDirectory).toString() + "/"
98
102
  }
99
103
 
100
104
  Constant("bundleDirectory") {
@@ -108,8 +112,8 @@ open class FileSystemLegacyModule : Module() {
108
112
 
109
113
  OnCreate {
110
114
  try {
111
- ensureDirExists(context.filesDir)
112
- ensureDirExists(context.cacheDir)
115
+ ensureDirExists(filesDirectory)
116
+ ensureDirExists(cacheDirectory)
113
117
  } catch (e: Exception) {
114
118
  e.printStackTrace()
115
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Directory.d.ts","sourceRoot":"","sources":["../src/Directory.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAI7F;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,cAAc,CAAC,mBAAmB;IAC/D,MAAM,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvE;;;;;;;;;OASG;gBACS,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAQlD,IAAI,eAAe,cAElB;IAED;;;;OAIG;IACM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE;IAOrC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKvD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAIxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CACH,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,IAAI,EACvD,OAAO,CAAC,EAAE,YAAY,GACrB,iBAAiB;CAQrB"}
1
+ {"version":3,"file":"Directory.d.ts","sourceRoot":"","sources":["../src/Directory.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAI7F;;;;;;;;;;GAUG;AACH,qBAAa,SAAU,SAAQ,cAAc,CAAC,mBAAmB;IAC/D,MAAM,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvE;;;;;;;;;OASG;gBACS,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAQlD,IAAI,eAAe,cAElB;IAED;;;;OAIG;IACM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE;IAMrC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIvD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAIxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CACH,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,IAAI,EACvD,OAAO,CAAC,EAAE,YAAY,GACrB,iBAAiB;CAQrB"}
package/build/File.d.ts CHANGED
@@ -103,6 +103,8 @@ export declare class File extends ExpoFileSystem.FileSystemFile implements Blob
103
103
  readableStream(): ReadableStream<Uint8Array<ArrayBuffer>>;
104
104
  writableStream(): WritableStream<Uint8Array<ArrayBufferLike>>;
105
105
  arrayBuffer(): Promise<ArrayBuffer>;
106
+ json(): Promise<any>;
107
+ formData(): ReturnType<Response['formData']>;
106
108
  stream(): ReadableStream<Uint8Array<ArrayBuffer>>;
107
109
  slice(start?: number, end?: number, contentType?: string): Blob;
108
110
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAK9B;;;;;;;;;;GAUG;AACH,qBAAa,IAAK,SAAQ,cAAc,CAAC,cAAe,YAAW,IAAI;IACrE;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,iBAAiB,EAAE,CACxB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,SAAS,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IACpF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC1F;;;;;;;;;OASG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;IA8BpF;;;;;;;;;OASG;gBACS,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAQlD,IAAI,eAAe,cAElB;IAED;;;OAGG;IACH,IAAI,SAAS,WAEZ;IAED;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,cAAc;IAId,cAAc;IAMR,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAKzC,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAIjD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAInE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU;IAIlE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,IAAI,GAAG,SAAS,EAC7B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,YAAY;IAIf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,iBAAiB;CAG9F"}
1
+ {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAK9B;;;;;;;;;;GAUG;AACH,qBAAa,IAAK,SAAQ,cAAc,CAAC,cAAe,YAAW,IAAI;IACrE;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,iBAAiB,EAAE,CACxB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,SAAS,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IACpF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC1F;;;;;;;;;OASG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;IA8BpF;;;;;;;;;OASG;gBACS,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAQlD,IAAI,eAAe,cAElB;IAED;;;OAGG;IACH,IAAI,SAAS,WAEZ;IAED;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,cAAc;IAId,cAAc;IAMR,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAKnC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IAIpB,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAMlD,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAIjD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAInE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU;IAIlE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,IAAI,GAAG,SAAS,EAC7B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,YAAY;IAIf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,iBAAiB;CAG9F"}
@@ -245,7 +245,7 @@ export declare class DownloadResumable extends FileSystemCancellableNetworkTask<
245
245
  * # Migrating an album
246
246
  *
247
247
  * ```ts
248
- * import * as MediaLibrary from 'expo-media-library';
248
+ * import * as MediaLibrary from 'expo-media-library/legacy';
249
249
  * import * as FileSystem from 'expo-file-system/legacy';
250
250
  * const { StorageAccessFramework } = FileSystem;
251
251
  *
@@ -12,7 +12,7 @@
12
12
  "publication": {
13
13
  "groupId": "host.exp.exponent",
14
14
  "artifactId": "expo.modules.filesystem",
15
- "version": "56.0.5",
15
+ "version": "56.0.7",
16
16
  "repository": "local-maven-repo"
17
17
  }
18
18
  }
@@ -0,0 +1 @@
1
+ b5fc5f29a08c652e7361327fb756e90ca05fbaf3d0a7571ecc77434a0ac5f637
@@ -0,0 +1 @@
1
+ 8a6c843ad08a025b11c8f4648314ef10124fabc8f74d8b7ca5da1dde98d759311e8c94f38964f60a11f5637b26a7650026106c68923707a7216d2db4066babaf
@@ -0,0 +1 @@
1
+ c2cd86769ee9f7cfede39533f08e62912d4be5c82fe3faf5f718da261f5a1411
@@ -0,0 +1 @@
1
+ 69a06ff7183c02c217e59e7960dc338ef0dda278f947e75ee875513710f9c8e1e0eba0aa6c03bc40ca79c6b0c5fa66dd084660a70f2da5e88b8349c04bdb8b91
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.filesystem",
6
- "version": "56.0.5",
6
+ "version": "56.0.7",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -58,13 +58,6 @@
58
58
  "requires": "2.9.0"
59
59
  }
60
60
  },
61
- {
62
- "group": "androidx.legacy",
63
- "module": "legacy-support-v4",
64
- "version": {
65
- "requires": "1.0.0"
66
- }
67
- },
68
61
  {
69
62
  "group": "androidx.documentfile",
70
63
  "module": "documentfile",
@@ -75,13 +68,13 @@
75
68
  ],
76
69
  "files": [
77
70
  {
78
- "name": "expo.modules.filesystem-56.0.5.aar",
79
- "url": "expo.modules.filesystem-56.0.5.aar",
80
- "size": 689001,
81
- "sha512": "9d5a05c062694b0a80f9830a2e39a462f8e1683c304bc0496b64203468706987369437e74cfdeee056f013de1602097b6e4ff1dda3384973ea78a0fedcf30d03",
82
- "sha256": "66c88fad23aaf1b650784ba1ef259cf4f0141278893a1b42472ef36b977ccd93",
83
- "sha1": "7be8f87daeba9f7b0465da105f97f731822069b2",
84
- "md5": "14736ddcc35c6d91585e77da11129b32"
71
+ "name": "expo.modules.filesystem-56.0.7.aar",
72
+ "url": "expo.modules.filesystem-56.0.7.aar",
73
+ "size": 692387,
74
+ "sha512": "69a06ff7183c02c217e59e7960dc338ef0dda278f947e75ee875513710f9c8e1e0eba0aa6c03bc40ca79c6b0c5fa66dd084660a70f2da5e88b8349c04bdb8b91",
75
+ "sha256": "c2cd86769ee9f7cfede39533f08e62912d4be5c82fe3faf5f718da261f5a1411",
76
+ "sha1": "0380e78e9711016e203cd73e128c2446a35fd885",
77
+ "md5": "4e5fa3c7146f1ff08cefbc2fe3099e03"
85
78
  }
86
79
  ]
87
80
  },
@@ -147,13 +140,6 @@
147
140
  "requires": "2.9.0"
148
141
  }
149
142
  },
150
- {
151
- "group": "androidx.legacy",
152
- "module": "legacy-support-v4",
153
- "version": {
154
- "requires": "1.0.0"
155
- }
156
- },
157
143
  {
158
144
  "group": "androidx.documentfile",
159
145
  "module": "documentfile",
@@ -171,13 +157,13 @@
171
157
  ],
172
158
  "files": [
173
159
  {
174
- "name": "expo.modules.filesystem-56.0.5.aar",
175
- "url": "expo.modules.filesystem-56.0.5.aar",
176
- "size": 689001,
177
- "sha512": "9d5a05c062694b0a80f9830a2e39a462f8e1683c304bc0496b64203468706987369437e74cfdeee056f013de1602097b6e4ff1dda3384973ea78a0fedcf30d03",
178
- "sha256": "66c88fad23aaf1b650784ba1ef259cf4f0141278893a1b42472ef36b977ccd93",
179
- "sha1": "7be8f87daeba9f7b0465da105f97f731822069b2",
180
- "md5": "14736ddcc35c6d91585e77da11129b32"
160
+ "name": "expo.modules.filesystem-56.0.7.aar",
161
+ "url": "expo.modules.filesystem-56.0.7.aar",
162
+ "size": 692387,
163
+ "sha512": "69a06ff7183c02c217e59e7960dc338ef0dda278f947e75ee875513710f9c8e1e0eba0aa6c03bc40ca79c6b0c5fa66dd084660a70f2da5e88b8349c04bdb8b91",
164
+ "sha256": "c2cd86769ee9f7cfede39533f08e62912d4be5c82fe3faf5f718da261f5a1411",
165
+ "sha1": "0380e78e9711016e203cd73e128c2446a35fd885",
166
+ "md5": "4e5fa3c7146f1ff08cefbc2fe3099e03"
181
167
  }
182
168
  ]
183
169
  },
@@ -191,13 +177,13 @@
191
177
  },
192
178
  "files": [
193
179
  {
194
- "name": "expo.modules.filesystem-56.0.5-sources.jar",
195
- "url": "expo.modules.filesystem-56.0.5-sources.jar",
196
- "size": 49979,
197
- "sha512": "3bdf553eb365ff56c8d0ca441a0fbe5d58a53d94f0f2dc565579dfa6124318c1d3a929d7bbd81efffced17716316872c0c2dbadb03795b1cb9a707741da486b3",
198
- "sha256": "6fb4f4458a682db136e3f8316c2c72449f51df3c9067dfab4adb7320e4cd87a0",
199
- "sha1": "39a2b329c7638063c5952630484b01530a6111fb",
200
- "md5": "2b04eac6c9efb8a798f28035910d386d"
180
+ "name": "expo.modules.filesystem-56.0.7-sources.jar",
181
+ "url": "expo.modules.filesystem-56.0.7-sources.jar",
182
+ "size": 50736,
183
+ "sha512": "8a6c843ad08a025b11c8f4648314ef10124fabc8f74d8b7ca5da1dde98d759311e8c94f38964f60a11f5637b26a7650026106c68923707a7216d2db4066babaf",
184
+ "sha256": "b5fc5f29a08c652e7361327fb756e90ca05fbaf3d0a7571ecc77434a0ac5f637",
185
+ "sha1": "0bc8ebfa190aaa1afa8a586a5c4bb97dfbedd9ec",
186
+ "md5": "8c86db6d5989787cf64c8602d3906b5a"
201
187
  }
202
188
  ]
203
189
  }
@@ -0,0 +1 @@
1
+ 9700715fc80c364e8146a039eb97f44c1e2141548c30f60d376470c3c97fc0d2
@@ -0,0 +1 @@
1
+ 42af6a5038ae52024d884d09b0135e84a58cadafef52a8997e4e58afc24154e966655e3db21b545f847144ba1585493fa1aea7b379f70d2a5b1b7f3f1522c486
@@ -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>56.0.5</version>
12
+ <version>56.0.7</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.filesystem</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -67,12 +67,6 @@
67
67
  <version>2.9.0</version>
68
68
  <scope>compile</scope>
69
69
  </dependency>
70
- <dependency>
71
- <groupId>androidx.legacy</groupId>
72
- <artifactId>legacy-support-v4</artifactId>
73
- <version>1.0.0</version>
74
- <scope>compile</scope>
75
- </dependency>
76
70
  <dependency>
77
71
  <groupId>androidx.documentfile</groupId>
78
72
  <artifactId>documentfile</artifactId>
@@ -0,0 +1 @@
1
+ 687f8ec34fe321b6901456ea396d8e6eb164947f6253406a67e896fdf0430789
@@ -0,0 +1 @@
1
+ 64a1a0c70fd22accaa634494542a5c2ae58becfcbd8d8cc2e9d85800699c8741fc87823b721a40b51261c4fb52031ddde9cc0cc2b8769aa901f8c59fc7a8d4ed
@@ -3,11 +3,11 @@
3
3
  <groupId>host.exp.exponent</groupId>
4
4
  <artifactId>expo.modules.filesystem</artifactId>
5
5
  <versioning>
6
- <latest>56.0.5</latest>
7
- <release>56.0.5</release>
6
+ <latest>56.0.7</latest>
7
+ <release>56.0.7</release>
8
8
  <versions>
9
- <version>56.0.5</version>
9
+ <version>56.0.7</version>
10
10
  </versions>
11
- <lastUpdated>20260515152500</lastUpdated>
11
+ <lastUpdated>20260520215035</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- b8070f789142e19815310c77d494db60
1
+ a9e1745c403d87dba3e723faebf7373b
@@ -1 +1 @@
1
- 8d958b446d8a7db5eab6d6e2e01f207c178eb992
1
+ 758a2ee1aa9cf6bb862d760703add1aaaba80d13
@@ -1 +1 @@
1
- b2a1e6d073b5fd57f4c2214864a487c19f88f7163b4fb1419022acdc1f3b968f
1
+ 0d0f0c30b81fb8176ce62eeb347736e552d955360427a1087760ddb9c353c061
@@ -1 +1 @@
1
- b3a158c00306aa15a609b8ca88cc124c03ab1b80b6788f33482550e93b869040467f7fe4d38d6e2fda9253949327fe34c4c964b2fb37c327fc873520fec41f63
1
+ 949d78138c90b891645195c6ad24bc25b6cdd1a237a46e802164c4b910f84389f487cfb2ac3608627b036466a0592ff9ea69e99e01dc243c36672813983f0b5e