expo-file-system 19.0.7 → 19.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/filesystem/FileSystemModule.kt +11 -5
  4. package/android/src/main/java/expo/modules/filesystem/legacy/FileSystemLegacyModule.kt +11 -5
  5. package/build/ExpoFileSystem.types.d.ts +4 -5
  6. package/build/ExpoFileSystem.types.d.ts.map +1 -1
  7. package/expo-module.config.json +1 -1
  8. package/ios/FilePickingHandler.swift +87 -0
  9. package/ios/FilePickingUtils.swift +133 -0
  10. package/ios/FileSystemExceptions.swift +24 -0
  11. package/ios/FileSystemModule.swift +32 -7
  12. package/ios/Legacy/FileSystemLegacyModule.swift +10 -6
  13. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{19.0.7/expo.modules.filesystem-19.0.7-sources.jar → 19.0.8/expo.modules.filesystem-19.0.8-sources.jar} +0 -0
  14. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8-sources.jar.md5 +1 -0
  15. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8-sources.jar.sha1 +1 -0
  16. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8-sources.jar.sha256 +1 -0
  17. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8-sources.jar.sha512 +1 -0
  18. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.aar +0 -0
  19. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.aar.md5 +1 -0
  20. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.aar.sha1 +1 -0
  21. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.aar.sha256 +1 -0
  22. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.aar.sha512 +1 -0
  23. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{19.0.7/expo.modules.filesystem-19.0.7.module → 19.0.8/expo.modules.filesystem-19.0.8.module} +22 -22
  24. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.module.md5 +1 -0
  25. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.module.sha1 +1 -0
  26. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.module.sha256 +1 -0
  27. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.module.sha512 +1 -0
  28. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/{19.0.7/expo.modules.filesystem-19.0.7.pom → 19.0.8/expo.modules.filesystem-19.0.8.pom} +1 -1
  29. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.pom.md5 +1 -0
  30. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.pom.sha1 +1 -0
  31. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.pom.sha256 +1 -0
  32. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.8/expo.modules.filesystem-19.0.8.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/package.json +4 -4
  39. package/src/ExpoFileSystem.types.ts +4 -5
  40. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7-sources.jar.md5 +0 -1
  41. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7-sources.jar.sha1 +0 -1
  42. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7-sources.jar.sha256 +0 -1
  43. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7-sources.jar.sha512 +0 -1
  44. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.aar +0 -0
  45. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.aar.md5 +0 -1
  46. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.aar.sha1 +0 -1
  47. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.aar.sha256 +0 -1
  48. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.aar.sha512 +0 -1
  49. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.module.md5 +0 -1
  50. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.module.sha1 +0 -1
  51. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.module.sha256 +0 -1
  52. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.module.sha512 +0 -1
  53. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.pom.md5 +0 -1
  54. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.pom.sha1 +0 -1
  55. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.pom.sha256 +0 -1
  56. package/local-maven-repo/host/exp/exponent/expo.modules.filesystem/19.0.7/expo.modules.filesystem-19.0.7.pom.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 19.0.8 — 2025-09-02
14
+
15
+ ### 🎉 New features
16
+
17
+ - [iOS] Add `pickFileAsync` support ([#39173](https://github.com/expo/expo/pull/39173) by [@kosmydel](https://github.com/kosmydel))
18
+
13
19
  ## 19.0.7 — 2025-08-31
14
20
 
15
21
  ### 🎉 New features
@@ -44,6 +50,7 @@ _This version does not introduce any user-facing changes._
44
50
  ### 💡 Others
45
51
 
46
52
  - Update typings for `typescript@5.9` ([#38833](https://github.com/expo/expo/pull/38833) by [@kitten](https://github.com/kitten))
53
+ - Change Constants to Constant/Property. ([#38926](https://github.com/expo/expo/pull/38926) by [@jakex7](https://github.com/jakex7))
47
54
 
48
55
  ## 19.0.0 — 2025-08-13
49
56
 
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '19.0.7'
7
+ version = '19.0.8'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.filesystem"
11
11
  defaultConfig {
12
12
  versionCode 30
13
- versionName "19.0.7"
13
+ versionName "19.0.8"
14
14
  }
15
15
  }
16
16
 
@@ -28,11 +28,17 @@ class FileSystemModule : Module() {
28
28
  override fun definition() = ModuleDefinition {
29
29
  Name("FileSystem")
30
30
 
31
- Constants(
32
- "documentDirectory" to Uri.fromFile(context.filesDir).toString() + "/",
33
- "cacheDirectory" to Uri.fromFile(context.cacheDir).toString() + "/",
34
- "bundleDirectory" to "asset://"
35
- )
31
+ Constant("documentDirectory") {
32
+ Uri.fromFile(context.filesDir).toString() + "/"
33
+ }
34
+
35
+ Constant("cacheDirectory") {
36
+ Uri.fromFile(context.cacheDir).toString() + "/"
37
+ }
38
+
39
+ Constant("bundleDirectory") {
40
+ "asset://"
41
+ }
36
42
 
37
43
  Property("totalDiskSpace") {
38
44
  File(context.filesDir.path).totalSpace
@@ -89,11 +89,17 @@ open class FileSystemLegacyModule : Module() {
89
89
  override fun definition() = ModuleDefinition {
90
90
  Name("ExponentFileSystem")
91
91
 
92
- Constants(
93
- "documentDirectory" to Uri.fromFile(context.filesDir).toString() + "/",
94
- "cacheDirectory" to Uri.fromFile(context.cacheDir).toString() + "/",
95
- "bundleDirectory" to "asset:///"
96
- )
92
+ Constant("documentDirectory") {
93
+ Uri.fromFile(context.filesDir).toString() + "/"
94
+ }
95
+
96
+ Constant("cacheDirectory") {
97
+ Uri.fromFile(context.cacheDir).toString() + "/"
98
+ }
99
+
100
+ Constant("bundleDirectory") {
101
+ "asset:///"
102
+ }
97
103
 
98
104
  Events(
99
105
  EXDownloadProgressEventName,
@@ -231,16 +231,15 @@ export declare class File {
231
231
  */
232
232
  static downloadFileAsync(url: string, destination: Directory | File, options?: DownloadOptions): Promise<File>;
233
233
  /**
234
- * A static method that opens a file picker to select a single file of specified type.
234
+ * A static method that opens a file picker to select a single file of specified type. On iOS, it returns a temporary copy of the file leaving the original file untouched.
235
235
  *
236
- * @platform android
236
+ * Selecting multiple files is not supported yet.
237
237
  *
238
238
  * @param initialUri An optional URI pointing to an initial folder on which the file picker is opened.
239
239
  * @param mimeType A mime type that is used to filter out files that can be picked out.
240
- * @returns a `File` instance.
241
- * @platform android
240
+ * @returns a `File` instance or an array of `File` instances.
242
241
  */
243
- static pickFileAsync(initialUri?: string, mimeType?: string): Promise<File>;
242
+ static pickFileAsync(initialUri?: string, mimeType?: string): Promise<File | File[]>;
244
243
  /**
245
244
  * A size of the file in bytes. 0 if the file does not exist, or it cannot be read.
246
245
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoFileSystem.types.d.ts","sourceRoot":"","sources":["../src/ExpoFileSystem.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExpoFileSystem.types.d.ts","sourceRoot":"","sources":["../src/ExpoFileSystem.types.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  "publication": {
13
13
  "groupId": "host.exp.exponent",
14
14
  "artifactId": "expo.modules.filesystem",
15
- "version": "19.0.7",
15
+ "version": "19.0.8",
16
16
  "repository": "local-maven-repo"
17
17
  }
18
18
  }
@@ -0,0 +1,87 @@
1
+ // UIKit is unavailable on macOS, so platform checks are necessary.
2
+ // For macOS support, we should consider using NSOpenPanel: https://developer.apple.com/documentation/appkit/nsopenpanel
3
+ #if os(iOS) || os(tvOS)
4
+ import ExpoModulesCore
5
+ import UIKit
6
+
7
+ internal class FilePickingHandler: FilePickingResultHandler {
8
+ private weak var module: FileSystemModule?
9
+ internal var filePickingContext: FilePickingContext?
10
+
11
+ init(module: FileSystemModule) {
12
+ self.module = module
13
+ }
14
+
15
+ func presentDocumentPicker(
16
+ picker: UIDocumentPickerViewController,
17
+ isDirectory: Bool,
18
+ initialUri: URL?,
19
+ mimeType: String?,
20
+ promise: Promise
21
+ ) {
22
+ guard let module = module else {
23
+ promise.reject(MissingViewControllerException())
24
+ return
25
+ }
26
+
27
+ if filePickingContext != nil {
28
+ promise.reject(PickingInProgressException())
29
+ return
30
+ }
31
+
32
+ guard let currentVc = module.appContext?.utilities?.currentViewController() else {
33
+ promise.reject(MissingViewControllerException())
34
+ return
35
+ }
36
+
37
+ let pickerDelegate = FilePickingDelegate(resultHandler: self, isDirectory: isDirectory)
38
+ filePickingContext = FilePickingContext(
39
+ promise: promise,
40
+ initialUri: initialUri,
41
+ mimeType: mimeType,
42
+ isDirectory: isDirectory,
43
+ delegate: pickerDelegate
44
+ )
45
+
46
+ picker.delegate = pickerDelegate
47
+ picker.presentationController?.delegate = pickerDelegate
48
+ picker.allowsMultipleSelection = false
49
+
50
+ if UIDevice.current.userInterfaceIdiom == .pad {
51
+ let viewFrame = currentVc.view.frame
52
+ picker.popoverPresentationController?.sourceRect = CGRect(
53
+ x: viewFrame.midX,
54
+ y: viewFrame.maxY,
55
+ width: 0,
56
+ height: 0
57
+ )
58
+ picker.popoverPresentationController?.sourceView = currentVc.view
59
+ picker.modalPresentationStyle = .pageSheet
60
+ }
61
+
62
+ currentVc.present(picker, animated: true)
63
+ }
64
+
65
+ func didPickFileAt(url: URL) {
66
+ handlePickingResult { context in
67
+ let file = FileSystemFile(url: url)
68
+ context.promise.resolve(file)
69
+ }
70
+ }
71
+
72
+ func didCancelPicking() {
73
+ handlePickingResult { context in
74
+ context.promise.reject(FilePickingCancelledException())
75
+ }
76
+ }
77
+
78
+ private func handlePickingResult(_ handler: (FilePickingContext) -> Void) {
79
+ guard let context = filePickingContext else {
80
+ return
81
+ }
82
+ filePickingContext = nil
83
+
84
+ handler(context)
85
+ }
86
+ }
87
+ #endif
@@ -0,0 +1,133 @@
1
+ #if os(iOS) || os(tvOS)
2
+ import ExpoModulesCore
3
+ import MobileCoreServices
4
+ import UIKit
5
+ import UniformTypeIdentifiers
6
+
7
+ internal protocol FilePickingResultHandler {
8
+ func didPickFileAt(url: URL)
9
+ func didCancelPicking()
10
+ }
11
+
12
+ internal struct FilePickingContext {
13
+ let promise: Promise
14
+ let initialUri: URL?
15
+ let mimeType: String?
16
+ let isDirectory: Bool
17
+ let delegate: FilePickingDelegate
18
+ var pickedUrl: URL?
19
+ }
20
+
21
+ internal class FilePickingDelegate: NSObject, UIDocumentPickerDelegate, UIAdaptivePresentationControllerDelegate {
22
+ private let resultHandler: FilePickingResultHandler
23
+ private let isDirectory: Bool
24
+ private weak var pickingHandler: FilePickingHandler?
25
+
26
+ init(resultHandler: FilePickingResultHandler, isDirectory: Bool = false) {
27
+ self.resultHandler = resultHandler
28
+ self.isDirectory = isDirectory
29
+ self.pickingHandler = resultHandler as? FilePickingHandler
30
+ }
31
+
32
+ func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
33
+ guard let url = urls.first else {
34
+ self.resultHandler.didCancelPicking()
35
+ return
36
+ }
37
+
38
+ self.resultHandler.didPickFileAt(url: url)
39
+ }
40
+
41
+ func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
42
+ self.resultHandler.didCancelPicking()
43
+ }
44
+
45
+ func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
46
+ self.resultHandler.didCancelPicking()
47
+ }
48
+ }
49
+
50
+ internal func createFilePicker(initialUri: URL?, mimeType: String?) -> UIDocumentPickerViewController {
51
+ if #available(iOS 14.0, *) {
52
+ let utTypes: [UTType]
53
+ if let mimeType = mimeType {
54
+ if let utType = UTType(mimeType: mimeType) {
55
+ utTypes = [utType]
56
+ } else {
57
+ utTypes = [UTType.item]
58
+ }
59
+ } else {
60
+ utTypes = [UTType.item]
61
+ }
62
+
63
+ let picker = UIDocumentPickerViewController(forOpeningContentTypes: utTypes, asCopy: true)
64
+
65
+ if let initialUri = initialUri {
66
+ picker.directoryURL = initialUri
67
+ }
68
+
69
+ return picker
70
+ }
71
+
72
+ let utiTypes: [String]
73
+ if let mimeType = mimeType {
74
+ utiTypes = [toUTI(mimeType: mimeType)]
75
+ } else {
76
+ utiTypes = [kUTTypeItem as String]
77
+ }
78
+
79
+ let picker = UIDocumentPickerViewController(documentTypes: utiTypes, in: .import)
80
+
81
+ if let initialUri = initialUri {
82
+ picker.directoryURL = initialUri
83
+ }
84
+
85
+ return picker
86
+ }
87
+
88
+ @available(iOS 14.0, *)
89
+ private func toUTType(mimeType: String) -> UTType? {
90
+ switch mimeType {
91
+ case "*/*":
92
+ return UTType.item
93
+ case "image/*":
94
+ return UTType.image
95
+ case "video/*":
96
+ return UTType.movie
97
+ case "audio/*":
98
+ return UTType.audio
99
+ case "text/*":
100
+ return UTType.text
101
+ default:
102
+ return UTType(mimeType: mimeType)
103
+ }
104
+ }
105
+
106
+ private func toUTI(mimeType: String) -> String {
107
+ var uti: CFString
108
+
109
+ switch mimeType {
110
+ case "*/*":
111
+ uti = kUTTypeItem
112
+ case "image/*":
113
+ uti = kUTTypeImage
114
+ case "video/*":
115
+ uti = kUTTypeVideo
116
+ case "audio/*":
117
+ uti = kUTTypeAudio
118
+ case "text/*":
119
+ uti = kUTTypeText
120
+ default:
121
+ if let ref = UTTypeCreatePreferredIdentifierForTag(
122
+ kUTTagClassMIMEType,
123
+ mimeType as CFString,
124
+ nil
125
+ )?.takeRetainedValue() {
126
+ uti = ref
127
+ } else {
128
+ uti = kUTTypeItem
129
+ }
130
+ }
131
+ return uti as String
132
+ }
133
+ #endif
@@ -72,3 +72,27 @@ internal final class MissingPermissionException: GenericException<String> {
72
72
  "Missing permission for uri: \(param)"
73
73
  }
74
74
  }
75
+
76
+ internal final class PickingInProgressException: Exception {
77
+ override var reason: String {
78
+ "File picking is already in progress"
79
+ }
80
+ }
81
+
82
+ internal final class MissingViewControllerException: Exception {
83
+ override var reason: String {
84
+ "No view controller available for presenting file picker"
85
+ }
86
+ }
87
+
88
+ internal final class FilePickingCancelledException: Exception {
89
+ override var reason: String {
90
+ "File picking was cancelled by the user"
91
+ }
92
+ }
93
+
94
+ internal final class FeatureNotAvailableOnPlatformException: Exception {
95
+ override var reason: String {
96
+ "This feature is not available on this platform"
97
+ }
98
+ }
@@ -4,6 +4,10 @@ import ExpoModulesCore
4
4
 
5
5
  @available(iOS 14, tvOS 14, *)
6
6
  public final class FileSystemModule: Module {
7
+ #if os(iOS) || os(tvOS)
8
+ private lazy var filePickingHandler = FilePickingHandler(module: self)
9
+ #endif
10
+
7
11
  var documentDirectory: URL? {
8
12
  return appContext?.config.documentDirectory
9
13
  }
@@ -31,13 +35,20 @@ public final class FileSystemModule: Module {
31
35
  public func definition() -> ModuleDefinition {
32
36
  Name("FileSystem")
33
37
 
34
- Constants {
35
- return [
36
- "documentDirectory": documentDirectory?.absoluteString,
37
- "cacheDirectory": cacheDirectory?.absoluteString,
38
- "bundleDirectory": Bundle.main.bundlePath,
39
- "appleSharedContainers": getAppleSharedContainers()
40
- ]
38
+ Constant("documentDirectory") {
39
+ return documentDirectory?.absoluteString
40
+ }
41
+
42
+ Constant("cacheDirectory") {
43
+ return cacheDirectory?.absoluteString
44
+ }
45
+
46
+ Constant("bundleDirectory") {
47
+ return Bundle.main.bundlePath
48
+ }
49
+
50
+ Constant("appleSharedContainers") {
51
+ return getAppleSharedContainers()
41
52
  }
42
53
 
43
54
  Property("totalDiskSpace") {
@@ -95,6 +106,20 @@ public final class FileSystemModule: Module {
95
106
  downloadTask.resume()
96
107
  }
97
108
 
109
+ AsyncFunction("pickFileAsync") { (initialUri: URL?, mimeType: String?, promise: Promise) in
110
+ #if os(iOS) || os(tvOS)
111
+ filePickingHandler.presentDocumentPicker(
112
+ picker: createFilePicker(initialUri: initialUri, mimeType: mimeType),
113
+ isDirectory: false,
114
+ initialUri: initialUri,
115
+ mimeType: mimeType,
116
+ promise: promise
117
+ )
118
+ #else
119
+ promise.reject(FeatureNotAvailableOnPlatformException())
120
+ #endif
121
+ }.runOnQueue(.main)
122
+
98
123
  Function("info") { (url: URL) in
99
124
  let output = PathInfo()
100
125
  output.exists = false
@@ -27,12 +27,16 @@ public final class FileSystemLegacyModule: Module {
27
27
  public func definition() -> ModuleDefinition {
28
28
  Name("ExponentFileSystem")
29
29
 
30
- Constants {
31
- return [
32
- "documentDirectory": documentDirectory?.absoluteString,
33
- "cacheDirectory": cacheDirectory?.absoluteString,
34
- "bundleDirectory": Bundle.main.bundlePath
35
- ]
30
+ Constant("documentDirectory") {
31
+ return documentDirectory?.absoluteString
32
+ }
33
+
34
+ Constant("cacheDirectory") {
35
+ return cacheDirectory?.absoluteString
36
+ }
37
+
38
+ Constant("bundleDirectory") {
39
+ return Bundle.main.bundlePath
36
40
  }
37
41
 
38
42
  Events(EVENT_DOWNLOAD_PROGRESS, EVENT_UPLOAD_PROGRESS)
@@ -0,0 +1 @@
1
+ 267e88a3c5d6745c834050282f9a45c0305f51c7b8554e18e0b68a16ab337edb
@@ -0,0 +1 @@
1
+ b8f0a84aa8f6377f6fb162699e663d8e9de63caff453a37513e1cfeeaaa050261f8ae32032f15e8968e8591d518531d46e8e549c745b2998ee16fc7578903872
@@ -0,0 +1 @@
1
+ 25644f10378a71e515dcfe1df64fb41fef0862fdfbe9cf52ac91675939cd76fb
@@ -0,0 +1 @@
1
+ 56d4b780eb2b6164377db2d9756e9d1d6872436d2313f75a77b4ffce8be47d92c2fc502cc87369554a595d1844763bdb6ce3d14dc68ef849379070a259f920f3
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.filesystem",
6
- "version": "19.0.7",
6
+ "version": "19.0.8",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -75,13 +75,13 @@
75
75
  ],
76
76
  "files": [
77
77
  {
78
- "name": "expo.modules.filesystem-19.0.7.aar",
79
- "url": "expo.modules.filesystem-19.0.7.aar",
80
- "size": 376534,
81
- "sha512": "de4ccf9ef1c373a39e75d149e717061316cba471c546ad5247bc629083868d5e8700322898b147d22aa845fcd9e5f0ec1fca48c0d76025dddb41b3b300360627",
82
- "sha256": "3b1f05d11977bd8acba506764a3ed15e1bc517e7aaec57112545923c8b81ab04",
83
- "sha1": "65ea240b61a6bafa919d7fd66917aa1bbbb4fbc9",
84
- "md5": "3131a757a0b15f33c69b92145bbdbfbe"
78
+ "name": "expo.modules.filesystem-19.0.8.aar",
79
+ "url": "expo.modules.filesystem-19.0.8.aar",
80
+ "size": 386221,
81
+ "sha512": "56d4b780eb2b6164377db2d9756e9d1d6872436d2313f75a77b4ffce8be47d92c2fc502cc87369554a595d1844763bdb6ce3d14dc68ef849379070a259f920f3",
82
+ "sha256": "25644f10378a71e515dcfe1df64fb41fef0862fdfbe9cf52ac91675939cd76fb",
83
+ "sha1": "91a70d10d282ea3c01290747edd6b4f19226ad65",
84
+ "md5": "5af511777ab5671351368ebf881eb54b"
85
85
  }
86
86
  ]
87
87
  },
@@ -153,13 +153,13 @@
153
153
  ],
154
154
  "files": [
155
155
  {
156
- "name": "expo.modules.filesystem-19.0.7.aar",
157
- "url": "expo.modules.filesystem-19.0.7.aar",
158
- "size": 376534,
159
- "sha512": "de4ccf9ef1c373a39e75d149e717061316cba471c546ad5247bc629083868d5e8700322898b147d22aa845fcd9e5f0ec1fca48c0d76025dddb41b3b300360627",
160
- "sha256": "3b1f05d11977bd8acba506764a3ed15e1bc517e7aaec57112545923c8b81ab04",
161
- "sha1": "65ea240b61a6bafa919d7fd66917aa1bbbb4fbc9",
162
- "md5": "3131a757a0b15f33c69b92145bbdbfbe"
156
+ "name": "expo.modules.filesystem-19.0.8.aar",
157
+ "url": "expo.modules.filesystem-19.0.8.aar",
158
+ "size": 386221,
159
+ "sha512": "56d4b780eb2b6164377db2d9756e9d1d6872436d2313f75a77b4ffce8be47d92c2fc502cc87369554a595d1844763bdb6ce3d14dc68ef849379070a259f920f3",
160
+ "sha256": "25644f10378a71e515dcfe1df64fb41fef0862fdfbe9cf52ac91675939cd76fb",
161
+ "sha1": "91a70d10d282ea3c01290747edd6b4f19226ad65",
162
+ "md5": "5af511777ab5671351368ebf881eb54b"
163
163
  }
164
164
  ]
165
165
  },
@@ -173,13 +173,13 @@
173
173
  },
174
174
  "files": [
175
175
  {
176
- "name": "expo.modules.filesystem-19.0.7-sources.jar",
177
- "url": "expo.modules.filesystem-19.0.7-sources.jar",
178
- "size": 28557,
179
- "sha512": "883e3e975a1c678ab873b0e1a009d6b2e047daf7e3a21a8444a848a6f67b93ede413ae71029d59732541d9aa7bd7c9067626b0fd70a13e1d428da0e1e5a3bd9d",
180
- "sha256": "d40b6af1ade1a3e62958afbeb12170073ec4b0e9171e20ba91cdb1e1ae1b04ac",
181
- "sha1": "d674cc8fccd186f29334b506c24efcfdfac2e40a",
182
- "md5": "c155ff9ad88368334bea4f91422d8d32"
176
+ "name": "expo.modules.filesystem-19.0.8-sources.jar",
177
+ "url": "expo.modules.filesystem-19.0.8-sources.jar",
178
+ "size": 28550,
179
+ "sha512": "b8f0a84aa8f6377f6fb162699e663d8e9de63caff453a37513e1cfeeaaa050261f8ae32032f15e8968e8591d518531d46e8e549c745b2998ee16fc7578903872",
180
+ "sha256": "267e88a3c5d6745c834050282f9a45c0305f51c7b8554e18e0b68a16ab337edb",
181
+ "sha1": "1c9d91c71b0534cc4967a352ccb7864aa71054c1",
182
+ "md5": "792cb40c62c2c908a410b672981f14b0"
183
183
  }
184
184
  ]
185
185
  }
@@ -0,0 +1 @@
1
+ 42270c63b7df7a7e5d137d6c77f95b0a8a2aaa33325e69c7b4426caf00a21e8c
@@ -0,0 +1 @@
1
+ 7ac666d194796a12dc4fcb504841bd4f1aa9073e73f8c6166fe35d3679ae078e1ae857a94f9f3285abfb042ef69c051dcfd81aa1f1ed5311e9f4cf9493a90a59
@@ -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>19.0.7</version>
12
+ <version>19.0.8</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
+ 602db45c912619293ac6cf4d840554e6269d8572329dde7f5af51d6d1174a883
@@ -0,0 +1 @@
1
+ ec765be6812ea03216616a6ed18c3b28ce4f4d8f60fa8c6400c629204426074fc9373ffd65290d8f3f735408401fe47e140fd2754aebcd0a3729f57f82839bd0
@@ -3,11 +3,11 @@
3
3
  <groupId>host.exp.exponent</groupId>
4
4
  <artifactId>expo.modules.filesystem</artifactId>
5
5
  <versioning>
6
- <latest>19.0.7</latest>
7
- <release>19.0.7</release>
6
+ <latest>19.0.8</latest>
7
+ <release>19.0.8</release>
8
8
  <versions>
9
- <version>19.0.7</version>
9
+ <version>19.0.8</version>
10
10
  </versions>
11
- <lastUpdated>20250831124212</lastUpdated>
11
+ <lastUpdated>20250902175113</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- dcab33e619a12cb1280ed5526609c42d
1
+ 42876019a2c534b254bcc519820b1a83
@@ -1 +1 @@
1
- 238a976822d6a261fa7f76460d534d4f5934233f
1
+ eeba47e1c3b9979298a9ff3e5f5e21a0721a16dc
@@ -1 +1 @@
1
- 3693e2c2f2b219f586d17150a2433838d437328d308c677cbcb50d8d5da61709
1
+ 6d9ade77b228fbce494829fbc4a09a437b07cbc2bb89011bf3a84c349a4749fa
@@ -1 +1 @@
1
- 3959d1f0b20eec078018d1dbc67f436883b499575c2b2175e940500c8e822e569509a3b0f7141f4d3c772b0816d22d0bdf9c5993fb110983f8be35f8c7f195dc
1
+ 34e81020fc62cdc3e7d46321907a3f51b3802e95dd3716f63f2863237708f41c9c3b79c26cd14ba1cd8d9bb4cde63aa24d8cfa54299d6c330b494f1454a596d2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-file-system",
3
- "version": "19.0.7",
3
+ "version": "19.0.8",
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",
@@ -35,12 +35,12 @@
35
35
  "preset": "expo-module-scripts"
36
36
  },
37
37
  "devDependencies": {
38
- "expo-module-scripts": "^5.0.5",
39
- "jest-expo": "~54.0.5"
38
+ "expo-module-scripts": "^5.0.6",
39
+ "jest-expo": "~54.0.7"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "expo": "*",
43
43
  "react-native": "*"
44
44
  },
45
- "gitHead": "1dafdaa317c182191909a94a355c8b08a2654783"
45
+ "gitHead": "d635404a12ea7996b987ce0fb7679a238ebcf31b"
46
46
  }
@@ -270,16 +270,15 @@ export declare class File {
270
270
  ): Promise<File>;
271
271
 
272
272
  /**
273
- * A static method that opens a file picker to select a single file of specified type.
273
+ * A static method that opens a file picker to select a single file of specified type. On iOS, it returns a temporary copy of the file leaving the original file untouched.
274
274
  *
275
- * @platform android
275
+ * Selecting multiple files is not supported yet.
276
276
  *
277
277
  * @param initialUri An optional URI pointing to an initial folder on which the file picker is opened.
278
278
  * @param mimeType A mime type that is used to filter out files that can be picked out.
279
- * @returns a `File` instance.
280
- * @platform android
279
+ * @returns a `File` instance or an array of `File` instances.
281
280
  */
282
- static pickFileAsync(initialUri?: string, mimeType?: string): Promise<File>;
281
+ static pickFileAsync(initialUri?: string, mimeType?: string): Promise<File | File[]>;
283
282
 
284
283
  /**
285
284
  * A size of the file in bytes. 0 if the file does not exist, or it cannot be read.
@@ -1 +0,0 @@
1
- d40b6af1ade1a3e62958afbeb12170073ec4b0e9171e20ba91cdb1e1ae1b04ac
@@ -1 +0,0 @@
1
- 883e3e975a1c678ab873b0e1a009d6b2e047daf7e3a21a8444a848a6f67b93ede413ae71029d59732541d9aa7bd7c9067626b0fd70a13e1d428da0e1e5a3bd9d
@@ -1 +0,0 @@
1
- 3b1f05d11977bd8acba506764a3ed15e1bc517e7aaec57112545923c8b81ab04
@@ -1 +0,0 @@
1
- de4ccf9ef1c373a39e75d149e717061316cba471c546ad5247bc629083868d5e8700322898b147d22aa845fcd9e5f0ec1fca48c0d76025dddb41b3b300360627
@@ -1 +0,0 @@
1
- df378e667196c0a9fb856d02a0a7d4b761d3975d0345a970338cc8fcf7c17bff
@@ -1 +0,0 @@
1
- e9ef84e5f83b6e1705e1b5a7802682aec4f49c2f91a001291c9bdd79d1b1a71f51b9fa08b8204e1dc08522a9e0c6214288d4a8e87a1a1ac6806ccbcb08e038e7
@@ -1 +0,0 @@
1
- 711ea03d039b3c3ceabdc4f9de6d3c45fa054f5892763c708de0e416135e7b41
@@ -1 +0,0 @@
1
- 9ce4435eef9347f5860fce84c95feca14bf7746d4d6ed079f27c25ab77bc1b3249a8df72ea4c946c8200efdc4cebd38573fef10fb9bf931512e0e5de2a19c6ab