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.
- package/CHANGELOG.md +14 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/filesystem/FileSystemUploadTask.kt +14 -5
- package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyModule.kt +5 -45
- package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyReader.kt +57 -0
- package/build/legacy/FileSystem.types.d.ts +2 -2
- package/expo-module.config.json +1 -1
- package/ios/FileSystemFile.swift +2 -2
- package/ios/Legacy/FileSystemHelpers.swift +16 -2
- package/ios/Legacy/FileSystemLegacyModule.swift +5 -5
- 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
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6-sources.jar.sha512 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.aar.sha512 +1 -0
- 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
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.module.sha512 +1 -0
- 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
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.md5 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.sha1 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.pom.sha256 +1 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.6/expo.modules.filesystem-57.0.6.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/prebuilds/output/debug/xcframeworks/ExpoFileSystem.tar.gz +0 -0
- package/prebuilds/output/release/xcframeworks/ExpoFileSystem.tar.gz +0 -0
- package/src/legacy/FileSystem.types.ts +2 -2
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4-sources.jar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar +0 -0
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.aar.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.sha256 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.module.sha512 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.md5 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.sha1 +0 -1
- package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/57.0.4/expo.modules.filesystem-57.0.4.pom.sha256 +0 -1
- 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._
|
package/android/build.gradle
CHANGED
|
@@ -4,13 +4,13 @@ plugins {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
group = 'host.exp.exponent'
|
|
7
|
-
version = '57.0.
|
|
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.
|
|
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() =
|
|
235
|
+
override fun contentLength() = cachedContentLength
|
|
232
236
|
|
|
233
237
|
override fun writeTo(sink: BufferedSink) {
|
|
234
|
-
val countingSink = CountingSink(sink,
|
|
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
|
|
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,
|
|
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() =
|
|
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
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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 `
|
|
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 `
|
|
237
|
+
* Optional number of bytes to read. This option is only used when `position` is defined.
|
|
238
238
|
*/
|
|
239
239
|
length?: number;
|
|
240
240
|
};
|
package/expo-module.config.json
CHANGED
package/ios/FileSystemFile.swift
CHANGED
|
@@ -130,13 +130,13 @@ internal final class FileSystemFile: FileSystemPath {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
func text() throws -> String {
|
|
133
|
-
return try withCorrectTypeAndScopedAccess(permission: .
|
|
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: .
|
|
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)
|
|
41
|
+
return file.readData(ofLength: length)
|
|
28
42
|
}
|
|
29
|
-
return file.readDataToEndOfFile()
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fcc4d08d855bd22413d68126d69826e8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8e28a29e9497ae4214a5f3cb58c3afe7c6600e23
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
198d441c46eefe2bcf7a848a0a2526d708f4aedf7df793afd661220a58f0ac80
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0b9afee49c5f8278f312c63308879185585b20b90804801c8c7b981731b0a8b9bc3e494ef0d910ee106a00caad027376d52943f14ee55a65bf9aa7bbc291acf6
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f0991e75aa20f83164a3043ef46b3687
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
75747db46e9a0fdedd24371e394b5f3fb829c7b3
|
|
@@ -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.
|
|
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.
|
|
72
|
-
"url": "expo.modules.filesystem-57.0.
|
|
73
|
-
"size":
|
|
74
|
-
"sha512": "
|
|
75
|
-
"sha256": "
|
|
76
|
-
"sha1": "
|
|
77
|
-
"md5": "
|
|
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.
|
|
161
|
-
"url": "expo.modules.filesystem-57.0.
|
|
162
|
-
"size":
|
|
163
|
-
"sha512": "
|
|
164
|
-
"sha256": "
|
|
165
|
-
"sha1": "
|
|
166
|
-
"md5": "
|
|
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.
|
|
181
|
-
"url": "expo.modules.filesystem-57.0.
|
|
182
|
-
"size":
|
|
183
|
-
"sha512": "
|
|
184
|
-
"sha256": "
|
|
185
|
-
"sha1": "
|
|
186
|
-
"md5": "
|
|
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
|
+
6121212d852a23218b1153257b847f42
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fec24930c5ba9227d7a68e60c7288eabaf18415c
|
|
@@ -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.
|
|
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
|
+
1845d2ab8341357456b25058c1975af0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
66b0229ef1a3f729767b4b98e209fd9d1eacc3e7
|
|
@@ -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.
|
|
7
|
-
<release>57.0.
|
|
6
|
+
<latest>57.0.6</latest>
|
|
7
|
+
<release>57.0.6</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>57.0.
|
|
9
|
+
<version>57.0.6</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20260826195103</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
8fa97a66c4a74f2666e62943abd5962a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
f5ada1a24733f46ab837b688caefeb19bf357ea5
|
package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha256
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
448eeeb5944cad1e8e1a3b7187e45ae899c5647bfc29f9896a60886468dd2634
|
package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/maven-metadata.xml.sha512
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
bd1210770ba7fc0c10bc2e9f02e5ba09722363c1c10eac8f613958f0a2233c348070949c2aa4efbac3c3c236b69fb33be8474e4ab40545c3a45acb3189a91396
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-file-system",
|
|
3
|
-
"version": "57.0.
|
|
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.
|
|
45
|
-
"
|
|
46
|
-
"expo
|
|
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": "
|
|
52
|
+
"gitHead": "c300d2cc60c9e684e64f48d9bc90ea18a571d01d",
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "expo-module build",
|
|
55
55
|
"clean": "expo-module clean",
|
|
Binary file
|
|
Binary file
|
|
@@ -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 `
|
|
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 `
|
|
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
|
-
ce27cedadf73bf6fbb8733848a6fa461
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
437a520d50ffcce8c217a7d7d23bced2b9950bc0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b93839878f7d0d2e5b2c45d48dd3f66cbc81544c056dac4afd9b925a3ad1c470
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
088459ae823742c88f6b378e59b80fb9bf2f94769ac067636144f1e233c88509f9c5aa99f0f0500ae20f4e93b335cd07c66b846e05d26f1476776d15439977eb
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
40f8afaff5b2b59fecbcd789d55a5b3c
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b005244be8fd61d7fb137e94aae0ac8bfaf42a2c
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1f810f75c6c0bace739085182ddfda3dacff48238f4251c26626cc89733178fe
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
856e77adb55cdd548e0cba3d9e14a61ed0b72cddde65ae6299b0238e510d358cfd9e8d4549f49943fab98e6d21fcfa81ddd7b71dfbe848a89d00197c6d6c907d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
696ec425a9ce186022abb7e502edeb65
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
96044e72938dd7adfef5d48a019fb53aa107dfac
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ce7f90cf2e988172ecedc5501c8b446957e155b9d56443a2ede1468d9b69a6d3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
25b073453a97f42b57ec07e4e0b486bbdf5276fb5fa2d0c9c7818f189a4a52940d33cbc93f16969a9434572f543d47f02128e106b16e71780719fec42ef3f218
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
781b72f928a8dcadc9e84a613209a66d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
04fb0b44adfb013600ab957207e82a12e55a5cfa
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
465494d21102c95f768b6a4253ae1121b27efb9ca051fe0a029705b9654d97f6
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1282eb29b00ff025c403a0e2353dc5d7be2cc71d45391a8be12960cac42987b351f9795b65d94431002e9ce58e6c753e103887d509ad2bfa67e2344fd514127e
|