@amazon-devices/expo-file-system 2.0.1758683737

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 (111) hide show
  1. package/.eslintrc.js +2 -0
  2. package/CHANGELOG.md +317 -0
  3. package/CMakeLists.txt +52 -0
  4. package/LICENSE +7 -0
  5. package/README.kepler.md +260 -0
  6. package/README.md +46 -0
  7. package/THIRD_PARTY_NOTICES.txt +24 -0
  8. package/android/build.gradle +118 -0
  9. package/android/src/main/AndroidManifest.xml +17 -0
  10. package/android/src/main/java/expo/modules/filesystem/AppDirectoriesModule.kt +26 -0
  11. package/android/src/main/java/expo/modules/filesystem/CountingRequestBody.kt +52 -0
  12. package/android/src/main/java/expo/modules/filesystem/FilePermissionModule.kt +48 -0
  13. package/android/src/main/java/expo/modules/filesystem/FileSystemExceptions.kt +48 -0
  14. package/android/src/main/java/expo/modules/filesystem/FileSystemFileProvider.kt +5 -0
  15. package/android/src/main/java/expo/modules/filesystem/FileSystemModule.kt +1110 -0
  16. package/android/src/main/java/expo/modules/filesystem/FileSystemPackage.kt +10 -0
  17. package/android/src/main/java/expo/modules/filesystem/FileSystemRecords.kt +92 -0
  18. package/android/src/main/res/xml/file_system_provider_paths.xml +5 -0
  19. package/app.plugin.js +1 -0
  20. package/build/ExponentFileSystem.d.ts +4 -0
  21. package/build/ExponentFileSystem.d.ts.map +1 -0
  22. package/build/ExponentFileSystem.js +5 -0
  23. package/build/ExponentFileSystem.js.map +1 -0
  24. package/build/ExponentFileSystem.kepler.d.ts +4 -0
  25. package/build/ExponentFileSystem.kepler.d.ts.map +1 -0
  26. package/build/ExponentFileSystem.kepler.js +112 -0
  27. package/build/ExponentFileSystem.kepler.js.map +1 -0
  28. package/build/ExponentFileSystem.web.d.ts +3 -0
  29. package/build/ExponentFileSystem.web.d.ts.map +1 -0
  30. package/build/ExponentFileSystem.web.js +3 -0
  31. package/build/ExponentFileSystem.web.js.map +1 -0
  32. package/build/ExponentFileSystemShim.d.ts +4 -0
  33. package/build/ExponentFileSystemShim.d.ts.map +1 -0
  34. package/build/ExponentFileSystemShim.js +21 -0
  35. package/build/ExponentFileSystemShim.js.map +1 -0
  36. package/build/FileSystem.d.ts +361 -0
  37. package/build/FileSystem.d.ts.map +1 -0
  38. package/build/FileSystem.js +616 -0
  39. package/build/FileSystem.js.map +1 -0
  40. package/build/FileSystem.types.d.ts +304 -0
  41. package/build/FileSystem.types.d.ts.map +1 -0
  42. package/build/FileSystem.types.js +47 -0
  43. package/build/FileSystem.types.js.map +1 -0
  44. package/build/index.d.ts +3 -0
  45. package/build/index.d.ts.map +1 -0
  46. package/build/index.js +3 -0
  47. package/build/index.js.map +1 -0
  48. package/build/types.d.ts +35 -0
  49. package/build/types.d.ts.map +1 -0
  50. package/build/types.js +2 -0
  51. package/build/types.js.map +1 -0
  52. package/expo-module.config.json +11 -0
  53. package/ios/EXFilePermissionModule.h +16 -0
  54. package/ios/EXFilePermissionModule.m +68 -0
  55. package/ios/EXFileSystem.h +25 -0
  56. package/ios/EXFileSystem.m +1084 -0
  57. package/ios/EXFileSystemAssetLibraryHandler.h +6 -0
  58. package/ios/EXFileSystemAssetLibraryHandler.m +142 -0
  59. package/ios/EXFileSystemHandler.h +17 -0
  60. package/ios/EXFileSystemLocalFileHandler.h +7 -0
  61. package/ios/EXFileSystemLocalFileHandler.m +79 -0
  62. package/ios/EXSessionTasks/EXSessionCancelableUploadTaskDelegate.h +16 -0
  63. package/ios/EXSessionTasks/EXSessionCancelableUploadTaskDelegate.m +55 -0
  64. package/ios/EXSessionTasks/EXSessionDownloadTaskDelegate.h +13 -0
  65. package/ios/EXSessionTasks/EXSessionDownloadTaskDelegate.m +64 -0
  66. package/ios/EXSessionTasks/EXSessionHandler.h +19 -0
  67. package/ios/EXSessionTasks/EXSessionHandler.m +49 -0
  68. package/ios/EXSessionTasks/EXSessionResumableDownloadTaskDelegate.h +18 -0
  69. package/ios/EXSessionTasks/EXSessionResumableDownloadTaskDelegate.m +66 -0
  70. package/ios/EXSessionTasks/EXSessionTaskDelegate.h +32 -0
  71. package/ios/EXSessionTasks/EXSessionTaskDelegate.m +58 -0
  72. package/ios/EXSessionTasks/EXSessionTaskDispatcher.h +19 -0
  73. package/ios/EXSessionTasks/EXSessionTaskDispatcher.m +96 -0
  74. package/ios/EXSessionTasks/EXSessionUploadTaskDelegate.h +8 -0
  75. package/ios/EXSessionTasks/EXSessionUploadTaskDelegate.m +52 -0
  76. package/ios/EXSessionTasks/EXTaskHandlersManager.h +21 -0
  77. package/ios/EXSessionTasks/EXTaskHandlersManager.m +56 -0
  78. package/ios/Encoding.swift +88 -0
  79. package/ios/ExpoFileSystem.h +1 -0
  80. package/ios/ExpoFileSystem.podspec +32 -0
  81. package/ios/FileSystemBackgroundSessionHandler.swift +25 -0
  82. package/ios/FileSystemExceptions.swift +69 -0
  83. package/ios/FileSystemHelpers.swift +66 -0
  84. package/ios/FileSystemModule.swift +263 -0
  85. package/ios/FileSystemRecords.swift +74 -0
  86. package/ios/NSData+EXFileSystem.h +9 -0
  87. package/ios/NSData+EXFileSystem.m +19 -0
  88. package/ios/NetworkingHelpers.swift +84 -0
  89. package/ios/Tests/EXFileSystemSpec.swift +55 -0
  90. package/jest.config.js +3 -0
  91. package/kepler/ExponentFileSystem.cpp +498 -0
  92. package/kepler/ExponentFileSystem.h +60 -0
  93. package/kepler/KeplerInit.cpp +28 -0
  94. package/kepler/NetworkingRequestHandler.cpp +47 -0
  95. package/kepler/test/FileSystem.cpp +425 -0
  96. package/package.json +1 -0
  97. package/plugin/build/withFileSystem.d.ts +3 -0
  98. package/plugin/build/withFileSystem.js +12 -0
  99. package/plugin/src/withFileSystem.ts +13 -0
  100. package/plugin/tsconfig.json +9 -0
  101. package/plugin/tsconfig.tsbuildinfo +1 -0
  102. package/react-native.config.js +21 -0
  103. package/src/ExponentFileSystem.kepler.ts +167 -0
  104. package/src/ExponentFileSystem.ts +7 -0
  105. package/src/ExponentFileSystem.web.ts +2 -0
  106. package/src/ExponentFileSystemShim.ts +23 -0
  107. package/src/FileSystem.ts +756 -0
  108. package/src/FileSystem.types.ts +339 -0
  109. package/src/index.ts +2 -0
  110. package/src/types.ts +34 -0
  111. package/tsconfig.json +9 -0
@@ -0,0 +1,10 @@
1
+ package expo.modules.filesystem
2
+
3
+ import android.content.Context
4
+ import expo.modules.core.BasePackage
5
+ import expo.modules.core.interfaces.InternalModule
6
+
7
+ class FileSystemPackage : BasePackage() {
8
+ override fun createInternalModules(context: Context): List<InternalModule> =
9
+ listOf(FilePermissionModule(), AppDirectoriesModule(context))
10
+ }
@@ -0,0 +1,92 @@
1
+ package expo.modules.filesystem
2
+
3
+ import expo.modules.kotlin.records.Field
4
+ import expo.modules.kotlin.records.Record
5
+ import expo.modules.kotlin.types.Enumerable
6
+
7
+ data class InfoOptions(
8
+ @Field
9
+ val md5: Boolean?,
10
+ @Field
11
+ val size: Boolean?
12
+ ) : Record
13
+
14
+ data class DeletingOptions(
15
+ @Field
16
+ val idempotent: Boolean = false
17
+ ) : Record
18
+
19
+ data class ReadingOptions(
20
+ @Field
21
+ val encoding: EncodingType = EncodingType.UTF8,
22
+ @Field
23
+ val position: Int?,
24
+ @Field
25
+ val length: Int?
26
+ ) : Record
27
+
28
+ enum class EncodingType(val value: String) : Enumerable {
29
+ UTF8("utf8"),
30
+ BASE64("base64")
31
+ }
32
+
33
+ enum class SessionType(val value: Int) : Enumerable {
34
+ BACKGROUND(0),
35
+ FOREGROUND(1)
36
+ }
37
+
38
+ enum class FileSystemUploadType(val value: Int) : Enumerable {
39
+ BINARY_CONTENT(0),
40
+ MULTIPART(1)
41
+ }
42
+
43
+ data class MakeDirectoryOptions(
44
+ @Field
45
+ val intermediates: Boolean = false
46
+ ) : Record
47
+
48
+ data class RelocatingOptions(
49
+ @Field
50
+ val from: String,
51
+ @Field
52
+ val to: String
53
+ ) : Record
54
+
55
+ data class DownloadOptions(
56
+ @Field
57
+ val md5: Boolean = false,
58
+ @Field
59
+ val cache: Boolean?,
60
+ @Field
61
+ val headers: Map<String, String>?,
62
+ @Field
63
+ val sessionType: SessionType = SessionType.BACKGROUND
64
+ ) : Record
65
+
66
+ data class WritingOptions(
67
+ @Field
68
+ val encoding: EncodingType = EncodingType.UTF8
69
+ ) : Record
70
+
71
+ data class FileSystemUploadOptions(
72
+ @Field
73
+ val headers: Map<String, String>?,
74
+ @Field
75
+ val httpMethod: HttpMethod = HttpMethod.POST,
76
+ @Field
77
+ val sessionType: SessionType = SessionType.BACKGROUND,
78
+ @Field
79
+ val uploadType: FileSystemUploadType,
80
+ @Field
81
+ val fieldName: String?,
82
+ @Field
83
+ val mimeType: String?,
84
+ @Field
85
+ val parameters: Map<String, String>?
86
+ ) : Record
87
+
88
+ enum class HttpMethod(val value: String) : Enumerable {
89
+ POST("POST"),
90
+ PUT("PUT"),
91
+ PATCH("PATCH")
92
+ }
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <paths>
3
+ <files-path name="expo_files" path="." />
4
+ <cache-path name="cached_expo_files" path="." />
5
+ </paths>
package/app.plugin.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./plugin/build/withFileSystem');
@@ -0,0 +1,4 @@
1
+ import { ExponentFileSystemModule } from './types';
2
+ declare const _default: ExponentFileSystemModule;
3
+ export default _default;
4
+ //# sourceMappingURL=ExponentFileSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystem.d.ts","sourceRoot":"","sources":["../src/ExponentFileSystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;;AAEnD,wBACyB"}
@@ -0,0 +1,5 @@
1
+ import { requireOptionalNativeModule } from 'expo-modules-core';
2
+ import ExponentFileSystemShim from './ExponentFileSystemShim';
3
+ export default requireOptionalNativeModule('ExponentFileSystem') ??
4
+ ExponentFileSystemShim;
5
+ //# sourceMappingURL=ExponentFileSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystem.js","sourceRoot":"","sources":["../src/ExponentFileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAG9D,eAAe,2BAA2B,CAA2B,oBAAoB,CAAC;IACxF,sBAAsB,CAAC","sourcesContent":["import { requireOptionalNativeModule } from 'expo-modules-core';\n\nimport ExponentFileSystemShim from './ExponentFileSystemShim';\nimport { ExponentFileSystemModule } from './types';\n\nexport default requireOptionalNativeModule<ExponentFileSystemModule>('ExponentFileSystem') ??\n ExponentFileSystemShim;\n"]}
@@ -0,0 +1,4 @@
1
+ import { ExponentFileSystemModule } from './types';
2
+ declare const module: ExponentFileSystemModule;
3
+ export default module;
4
+ //# sourceMappingURL=ExponentFileSystem.kepler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystem.kepler.d.ts","sourceRoot":"","sources":["../src/ExponentFileSystem.kepler.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAwCnD,QAAA,MAAM,MAAM,EAAE,wBA4Gb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { TurboModuleRegistry } from '@amazon-devices/keplerscript-turbomodule-api';
2
+ const nativeModule = TurboModuleRegistry.getEnforcing('ExponentFileSystem');
3
+ const expoCryptoNativeModule = TurboModuleRegistry.getEnforcing('ExpoCrypto');
4
+ function getHeadersFromResponse(response) {
5
+ const responseHeaders = {};
6
+ response.headers.forEach((value, key) => {
7
+ responseHeaders[key] = value;
8
+ });
9
+ return responseHeaders;
10
+ }
11
+ function getMimeTypeFromHeaders(responseHeaders) {
12
+ const contentTypeKey = Object.keys(responseHeaders).find((key) => key.toLowerCase() === "content-type");
13
+ return contentTypeKey ? responseHeaders[contentTypeKey].split(';')[0] : null;
14
+ }
15
+ const module = {
16
+ get name() {
17
+ return 'ExponentFileSystem';
18
+ },
19
+ get documentDirectory() {
20
+ return nativeModule.documentDirectory();
21
+ },
22
+ get cacheDirectory() {
23
+ return nativeModule.cacheDirectory();
24
+ },
25
+ /**
26
+ * @deprecated this property was removed from expo
27
+ */
28
+ get bundledAssets() {
29
+ return null;
30
+ },
31
+ get bundleDirectory() {
32
+ return nativeModule.bundleDirectory();
33
+ },
34
+ async getInfoAsync(fileUri, options) {
35
+ return nativeModule.getInfoAsync(fileUri, options);
36
+ },
37
+ async readAsStringAsync(fileUri, options) {
38
+ return nativeModule.readAsStringAsync(fileUri, options);
39
+ },
40
+ async getContentUriAsync(fileUri) {
41
+ return nativeModule.getContentUriAsync(fileUri);
42
+ },
43
+ async writeAsStringAsync(fileUri, contents, options) {
44
+ return nativeModule.writeAsStringAsync(fileUri, contents, options);
45
+ },
46
+ async deleteAsync(fileUri, options) {
47
+ return nativeModule.deleteAsync(fileUri, options);
48
+ },
49
+ async moveAsync(options) {
50
+ return nativeModule.moveAsync(options);
51
+ },
52
+ async copyAsync(options) {
53
+ return nativeModule.copyAsync(options);
54
+ },
55
+ async makeDirectoryAsync(fileUri, options) {
56
+ return nativeModule.makeDirectoryAsync(fileUri, options);
57
+ },
58
+ async readDirectoryAsync(fileUri) {
59
+ return nativeModule.readDirectoryAsync(fileUri);
60
+ },
61
+ async getFreeDiskStorageAsync() {
62
+ return nativeModule.getFreeDiskStorageAsync().then(parseInt);
63
+ },
64
+ async getTotalDiskCapacityAsync() {
65
+ const result = await nativeModule.getTotalDiskCapacityAsync();
66
+ return result ? parseInt(result) : 0;
67
+ },
68
+ async downloadAsync(url, fileUri, options) {
69
+ const { headers, md5 } = options;
70
+ const response = await fetch(url, { headers });
71
+ if (!response.ok) {
72
+ throw new Error('Failed to download the file!');
73
+ }
74
+ const data = await response.arrayBuffer();
75
+ await nativeModule.writeArrayBufferAsync(fileUri, data);
76
+ const responseHeaders = getHeadersFromResponse(response);
77
+ let downloadResult = {
78
+ uri: fileUri,
79
+ headers: responseHeaders,
80
+ status: response.status,
81
+ mimeType: getMimeTypeFromHeaders(responseHeaders)
82
+ };
83
+ if (md5) {
84
+ const md5ArrayBuffer = await expoCryptoNativeModule.digestAsync("MD5", data);
85
+ downloadResult.md5 = [...new Uint8Array(md5ArrayBuffer)]
86
+ .map(x => x.toString(16).padStart(2, '0'))
87
+ .join('');
88
+ }
89
+ return downloadResult;
90
+ },
91
+ async uploadAsync(url, fileUri, options) {
92
+ const { headers, httpMethod } = options;
93
+ const method = httpMethod ?? "POST";
94
+ const data = await nativeModule.readAsStringAsync(fileUri, {});
95
+ const response = await fetch(url, { method, headers, body: data });
96
+ if (!response.ok) {
97
+ throw new Error('Failed to upload the file!');
98
+ }
99
+ const uploadResult = await response.text();
100
+ const responseHeaders = getHeadersFromResponse(response);
101
+ return {
102
+ body: uploadResult,
103
+ headers: responseHeaders,
104
+ status: response.status,
105
+ mimeType: getMimeTypeFromHeaders(responseHeaders)
106
+ };
107
+ },
108
+ addListener(eventName) { },
109
+ removeListeners(count) { },
110
+ };
111
+ export default module;
112
+ //# sourceMappingURL=ExponentFileSystem.kepler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystem.kepler.js","sourceRoot":"","sources":["../src/ExponentFileSystem.kepler.ts"],"names":[],"mappings":"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","sourcesContent":["import { KeplerTurboModule, TurboModuleRegistry } from '@amazon-devices/keplerscript-turbomodule-api';\n\nimport {\n DeletingOptions,\n DownloadOptions,\n FileInfo,\n FileSystemDownloadResult,\n FileSystemUploadOptions,\n FileSystemUploadResult,\n InfoOptions,\n MakeDirectoryOptions,\n ReadingOptions,\n RelocatingOptions,\n WritingOptions,\n FileSystemHttpResult,\n} from './FileSystem.types';\nimport { ExponentFileSystemModule } from './types';\n\ninterface Spec extends KeplerTurboModule {\n readonly documentDirectory: () => string;\n readonly cacheDirectory: () => string;\n /**\n * @deprecated this property was removed from expo\n */\n readonly bundledAssets: () => string;\n readonly bundleDirectory: () => string;\n readonly getInfoAsync: (fileUri: string, options: InfoOptions) => Promise<FileInfo>;\n readonly readAsStringAsync: (fileUri: string, options: ReadingOptions) => Promise<string>;\n readonly getContentUriAsync: (fileUri: string) => Promise<string>;\n readonly writeAsStringAsync: (fileUri: string, contents: string, options: WritingOptions) => Promise<void>;\n readonly writeArrayBufferAsync: (fileUri: string, contents: ArrayBuffer) => Promise<void>;\n readonly deleteAsync: (fileUri: string, options: DeletingOptions) => Promise<void>;\n readonly moveAsync: (options: RelocatingOptions) => Promise<void>;\n readonly copyAsync: (options: RelocatingOptions) => Promise<void>;\n readonly makeDirectoryAsync: (fileUri: string, options: MakeDirectoryOptions) => Promise<void>;\n readonly readDirectoryAsync: (fileUri: string) => Promise<string[]>;\n readonly getFreeDiskStorageAsync: () => Promise<string>;\n readonly getTotalDiskCapacityAsync: () => Promise<string | undefined>;\n}\n\nconst nativeModule = TurboModuleRegistry.getEnforcing<Spec>('ExponentFileSystem') as Spec;\nconst expoCryptoNativeModule = TurboModuleRegistry.getEnforcing<any>('ExpoCrypto');\n\nfunction getHeadersFromResponse(response: Response): FileSystemHttpResult['headers'] {\n const responseHeaders: FileSystemDownloadResult['headers'] = {};\n response.headers.forEach((value: string, key: string) => {\n responseHeaders[key] = value;\n })\n return responseHeaders;\n}\n\nfunction getMimeTypeFromHeaders(responseHeaders: FileSystemHttpResult['headers']): FileSystemHttpResult['mimeType'] {\n const contentTypeKey = Object.keys(responseHeaders).find((key) => key.toLowerCase() === \"content-type\");\n return contentTypeKey ? responseHeaders[contentTypeKey].split(';')[0] : null;\n}\n\nconst module: ExponentFileSystemModule = {\n get name(): 'ExponentFileSystem' {\n return 'ExponentFileSystem';\n },\n get documentDirectory() {\n return nativeModule.documentDirectory();\n },\n get cacheDirectory() {\n return nativeModule.cacheDirectory();\n },\n /**\n * @deprecated this property was removed from expo\n */\n get bundledAssets() {\n return null;\n },\n get bundleDirectory() {\n return nativeModule.bundleDirectory();\n },\n async getInfoAsync(fileUri: string, options: InfoOptions) {\n return nativeModule.getInfoAsync(fileUri, options);\n },\n async readAsStringAsync(fileUri: string, options: ReadingOptions) {\n return nativeModule.readAsStringAsync(fileUri, options);\n },\n async getContentUriAsync(fileUri: string) {\n return nativeModule.getContentUriAsync(fileUri);\n },\n async writeAsStringAsync(fileUri: string, contents: string, options: WritingOptions) {\n return nativeModule.writeAsStringAsync(fileUri, contents, options);\n },\n async deleteAsync(fileUri: string, options: DeletingOptions) {\n return nativeModule.deleteAsync(fileUri, options);\n },\n async moveAsync(options: RelocatingOptions) {\n return nativeModule.moveAsync(options);\n },\n async copyAsync(options: RelocatingOptions) {\n return nativeModule.copyAsync(options);\n },\n async makeDirectoryAsync(fileUri: string, options: MakeDirectoryOptions) {\n return nativeModule.makeDirectoryAsync(fileUri, options);\n },\n async readDirectoryAsync(fileUri: string) {\n return nativeModule.readDirectoryAsync(fileUri);\n },\n async getFreeDiskStorageAsync() {\n return nativeModule.getFreeDiskStorageAsync().then(parseInt);\n },\n async getTotalDiskCapacityAsync() {\n const result = await nativeModule.getTotalDiskCapacityAsync();\n return result ? parseInt(result) : 0;\n },\n async downloadAsync(url: string, fileUri: string, options: DownloadOptions): Promise<FileSystemDownloadResult> {\n const { headers, md5 } = options;\n const response = await fetch(url, { headers });\n\n if (!response.ok) {\n throw new Error('Failed to download the file!');\n }\n\n const data = await response.arrayBuffer();\n\n await nativeModule.writeArrayBufferAsync(fileUri, data);\n\n const responseHeaders = getHeadersFromResponse(response);\n\n let downloadResult: FileSystemDownloadResult = {\n uri: fileUri,\n headers: responseHeaders,\n status: response.status,\n mimeType: getMimeTypeFromHeaders(responseHeaders)\n };\n\n if (md5) {\n const md5ArrayBuffer = await expoCryptoNativeModule.digestAsync(\"MD5\", data);\n downloadResult.md5 = [...new Uint8Array(md5ArrayBuffer)]\n .map(x => x.toString(16).padStart(2, '0'))\n .join('');\n }\n\n return downloadResult;\n },\n async uploadAsync(url: string, fileUri: string, options: FileSystemUploadOptions): Promise<FileSystemUploadResult> {\n const { headers, httpMethod } = options;\n const method = httpMethod ?? \"POST\";\n\n const data = await nativeModule.readAsStringAsync(fileUri, {});\n\n const response = await fetch(url, { method, headers, body: data });\n\n if (!response.ok) {\n throw new Error('Failed to upload the file!');\n }\n\n const uploadResult = await response.text();\n\n const responseHeaders = getHeadersFromResponse(response);\n\n return {\n body: uploadResult,\n headers: responseHeaders,\n status: response.status,\n mimeType: getMimeTypeFromHeaders(responseHeaders)\n };\n },\n addListener(eventName: string): void{},\n removeListeners(count: number): void{},\n};\n\nexport default module;\n"]}
@@ -0,0 +1,3 @@
1
+ import ExponentFileSystemShim from './ExponentFileSystemShim';
2
+ export default ExponentFileSystemShim;
3
+ //# sourceMappingURL=ExponentFileSystem.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystem.web.d.ts","sourceRoot":"","sources":["../src/ExponentFileSystem.web.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import ExponentFileSystemShim from './ExponentFileSystemShim';
2
+ export default ExponentFileSystemShim;
3
+ //# sourceMappingURL=ExponentFileSystem.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystem.web.js","sourceRoot":"","sources":["../src/ExponentFileSystem.web.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,eAAe,sBAAsB,CAAC","sourcesContent":["import ExponentFileSystemShim from './ExponentFileSystemShim';\nexport default ExponentFileSystemShim;\n"]}
@@ -0,0 +1,4 @@
1
+ import { ExponentFileSystemModule } from './types';
2
+ declare const platformModule: ExponentFileSystemModule;
3
+ export default platformModule;
4
+ //# sourceMappingURL=ExponentFileSystemShim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystemShim.d.ts","sourceRoot":"","sources":["../src/ExponentFileSystemShim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEnD,QAAA,MAAM,cAAc,EAAE,wBAkBrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,21 @@
1
+ const platformModule = {
2
+ get name() {
3
+ return 'ExponentFileSystem';
4
+ },
5
+ get documentDirectory() {
6
+ return null;
7
+ },
8
+ get cacheDirectory() {
9
+ return null;
10
+ },
11
+ get bundledAssets() {
12
+ return null;
13
+ },
14
+ get bundleDirectory() {
15
+ return null;
16
+ },
17
+ addListener(eventName) { },
18
+ removeListeners(count) { },
19
+ };
20
+ export default platformModule;
21
+ //# sourceMappingURL=ExponentFileSystemShim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExponentFileSystemShim.js","sourceRoot":"","sources":["../src/ExponentFileSystemShim.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAA6B;IAC/C,IAAI,IAAI;QACN,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,WAAW,CAAC,SAAiB,IAAS,CAAC;IACvC,eAAe,CAAC,KAAa,IAAS,CAAC;CACxC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { ExponentFileSystemModule } from './types';\n\nconst platformModule: ExponentFileSystemModule = {\n get name(): 'ExponentFileSystem' {\n return 'ExponentFileSystem';\n },\n get documentDirectory(): string | null {\n return null;\n },\n get cacheDirectory(): string | null {\n return null;\n },\n get bundledAssets(): string | null {\n return null;\n },\n get bundleDirectory(): string | null {\n return null;\n },\n addListener(eventName: string): void {},\n removeListeners(count: number): void {},\n};\n\nexport default platformModule;\n"]}