expo-file-system 56.0.6 → 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.
- package/CHANGELOG.md +9 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/filesystem/FileSystemDirectory.kt +15 -0
- package/android/src/main/java/expo/modules/filesystem/FileSystemFile.kt +12 -2
- package/android/src/main/java/expo/modules/filesystem/FileSystemModule.kt +10 -4
- package/android/src/main/java/expo/modules/filesystem/FileSystemPath.kt +34 -5
- package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyModule.kt +8 -4
- package/build/legacy/FileSystem.d.ts +1 -1
- package/expo-module.config.json +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{56.0.6/expo.modules.filesystem-56.0.6-sources.jar → 56.0.7/expo.modules.filesystem-56.0.7-sources.jar} +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7-sources.jar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.aar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{56.0.6/expo.modules.filesystem-56.0.6.module → 56.0.7/expo.modules.filesystem-56.0.7.module} +22 -22
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.module.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{56.0.6/expo.modules.filesystem-56.0.6.pom → 56.0.7/expo.modules.filesystem-56.0.7.pom} +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.7/expo.modules.filesystem-56.0.7.pom.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml +4 -4
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512 +1 -1
- package/package.json +5 -5
- package/plugin/tsconfig.tsbuildinfo +1 -1
- package/prebuilds/output/debug/xcframeworks/ExpoFileSystem.tar.gz +0 -0
- package/prebuilds/output/release/xcframeworks/ExpoFileSystem.tar.gz +0 -0
- package/src/legacy/FileSystem.ts +1 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6-sources.jar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6-sources.jar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6-sources.jar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6-sources.jar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.aar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.aar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.aar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.aar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.module.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.module.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.module.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.module.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.pom.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.pom.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.pom.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/56.0.6/expo.modules.filesystem-56.0.6.pom.sha512 +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
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
|
+
|
|
13
19
|
## 56.0.6 — 2026-05-19
|
|
14
20
|
|
|
15
21
|
### 🎉 New features
|
|
@@ -19,6 +25,9 @@
|
|
|
19
25
|
### 🐛 Bug fixes
|
|
20
26
|
|
|
21
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))
|
|
22
31
|
|
|
23
32
|
### 💡 Others
|
|
24
33
|
|
package/android/build.gradle
CHANGED
|
@@ -4,13 +4,13 @@ plugins {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
group = 'host.exp.exponent'
|
|
7
|
-
version = '56.0.
|
|
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.
|
|
13
|
+
versionName "56.0.7"
|
|
14
14
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
15
15
|
}
|
|
16
16
|
testOptions {
|
|
@@ -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,
|
|
61
|
-
is SAFDocumentFile -> FileSystemFileHandle.forContentURI(fileImpl.uri,
|
|
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(
|
|
39
|
+
Uri.fromFile(filesDirectory).toString() + "/"
|
|
34
40
|
}
|
|
35
41
|
|
|
36
42
|
Constant("cacheDirectory") {
|
|
37
|
-
Uri.fromFile(
|
|
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
|
-
|
|
51
|
+
filesDirectory.totalSpace
|
|
46
52
|
}
|
|
47
53
|
|
|
48
54
|
Property("availableDiskSpace") {
|
|
49
|
-
|
|
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(),
|
|
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
|
-
|
|
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(
|
|
97
|
+
Uri.fromFile(filesDirectory).toString() + "/"
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
Constant("cacheDirectory") {
|
|
97
|
-
Uri.fromFile(
|
|
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(
|
|
112
|
-
ensureDirExists(
|
|
115
|
+
ensureDirExists(filesDirectory)
|
|
116
|
+
ensureDirExists(cacheDirectory)
|
|
113
117
|
} catch (e: Exception) {
|
|
114
118
|
e.printStackTrace()
|
|
115
119
|
}
|
|
@@ -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
|
*
|
package/expo-module.config.json
CHANGED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8c86db6d5989787cf64c8602d3906b5a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0bc8ebfa190aaa1afa8a586a5c4bb97dfbedd9ec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b5fc5f29a08c652e7361327fb756e90ca05fbaf3d0a7571ecc77434a0ac5f637
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8a6c843ad08a025b11c8f4648314ef10124fabc8f74d8b7ca5da1dde98d759311e8c94f38964f60a11f5637b26a7650026106c68923707a7216d2db4066babaf
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4e5fa3c7146f1ff08cefbc2fe3099e03
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0380e78e9711016e203cd73e128c2446a35fd885
|
|
@@ -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.
|
|
6
|
+
"version": "56.0.7",
|
|
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-56.0.
|
|
72
|
-
"url": "expo.modules.filesystem-56.0.
|
|
73
|
-
"size":
|
|
74
|
-
"sha512": "
|
|
75
|
-
"sha256": "
|
|
76
|
-
"sha1": "
|
|
77
|
-
"md5": "
|
|
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"
|
|
78
78
|
}
|
|
79
79
|
]
|
|
80
80
|
},
|
|
@@ -157,13 +157,13 @@
|
|
|
157
157
|
],
|
|
158
158
|
"files": [
|
|
159
159
|
{
|
|
160
|
-
"name": "expo.modules.filesystem-56.0.
|
|
161
|
-
"url": "expo.modules.filesystem-56.0.
|
|
162
|
-
"size":
|
|
163
|
-
"sha512": "
|
|
164
|
-
"sha256": "
|
|
165
|
-
"sha1": "
|
|
166
|
-
"md5": "
|
|
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"
|
|
167
167
|
}
|
|
168
168
|
]
|
|
169
169
|
},
|
|
@@ -177,13 +177,13 @@
|
|
|
177
177
|
},
|
|
178
178
|
"files": [
|
|
179
179
|
{
|
|
180
|
-
"name": "expo.modules.filesystem-56.0.
|
|
181
|
-
"url": "expo.modules.filesystem-56.0.
|
|
182
|
-
"size":
|
|
183
|
-
"sha512": "
|
|
184
|
-
"sha256": "
|
|
185
|
-
"sha1": "
|
|
186
|
-
"md5": "
|
|
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"
|
|
187
187
|
}
|
|
188
188
|
]
|
|
189
189
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
53524b1223178b29f1b0fd3c230a0284
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
98e5c5da826ea6231c71d6321ac8467ff1224d36
|
|
@@ -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.
|
|
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>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1902da137d5b9781afbe3ea28bc7b367
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
18e6d729a5d81e949cb77d30558cd9a674719b10
|
|
@@ -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.
|
|
7
|
-
<release>56.0.
|
|
6
|
+
<latest>56.0.7</latest>
|
|
7
|
+
<release>56.0.7</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>56.0.
|
|
9
|
+
<version>56.0.7</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20260520215035</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
a9e1745c403d87dba3e723faebf7373b
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
758a2ee1aa9cf6bb862d760703add1aaaba80d13
|
package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
0d0f0c30b81fb8176ce62eeb347736e552d955360427a1087760ddb9c353c061
|
package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
949d78138c90b891645195c6ad24bc25b6cdd1a237a46e802164c4b910f84389f487cfb2ac3608627b036466a0592ff9ea69e99e01dc243c36672813983f0b5e
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-file-system",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.7",
|
|
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": "56.0.0
|
|
45
|
-
"expo
|
|
46
|
-
"
|
|
44
|
+
"expo": "56.0.0",
|
|
45
|
+
"jest-expo": "56.0.4",
|
|
46
|
+
"expo-module-scripts": "56.0.2"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"expo": "*",
|
|
50
50
|
"react-native": "*"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "c4c9867a0bcbb188e55ecaec4998e38d33108a5d",
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "expo-module build",
|
|
55
55
|
"clean": "expo-module clean",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/
|
|
1
|
+
{"root":["./src/withfilesystem.ts"],"version":"5.9.2"}
|
|
Binary file
|
|
Binary file
|
package/src/legacy/FileSystem.ts
CHANGED
|
@@ -597,7 +597,7 @@ const baseCopyAsync = copyAsync;
|
|
|
597
597
|
* # Migrating an album
|
|
598
598
|
*
|
|
599
599
|
* ```ts
|
|
600
|
-
* import * as MediaLibrary from 'expo-media-library';
|
|
600
|
+
* import * as MediaLibrary from 'expo-media-library/legacy';
|
|
601
601
|
* import * as FileSystem from 'expo-file-system/legacy';
|
|
602
602
|
* const { StorageAccessFramework } = FileSystem;
|
|
603
603
|
*
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2b04eac6c9efb8a798f28035910d386d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
39a2b329c7638063c5952630484b01530a6111fb
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6fb4f4458a682db136e3f8316c2c72449f51df3c9067dfab4adb7320e4cd87a0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3bdf553eb365ff56c8d0ca441a0fbe5d58a53d94f0f2dc565579dfa6124318c1d3a929d7bbd81efffced17716316872c0c2dbadb03795b1cb9a707741da486b3
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
14736ddcc35c6d91585e77da11129b32
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
7be8f87daeba9f7b0465da105f97f731822069b2
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
66c88fad23aaf1b650784ba1ef259cf4f0141278893a1b42472ef36b977ccd93
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
9d5a05c062694b0a80f9830a2e39a462f8e1683c304bc0496b64203468706987369437e74cfdeee056f013de1602097b6e4ff1dda3384973ea78a0fedcf30d03
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a2ecf6354cd885e58e79a290ba291952
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2166df9c64b5a02d591d7c52cf949cfe88137b0d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
8bb9edfa93e2e55af08f2fe6f06b864d62bb3702ddca2c1a947174350f7cfd87
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
61b3a1297673a1c18140ac284bb6e38d86ec406b40966aa5bec804e79b26a775de8024a0dc499f53b9e926a82595223fb9be379ac87e0c6869735973b62e0531
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
976776a9f37b1390df7b98827a4a9558
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
67ef704f8d984b984212a1c8f807c4918a9f4dd7
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b0e49cf8d66adb123b596568005e4ebf6a5475a43850db6e49097baf39179ec5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3912c1bd64aa96e0a94f5ab76ff34175f3e3939136d4671dbec661c22d79ec6d4d1d175ff1f55367cac6645d77724b1a9d7eb2ccd63385e70d059ff36b3a1dab
|