expo-file-system 58.0.2 → 58.0.4
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 +8 -4
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/filesystem/FileSystemDownloadTask.kt +2 -0
- package/android/src/main/java/expo/modules/filesystem/FileSystemPath.kt +65 -2
- package/android/src/main/java/expo/modules/filesystem/FileSystemUploadTask.kt +2 -0
- package/android/src/main/java/expo/modules/filesystem/FileSystemWatcher.kt +10 -0
- package/expo-module.config.json +0 -1
- package/ios/FileSystemFileHandle.swift +25 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{58.0.2/expo.modules.filesystem-58.0.2-sources.jar → 58.0.4/expo.modules.filesystem-58.0.4-sources.jar} +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4-sources.jar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4-sources.jar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4-sources.jar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4-sources.jar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.aar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.aar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.aar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.aar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{58.0.2/expo.modules.filesystem-58.0.2.module → 58.0.4/expo.modules.filesystem-58.0.4.module} +23 -23
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.module.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.module.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.module.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.module.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{58.0.2/expo.modules.filesystem-58.0.2.pom → 58.0.4/expo.modules.filesystem-58.0.4.pom} +2 -2
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.pom.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.pom.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.pom.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.4/expo.modules.filesystem-58.0.4.pom.sha512 +1 -0
- package/package.json +4 -4
- package/prebuilds/output/debug/xcframeworks/ExpoFileSystem.tar.gz +0 -0
- package/prebuilds/output/release/xcframeworks/ExpoFileSystem.tar.gz +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2-sources.jar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2-sources.jar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2-sources.jar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2-sources.jar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.aar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.aar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.aar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.aar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.module.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.module.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.module.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.module.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.pom.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.pom.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.pom.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/58.0.2/expo.modules.filesystem-58.0.2.pom.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml +0 -13
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512 +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 58.0.4
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Patch Changes
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- Force-bump all packages, due to migration to changesets. ([#50762](https://github.com/expo/expo/pull/50762) by [@kitten](https://github.com/kitten))
|
|
8
|
+
|
|
9
|
+
## 58.0.3 — 2026-09-28
|
|
8
10
|
|
|
9
11
|
### 🐛 Bug fixes
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
- [Android] Added missing permission checks to upload tasks and to file watchers. ([#50582](https://github.com/expo/expo/pull/50582) by [@barthap](https://github.com/barthap))
|
|
14
|
+
- [iOS] Added a missing permission check when opening a file handle. ([#50583](https://github.com/expo/expo/pull/50583) by [@barthap](https://github.com/barthap))
|
|
15
|
+
- [Android] Check permissions for `content://` URIs served by the app's own file providers. ([#50584](https://github.com/expo/expo/pull/50584) by [@barthap](https://github.com/barthap))
|
|
12
16
|
|
|
13
17
|
## 58.0.2 — 2026-09-25
|
|
14
18
|
|
package/android/build.gradle
CHANGED
|
@@ -4,13 +4,13 @@ plugins {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
group = 'host.exp.exponent'
|
|
7
|
-
version = '58.0.
|
|
7
|
+
version = '58.0.4'
|
|
8
8
|
|
|
9
9
|
android {
|
|
10
10
|
namespace "expo.modules.filesystem"
|
|
11
11
|
defaultConfig {
|
|
12
12
|
versionCode 30
|
|
13
|
-
versionName "58.0.
|
|
13
|
+
versionName "58.0.4"
|
|
14
14
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
15
15
|
}
|
|
16
16
|
testOptions {
|
|
@@ -8,6 +8,7 @@ import expo.modules.filesystem.unifiedfile.SAFDocumentFile
|
|
|
8
8
|
import expo.modules.filesystem.unifiedfile.UnifiedFileInterface
|
|
9
9
|
import expo.modules.kotlin.records.Field
|
|
10
10
|
import expo.modules.kotlin.records.Record
|
|
11
|
+
import expo.modules.kotlin.services.FilePermissionService
|
|
11
12
|
import expo.modules.kotlin.sharedobjects.SharedObject
|
|
12
13
|
import expo.modules.kotlin.types.OptimizedRecord
|
|
13
14
|
import kotlinx.coroutines.Dispatchers
|
|
@@ -318,6 +319,7 @@ fun calculateDownloadTotalBytes(
|
|
|
318
319
|
}
|
|
319
320
|
|
|
320
321
|
fun resolveDownloadDestination(to: FileSystemPath, url: URI): UnifiedFileInterface {
|
|
322
|
+
to.validatePermission(FilePermissionService.Permission.WRITE)
|
|
321
323
|
return when (to) {
|
|
322
324
|
is FileSystemDirectory -> {
|
|
323
325
|
val filename = url.filename
|
|
@@ -4,6 +4,7 @@ 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.content.FileProvider
|
|
7
8
|
import expo.modules.filesystem.unifiedfile.AssetFile
|
|
8
9
|
import expo.modules.filesystem.unifiedfile.ContentProviderFile
|
|
9
10
|
import expo.modules.filesystem.fsops.DestinationSpec
|
|
@@ -16,6 +17,7 @@ import kotlinx.coroutines.withContext
|
|
|
16
17
|
import expo.modules.kotlin.services.FilePermissionService
|
|
17
18
|
import expo.modules.kotlin.sharedobjects.SharedObject
|
|
18
19
|
import java.io.File
|
|
20
|
+
import java.io.IOException
|
|
19
21
|
import java.util.EnumSet
|
|
20
22
|
import java.util.regex.Pattern
|
|
21
23
|
import kotlin.io.path.moveTo
|
|
@@ -137,8 +139,19 @@ abstract class FileSystemPath(var uri: Uri) : SharedObject() {
|
|
|
137
139
|
|
|
138
140
|
fun checkPermission(permission: FilePermissionService.Permission): Boolean {
|
|
139
141
|
if (uri.isContentUri) {
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
+
// Content URIs served by this app's own FileProviders map back onto the internal files and
|
|
143
|
+
// cache trees. In Expo Go those trees hold every experience's sandbox, and an in-process
|
|
144
|
+
// caller reaches any provider regardless of android:exported, so the file the provider would
|
|
145
|
+
// serve has to clear the same check as the equivalent file:// path. Every other content URI
|
|
146
|
+
// keeps the previous behaviour.
|
|
147
|
+
val internalFile = try {
|
|
148
|
+
internalFileServedByOwnProvider()
|
|
149
|
+
} catch (e: IOException) {
|
|
150
|
+
// The authority is ours but the path would not canonicalize. Fail closed: we cannot tell
|
|
151
|
+
// which file this URI serves, and every foreign provider has already returned above.
|
|
152
|
+
return false
|
|
153
|
+
} ?: return true
|
|
154
|
+
return checkPermissionForPath(internalFile.path, permission)
|
|
142
155
|
}
|
|
143
156
|
if (uri.isAssetUri) {
|
|
144
157
|
// 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 etc.
|
|
@@ -147,6 +160,56 @@ abstract class FileSystemPath(var uri: Uri) : SharedObject() {
|
|
|
147
160
|
return checkPermissionForPath(javaFile.path, permission)
|
|
148
161
|
}
|
|
149
162
|
|
|
163
|
+
/**
|
|
164
|
+
* The file one of this app's own FileProviders would serve for [uri], or null when the URI is not
|
|
165
|
+
* served by this app or does not resolve under the internal files/cache trees.
|
|
166
|
+
*
|
|
167
|
+
* The candidate is verified by asking FileProvider to map it back to a URI. A provider serves a
|
|
168
|
+
* file under the most specific root it has configured, so a matching first path segment proves the
|
|
169
|
+
* candidate is the file this URI resolves to. Going through FileProvider avoids hardcoding
|
|
170
|
+
* authorities or root names, which differ between the providers this app ships.
|
|
171
|
+
*/
|
|
172
|
+
private fun internalFileServedByOwnProvider(): File? {
|
|
173
|
+
val context = appContext?.reactContext ?: return null
|
|
174
|
+
// ContentResolver drops a "<userId>@" prefix before it looks the provider up, but
|
|
175
|
+
// PackageManager does not. Strip it here too, otherwise "content://0@<own authority>/..."
|
|
176
|
+
// looks like a foreign provider while still being served by ours.
|
|
177
|
+
val authority = uri.authority?.substringAfterLast('@') ?: return null
|
|
178
|
+
val provider = context.packageManager.resolveContentProvider(authority, 0) ?: return null
|
|
179
|
+
if (provider.packageName != context.packageName) {
|
|
180
|
+
return null
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
val segments = uri.pathSegments
|
|
184
|
+
if (segments.size < 2) {
|
|
185
|
+
return null
|
|
186
|
+
}
|
|
187
|
+
val rootName = segments.first()
|
|
188
|
+
val relativePath = segments.drop(1).joinToString("/")
|
|
189
|
+
|
|
190
|
+
return listOf(context.filesDir, context.cacheDir)
|
|
191
|
+
.asSequence()
|
|
192
|
+
.map { root -> root to File(root, relativePath).canonicalFile }
|
|
193
|
+
.filter { (root, candidate) -> candidate.path.startsWith(root.canonicalPath + "/") }
|
|
194
|
+
.firstOrNull { (_, candidate) -> servesSamePath(authority, candidate, rootName, context) }
|
|
195
|
+
?.second
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
private fun servesSamePath(
|
|
199
|
+
authority: String,
|
|
200
|
+
candidate: File,
|
|
201
|
+
rootName: String,
|
|
202
|
+
context: Context
|
|
203
|
+
): Boolean {
|
|
204
|
+
val servedUri = try {
|
|
205
|
+
FileProvider.getUriForFile(context, authority, candidate)
|
|
206
|
+
} catch (e: IllegalArgumentException) {
|
|
207
|
+
// The candidate is outside every root this provider serves.
|
|
208
|
+
return false
|
|
209
|
+
}
|
|
210
|
+
return servedUri.pathSegments.firstOrNull() == rootName
|
|
211
|
+
}
|
|
212
|
+
|
|
150
213
|
private fun checkPermissionForPath(path: String, permission: FilePermissionService.Permission): Boolean {
|
|
151
214
|
val permissions = appContext?.filePermission?.getPathPermissions(
|
|
152
215
|
appContext?.reactContext ?: throw Exceptions.ReactContextLost(), path
|
|
@@ -5,6 +5,7 @@ import expo.modules.filesystem.unifiedfile.UnifiedFileInterface
|
|
|
5
5
|
import expo.modules.kotlin.types.Enumerable
|
|
6
6
|
import expo.modules.kotlin.records.Field
|
|
7
7
|
import expo.modules.kotlin.records.Record
|
|
8
|
+
import expo.modules.kotlin.services.FilePermissionService
|
|
8
9
|
import expo.modules.kotlin.sharedobjects.SharedObject
|
|
9
10
|
import expo.modules.kotlin.types.OptimizedRecord
|
|
10
11
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
@@ -83,6 +84,7 @@ class FileSystemUploadTask : SharedObject() {
|
|
|
83
84
|
private val progressThrottleInterval = 100.milliseconds
|
|
84
85
|
|
|
85
86
|
suspend fun start(url: String, file: FileSystemFile, options: UploadTaskOptions): UploadTaskResult {
|
|
87
|
+
file.validatePermission(FilePermissionService.Permission.READ)
|
|
86
88
|
cancelled = false
|
|
87
89
|
val request = buildUploadRequest(url, file, options)
|
|
88
90
|
return executeUploadRequest(request)
|
|
@@ -5,8 +5,10 @@ import android.os.Build
|
|
|
5
5
|
import android.os.FileObserver
|
|
6
6
|
import androidx.core.net.toUri
|
|
7
7
|
import expo.modules.kotlin.AppContext
|
|
8
|
+
import expo.modules.kotlin.exception.Exceptions
|
|
8
9
|
import expo.modules.kotlin.records.Field
|
|
9
10
|
import expo.modules.kotlin.records.Record
|
|
11
|
+
import expo.modules.kotlin.services.FilePermissionService
|
|
10
12
|
import expo.modules.kotlin.types.Enumerable
|
|
11
13
|
import expo.modules.kotlin.sharedobjects.SharedObject
|
|
12
14
|
import expo.modules.kotlin.types.OptimizedRecord
|
|
@@ -82,6 +84,14 @@ internal class FileSystemWatcher(
|
|
|
82
84
|
if (!watchedFile.canRead()) {
|
|
83
85
|
throw WatcherPermissionException(path)
|
|
84
86
|
}
|
|
87
|
+
// Watching a directory reports the names of the files inside it and every change to them, so it
|
|
88
|
+
// needs the same read permission as reading those files. canRead() only reflects the process
|
|
89
|
+
// UID, which in Expo Go is shared by every experience.
|
|
90
|
+
val context = appContext.reactContext ?: throw Exceptions.ReactContextLost()
|
|
91
|
+
val permissions = appContext.filePermission?.getPathPermissions(context, watchedFile.path)
|
|
92
|
+
if (permissions?.contains(FilePermissionService.Permission.READ) != true) {
|
|
93
|
+
throw WatcherPermissionException(path)
|
|
94
|
+
}
|
|
85
95
|
|
|
86
96
|
watchedUri = watchedFile.toUri()
|
|
87
97
|
isWatchingDirectory = watchedFile.isDirectory
|
package/expo-module.config.json
CHANGED
|
@@ -20,6 +20,18 @@ enum FileMode: String, Enumerable {
|
|
|
20
20
|
var writeOnly: Bool {
|
|
21
21
|
return self == .write || self == .append || self == .truncate
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
/// Permissions a handle opened in this mode needs. Mirrors `FileMode.requiredPermissions()` on Android.
|
|
25
|
+
var requiredPermissions: [FileSystemPermissionFlags] {
|
|
26
|
+
switch self {
|
|
27
|
+
case .read:
|
|
28
|
+
return [.read]
|
|
29
|
+
case .write, .append, .truncate:
|
|
30
|
+
return [.write]
|
|
31
|
+
case .readWrite:
|
|
32
|
+
return [.read, .write]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
23
35
|
}
|
|
24
36
|
|
|
25
37
|
@available(iOS 14, tvOS 14, *)
|
|
@@ -32,8 +44,20 @@ internal final class FileSystemFileHandle: SharedRef<FileHandle> {
|
|
|
32
44
|
private let lock = NSLock() // non-reentrant. Don't use it in recursive calls
|
|
33
45
|
|
|
34
46
|
init(file: FileSystemFile, mode: FileMode?) throws {
|
|
47
|
+
// Callers that ask for a specific mode get exactly that mode checked. When no mode is given we
|
|
48
|
+
// fall back to read-only on a path that is not writable, so opening a bundled file keeps working
|
|
49
|
+
// without having to pass "r" from JavaScript. A path that permits neither still fails below.
|
|
50
|
+
let resolvedMode = mode ?? (file.checkPermission(.write) ? FileMode.readWrite : FileMode.read)
|
|
35
51
|
self.file = file
|
|
36
|
-
self.mode =
|
|
52
|
+
self.mode = resolvedMode
|
|
53
|
+
|
|
54
|
+
// Opening a handle hands out raw read/write access to the file, so it has to clear the same
|
|
55
|
+
// permission check as every other read and write. Without this, JavaScript could open a file
|
|
56
|
+
// belonging to another Expo Go experience, which the scoped permission service denies.
|
|
57
|
+
for permission in resolvedMode.requiredPermissions {
|
|
58
|
+
try file.validatePermission(permission)
|
|
59
|
+
}
|
|
60
|
+
|
|
37
61
|
self.didAccessSecurityScope = file.url.startAccessingSecurityScopedResource()
|
|
38
62
|
|
|
39
63
|
do {
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fe8eefe17b59a662796cf3943c21a194
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e550922137f77454a0d11fa3ad650256082de0c0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
36cf581996460a6e5255566cd49701d7da5d9eeeedce8c384d5506c87d4c4745
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d2ddca5f614fec6403246c467e804fd0c53d8dc57bcdf2e369690b442f375fa9d2a328af645125f22de9ec796dc984acd062f82c33fbc59632c3ac1713063609
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4060c08ec71f069364aa1b8ed64329d7
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e27167b5cb8e3ae35ef824839c878da25e3e79be
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
285b393ab98bddc521bd3cb71eb8c1927671b44bb2a10d46382a5bcbb27049e7
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
afb749d79c17718b5f03123d1d77c194c7e67c2fee5cb4ae120f32b5222e66fdc26834dcbb7ff3b1a9b8a6ec65e56ac46bfea77a2765f7ac6ec4289ec83ae6dd
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "host.exp.exponent",
|
|
5
5
|
"module": "expo.modules.filesystem",
|
|
6
|
-
"version": "58.0.
|
|
6
|
+
"version": "58.0.4",
|
|
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-58.0.
|
|
72
|
-
"url": "expo.modules.filesystem-58.0.
|
|
73
|
-
"size":
|
|
74
|
-
"sha512": "
|
|
75
|
-
"sha256": "
|
|
76
|
-
"sha1": "
|
|
77
|
-
"md5": "
|
|
71
|
+
"name": "expo.modules.filesystem-58.0.4.aar",
|
|
72
|
+
"url": "expo.modules.filesystem-58.0.4.aar",
|
|
73
|
+
"size": 763939,
|
|
74
|
+
"sha512": "afb749d79c17718b5f03123d1d77c194c7e67c2fee5cb4ae120f32b5222e66fdc26834dcbb7ff3b1a9b8a6ec65e56ac46bfea77a2765f7ac6ec4289ec83ae6dd",
|
|
75
|
+
"sha256": "285b393ab98bddc521bd3cb71eb8c1927671b44bb2a10d46382a5bcbb27049e7",
|
|
76
|
+
"sha1": "e27167b5cb8e3ae35ef824839c878da25e3e79be",
|
|
77
|
+
"md5": "4060c08ec71f069364aa1b8ed64329d7"
|
|
78
78
|
}
|
|
79
79
|
]
|
|
80
80
|
},
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"group": "org.jetbrains.kotlin",
|
|
92
92
|
"module": "kotlin-stdlib-jdk7",
|
|
93
93
|
"version": {
|
|
94
|
-
"requires": "2.2.
|
|
94
|
+
"requires": "2.2.10"
|
|
95
95
|
}
|
|
96
96
|
},
|
|
97
97
|
{
|
|
@@ -157,13 +157,13 @@
|
|
|
157
157
|
],
|
|
158
158
|
"files": [
|
|
159
159
|
{
|
|
160
|
-
"name": "expo.modules.filesystem-58.0.
|
|
161
|
-
"url": "expo.modules.filesystem-58.0.
|
|
162
|
-
"size":
|
|
163
|
-
"sha512": "
|
|
164
|
-
"sha256": "
|
|
165
|
-
"sha1": "
|
|
166
|
-
"md5": "
|
|
160
|
+
"name": "expo.modules.filesystem-58.0.4.aar",
|
|
161
|
+
"url": "expo.modules.filesystem-58.0.4.aar",
|
|
162
|
+
"size": 763939,
|
|
163
|
+
"sha512": "afb749d79c17718b5f03123d1d77c194c7e67c2fee5cb4ae120f32b5222e66fdc26834dcbb7ff3b1a9b8a6ec65e56ac46bfea77a2765f7ac6ec4289ec83ae6dd",
|
|
164
|
+
"sha256": "285b393ab98bddc521bd3cb71eb8c1927671b44bb2a10d46382a5bcbb27049e7",
|
|
165
|
+
"sha1": "e27167b5cb8e3ae35ef824839c878da25e3e79be",
|
|
166
|
+
"md5": "4060c08ec71f069364aa1b8ed64329d7"
|
|
167
167
|
}
|
|
168
168
|
]
|
|
169
169
|
},
|
|
@@ -177,13 +177,13 @@
|
|
|
177
177
|
},
|
|
178
178
|
"files": [
|
|
179
179
|
{
|
|
180
|
-
"name": "expo.modules.filesystem-58.0.
|
|
181
|
-
"url": "expo.modules.filesystem-58.0.
|
|
182
|
-
"size":
|
|
183
|
-
"sha512": "
|
|
184
|
-
"sha256": "
|
|
185
|
-
"sha1": "
|
|
186
|
-
"md5": "
|
|
180
|
+
"name": "expo.modules.filesystem-58.0.4-sources.jar",
|
|
181
|
+
"url": "expo.modules.filesystem-58.0.4-sources.jar",
|
|
182
|
+
"size": 53972,
|
|
183
|
+
"sha512": "d2ddca5f614fec6403246c467e804fd0c53d8dc57bcdf2e369690b442f375fa9d2a328af645125f22de9ec796dc984acd062f82c33fbc59632c3ac1713063609",
|
|
184
|
+
"sha256": "36cf581996460a6e5255566cd49701d7da5d9eeeedce8c384d5506c87d4c4745",
|
|
185
|
+
"sha1": "e550922137f77454a0d11fa3ad650256082de0c0",
|
|
186
|
+
"md5": "fe8eefe17b59a662796cf3943c21a194"
|
|
187
187
|
}
|
|
188
188
|
]
|
|
189
189
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c19b18c97ecb968faf1fd479621f02f6
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1447b8ede591d4517bde21ef83c784aa555d7665
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
59b5207a2d737ef665daddcbbe839dbd015d4700782f92e14016cf55f1d91788
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ddc5eec72f9935ee6df45a3ddab84293d462254613e0c790e59b4a8bb526a3f47d8d00ee79c5c0b4978e4e2c99464ff70dc204a25b4a2cb6a296599bf380e34b
|
|
@@ -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>58.0.
|
|
12
|
+
<version>58.0.4</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.filesystem</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
<dependency>
|
|
77
77
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
78
78
|
<artifactId>kotlin-stdlib-jdk7</artifactId>
|
|
79
|
-
<version>2.2.
|
|
79
|
+
<version>2.2.10</version>
|
|
80
80
|
<scope>runtime</scope>
|
|
81
81
|
</dependency>
|
|
82
82
|
<dependency>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
27d35da0c81f56a50c7a5d713793b622
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a142dbe17d1ad6d355bbcd0e5b3329ccdd5d311d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
79834e42c7ff234065c94685395520232dac55eee08280348b332a2f5138e8e8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8c65ae745e514c90aac4634823fa6bb8accca329e98161487c3617047b7f230d934fc72c18fde855a6476e42c425859ba5262ad500bc96c7a23937983cc3b292
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-file-system",
|
|
3
|
-
"version": "58.0.
|
|
3
|
+
"version": "58.0.4",
|
|
4
4
|
"description": "Provides access to the local file system on the device.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"expo",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/jest": "^29.2.1",
|
|
57
57
|
"@types/node": "^22.14.0",
|
|
58
|
-
"expo-module-scripts": "56.0.
|
|
59
|
-
"jest-expo": "58.0.
|
|
58
|
+
"expo-module-scripts": "56.0.4",
|
|
59
|
+
"jest-expo": "58.0.5"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"expo": "*",
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"jest": {
|
|
66
66
|
"preset": "expo-module-scripts"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "ad41d067bd3df6dd12f1788acc6b54a68e7a650d",
|
|
69
68
|
"scripts": {
|
|
70
69
|
"precompile-ios": "et prebuild-package-for-publish",
|
|
70
|
+
"precompile-android": "et prebuild-android-package-for-publish",
|
|
71
71
|
"build": "pnpm run build:lib && pnpm run build:plugin",
|
|
72
72
|
"build:lib": "expo-build src",
|
|
73
73
|
"build:plugin": "expo-build --base plugin cjs:src",
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
454177555eda494f98f3835dfe600bfe
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
aabfc053d71bd3b6f0bcde54f2b3c2f51288adb8
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2e6ad5f7df771232299130f53feacfca90a78a253f6233ed93712d81d0ec839e
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3b0f98abf47cb14cd67f832860f8570678a5252397cc401ad9fece2b2a1da29648aa98ec039edae6074a3045cea3a8780530204d6d14bbe2ef2b925c99436d95
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2889e74f3d23500423d7ee3885b8adbf
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d2e08b1646752a37de3e5e2a47e3eb7d0f5361ff
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
bdc5761e7ae67ac551dc575622c118bce1bdfe04d4a3af6c3cb50a139ce151d3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a6a36939c4f2175dd1240f35aa5c7135c72a0e1161eb7d1b66b9582fac558f9851004d73c98f388a54138e819bbddb73d3de791d69a80e789722a31d2fb34427
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ce952d96abe9087b04681d8bd8f77ee2
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b8b621a91695f44341dee962f7824dfc8990cf77
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b627b701f2b6f8563709726e6dc87ade664245edd6ad7e4fcea4952515f321b2
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
45c5493cb85995db523a635c79f9031558bce9c8e5d01c84eff55f20fffac01f449ab5655138f603c35722f69dd48d4aef38c25dc2c14482081a34e2d09c46c3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1914b7f5652ef8bc44258406260b1460
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3636765c21745aed93df7ef000be9ea733103b70
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ed29245ee95df4098d69fb52bf88729c34e83ce706bb2ddd1c3d0501e3edd63d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b2db55a70f0fefc42b1241b17116ead150774bb201717974ac352193a9f19a131137997e9d9ede81a7c0079b763f535f4a7fdb8038e0a13012a103412b7c2e6f
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<metadata>
|
|
3
|
-
<groupId>host.exp.exponent</groupId>
|
|
4
|
-
<artifactId>expo.modules.filesystem</artifactId>
|
|
5
|
-
<versioning>
|
|
6
|
-
<latest>58.0.2</latest>
|
|
7
|
-
<release>58.0.2</release>
|
|
8
|
-
<versions>
|
|
9
|
-
<version>58.0.2</version>
|
|
10
|
-
</versions>
|
|
11
|
-
<lastUpdated>20260925081303</lastUpdated>
|
|
12
|
-
</versioning>
|
|
13
|
-
</metadata>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d5c50f6def87b5c735051f7e9834269a
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
8ee63fa6678b0bea67b7f4c7d43cde7c7a1c05c3
|
package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6ed066418c8629faba6b3ff1212ccbb708cc4c5248511439f9df515901244ea3
|
package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
6f54816ce941a6a34706523bdefcc8fc8050774f76c8fa93322e9d956ce055234a46aeb6f59c1b43f98de20e4384cae12becd88df84bd2ce7cf74b81c3ff4bfd
|