react-native-cloud-storage 2.2.2 → 3.0.0
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/LICENSE +1 -1
- package/README.md +1 -1
- package/android/build.gradle +88 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/voicekit/CloudStorageError.kt +86 -0
- package/android/src/main/java/com/voicekit/CloudStorageLocalFileSystemModule.kt +232 -0
- package/android/src/main/java/com/voicekit/CloudStoragePackage.kt +32 -0
- package/android/src/main/java/com/voicekit/FileUtils.kt +41 -0
- package/android/src/main/java/com/voicekit/Types.kt +6 -0
- package/app.plugin.js +1 -1
- package/{lib/commonjs/RNCloudStorage.js → dist/commonjs/cloud-storage.js} +177 -92
- package/dist/commonjs/cloud-storage.js.map +1 -0
- package/dist/commonjs/expo-plugin/index.js +13 -0
- package/dist/commonjs/expo-plugin/index.js.map +1 -0
- package/{lib/commonjs/expo-plugin/withRNCloudStorageIos.js → dist/commonjs/expo-plugin/ios.js} +1 -1
- package/dist/commonjs/expo-plugin/ios.js.map +1 -0
- package/{lib/commonjs/hooks/useCloudFile.js → dist/commonjs/hooks/use-cloud-file.js} +26 -8
- package/dist/commonjs/hooks/use-cloud-file.js.map +1 -0
- package/{lib/commonjs/hooks/useIsCloudAvailable.js → dist/commonjs/hooks/use-is-cloud-available.js} +3 -3
- package/dist/commonjs/hooks/use-is-cloud-available.js.map +1 -0
- package/{lib → dist}/commonjs/index.js +10 -10
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/specs/NativeCloudStorageCloudKitIOS.js +9 -0
- package/dist/commonjs/specs/NativeCloudStorageCloudKitIOS.js.map +1 -0
- package/dist/commonjs/specs/NativeCloudStorageLocalFileSystem.js +9 -0
- package/dist/commonjs/specs/NativeCloudStorageLocalFileSystem.js.map +1 -0
- package/dist/commonjs/storages/cloudkit.js +12 -0
- package/dist/commonjs/storages/cloudkit.js.map +1 -0
- package/{lib/commonjs → dist/commonjs/storages}/google-drive/client.js +83 -40
- package/dist/commonjs/storages/google-drive/client.js.map +1 -0
- package/dist/commonjs/storages/google-drive/index.js +399 -0
- package/dist/commonjs/storages/google-drive/index.js.map +1 -0
- package/dist/commonjs/storages/google-drive/types.js.map +1 -0
- package/{lib → dist}/commonjs/types/main.js.map +1 -1
- package/dist/commonjs/types/native.js +28 -0
- package/dist/commonjs/types/native.js.map +1 -0
- package/{lib/commonjs/utils/CloudStorageError.js → dist/commonjs/utils/cloud-storage-error.js} +3 -1
- package/dist/commonjs/utils/cloud-storage-error.js.map +1 -0
- package/dist/commonjs/utils/constants.js +25 -0
- package/dist/commonjs/utils/constants.js.map +1 -0
- package/dist/commonjs/utils/local-fs.js +17 -0
- package/dist/commonjs/utils/local-fs.js.map +1 -0
- package/dist/commonjs/utils/native.js +35 -0
- package/dist/commonjs/utils/native.js.map +1 -0
- package/{lib/module/RNCloudStorage.js → dist/module/cloud-storage.js} +178 -93
- package/dist/module/cloud-storage.js.map +1 -0
- package/dist/module/expo-plugin/index.js +8 -0
- package/dist/module/expo-plugin/index.js.map +1 -0
- package/{lib/module/expo-plugin/withRNCloudStorageIos.js → dist/module/expo-plugin/ios.js} +1 -1
- package/dist/module/expo-plugin/ios.js.map +1 -0
- package/{lib/module/hooks/useCloudFile.js → dist/module/hooks/use-cloud-file.js} +25 -7
- package/dist/module/hooks/use-cloud-file.js.map +1 -0
- package/{lib/module/hooks/useIsCloudAvailable.js → dist/module/hooks/use-is-cloud-available.js} +2 -2
- package/dist/module/hooks/use-is-cloud-available.js.map +1 -0
- package/dist/module/index.js +9 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/specs/NativeCloudStorageCloudKitIOS.js +5 -0
- package/dist/module/specs/NativeCloudStorageCloudKitIOS.js.map +1 -0
- package/dist/module/specs/NativeCloudStorageLocalFileSystem.js +5 -0
- package/dist/module/specs/NativeCloudStorageLocalFileSystem.js.map +1 -0
- package/dist/module/storages/cloudkit.js +7 -0
- package/dist/module/storages/cloudkit.js.map +1 -0
- package/{lib/module → dist/module/storages}/google-drive/client.js +83 -40
- package/dist/module/storages/google-drive/client.js.map +1 -0
- package/dist/module/storages/google-drive/index.js +392 -0
- package/dist/module/storages/google-drive/index.js.map +1 -0
- package/dist/module/storages/google-drive/types.js.map +1 -0
- package/{lib → dist}/module/types/main.js.map +1 -1
- package/dist/module/types/native.js +24 -0
- package/dist/module/types/native.js.map +1 -0
- package/{lib/module/utils/CloudStorageError.js → dist/module/utils/cloud-storage-error.js} +3 -1
- package/dist/module/utils/cloud-storage-error.js.map +1 -0
- package/dist/module/utils/constants.js +21 -0
- package/dist/module/utils/constants.js.map +1 -0
- package/dist/module/utils/local-fs.js +12 -0
- package/dist/module/utils/local-fs.js.map +1 -0
- package/dist/module/utils/native.js +30 -0
- package/dist/module/utils/native.js.map +1 -0
- package/{lib/typescript/RNCloudStorage.d.ts → dist/typescript/cloud-storage.d.ts} +67 -8
- package/dist/typescript/cloud-storage.d.ts.map +1 -0
- package/{lib/typescript/expo-plugin/withRNCloudStorage.d.ts → dist/typescript/expo-plugin/index.d.ts} +1 -1
- package/dist/typescript/expo-plugin/index.d.ts.map +1 -0
- package/{lib/typescript/expo-plugin/withRNCloudStorageIos.d.ts → dist/typescript/expo-plugin/ios.d.ts} +1 -1
- package/dist/typescript/expo-plugin/ios.d.ts.map +1 -0
- package/{lib/typescript/hooks/useCloudFile.d.ts → dist/typescript/hooks/use-cloud-file.d.ts} +22 -4
- package/dist/typescript/hooks/use-cloud-file.d.ts.map +1 -0
- package/{lib/typescript/hooks/useIsCloudAvailable.d.ts → dist/typescript/hooks/use-is-cloud-available.d.ts} +2 -2
- package/dist/typescript/hooks/use-is-cloud-available.d.ts.map +1 -0
- package/dist/typescript/index.d.ts +7 -0
- package/dist/typescript/index.d.ts.map +1 -0
- package/dist/typescript/specs/NativeCloudStorageCloudKitIOS.d.ts +30 -0
- package/dist/typescript/specs/NativeCloudStorageCloudKitIOS.d.ts.map +1 -0
- package/dist/typescript/specs/NativeCloudStorageLocalFileSystem.d.ts +24 -0
- package/dist/typescript/specs/NativeCloudStorageLocalFileSystem.d.ts.map +1 -0
- package/dist/typescript/storages/cloudkit.d.ts +6 -0
- package/dist/typescript/storages/cloudkit.d.ts.map +1 -0
- package/{lib/typescript → dist/typescript/storages}/google-drive/client.d.ts +10 -3
- package/dist/typescript/storages/google-drive/client.d.ts.map +1 -0
- package/dist/typescript/storages/google-drive/index.d.ts +41 -0
- package/dist/typescript/storages/google-drive/index.d.ts.map +1 -0
- package/dist/typescript/storages/google-drive/types.d.ts.map +1 -0
- package/{lib → dist}/typescript/types/main.d.ts +8 -0
- package/dist/typescript/types/main.d.ts.map +1 -0
- package/dist/typescript/types/native.d.ts +27 -0
- package/dist/typescript/types/native.d.ts.map +1 -0
- package/dist/typescript/utils/cloud-storage-error.d.ts +8 -0
- package/dist/typescript/utils/cloud-storage-error.d.ts.map +1 -0
- package/dist/typescript/utils/constants.d.ts +4 -0
- package/dist/typescript/utils/constants.d.ts.map +1 -0
- package/{lib → dist}/typescript/utils/helpers.d.ts.map +1 -1
- package/dist/typescript/utils/local-fs.d.ts +2 -0
- package/dist/typescript/utils/local-fs.d.ts.map +1 -0
- package/dist/typescript/utils/native.d.ts +7 -0
- package/dist/typescript/utils/native.d.ts.map +1 -0
- package/ios/CloudStorage-Bridging-Header.h +0 -1
- package/ios/CloudStorage.xcodeproj/project.pbxproj +12 -6
- package/ios/CloudStorageCloudKit.swift +159 -0
- package/ios/CloudStorageLocalFileSystem.swift +216 -0
- package/ios/RCTCloudStorageCloudKit.mm +209 -0
- package/ios/RCTCloudStorageLocalFileSystem.mm +149 -0
- package/ios/Utils/CloudKitUtils.swift +12 -6
- package/ios/Utils/CloudStorageError.swift +8 -0
- package/ios/Utils/FileUtils.swift +21 -4
- package/ios/Utils/Promise.swift +1 -0
- package/ios/Utils/Types.swift +8 -1
- package/ios/react_native_cloud_storage.h +6 -0
- package/package.json +64 -110
- package/react-native-cloud-storage.podspec +2 -0
- package/src/{RNCloudStorage.ts → cloud-storage.ts} +210 -100
- package/src/expo-plugin/{withRNCloudStorage.ts → index.ts} +2 -2
- package/src/hooks/{useCloudFile.ts → use-cloud-file.ts} +24 -6
- package/src/hooks/{useIsCloudAvailable.ts → use-is-cloud-available.ts} +1 -1
- package/src/index.ts +5 -6
- package/src/specs/NativeCloudStorageCloudKitIOS.ts +33 -0
- package/src/specs/NativeCloudStorageLocalFileSystem.ts +28 -0
- package/src/storages/cloudkit.ts +13 -0
- package/src/{google-drive → storages/google-drive}/client.ts +100 -41
- package/src/storages/google-drive/index.ts +488 -0
- package/src/types/main.ts +9 -0
- package/src/types/native.ts +14 -22
- package/src/utils/cloud-storage-error.ts +15 -0
- package/src/utils/constants.ts +21 -0
- package/src/utils/local-fs.ts +19 -0
- package/src/utils/native.ts +40 -0
- package/ios/CloudStorage.m +0 -22
- package/ios/CloudStorage.swift +0 -103
- package/ios/CloudStorageEventEmitter.m +0 -16
- package/ios/CloudStorageEventEmitter.swift +0 -30
- package/lib/commonjs/RNCloudStorage.js.map +0 -1
- package/lib/commonjs/expo-plugin/withRNCloudStorage.js +0 -13
- package/lib/commonjs/expo-plugin/withRNCloudStorage.js.map +0 -1
- package/lib/commonjs/expo-plugin/withRNCloudStorageIos.js.map +0 -1
- package/lib/commonjs/google-drive/client.js.map +0 -1
- package/lib/commonjs/google-drive/index.js +0 -321
- package/lib/commonjs/google-drive/index.js.map +0 -1
- package/lib/commonjs/google-drive/types.js.map +0 -1
- package/lib/commonjs/hooks/useCloudFile.js.map +0 -1
- package/lib/commonjs/hooks/useIsCloudAvailable.js.map +0 -1
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/types/native.js +0 -26
- package/lib/commonjs/types/native.js.map +0 -1
- package/lib/commonjs/utils/CloudStorageError.js.map +0 -1
- package/lib/module/RNCloudStorage.js.map +0 -1
- package/lib/module/expo-plugin/withRNCloudStorage.js +0 -8
- package/lib/module/expo-plugin/withRNCloudStorage.js.map +0 -1
- package/lib/module/expo-plugin/withRNCloudStorageIos.js.map +0 -1
- package/lib/module/google-drive/client.js.map +0 -1
- package/lib/module/google-drive/index.js +0 -313
- package/lib/module/google-drive/index.js.map +0 -1
- package/lib/module/google-drive/types.js.map +0 -1
- package/lib/module/hooks/useCloudFile.js.map +0 -1
- package/lib/module/hooks/useIsCloudAvailable.js.map +0 -1
- package/lib/module/index.js +0 -10
- package/lib/module/index.js.map +0 -1
- package/lib/module/types/native.js +0 -22
- package/lib/module/types/native.js.map +0 -1
- package/lib/module/utils/CloudStorageError.js.map +0 -1
- package/lib/typescript/RNCloudStorage.d.ts.map +0 -1
- package/lib/typescript/expo-plugin/withRNCloudStorage.d.ts.map +0 -1
- package/lib/typescript/expo-plugin/withRNCloudStorageIos.d.ts.map +0 -1
- package/lib/typescript/google-drive/client.d.ts.map +0 -1
- package/lib/typescript/google-drive/index.d.ts +0 -34
- package/lib/typescript/google-drive/index.d.ts.map +0 -1
- package/lib/typescript/google-drive/types.d.ts.map +0 -1
- package/lib/typescript/hooks/useCloudFile.d.ts.map +0 -1
- package/lib/typescript/hooks/useIsCloudAvailable.d.ts.map +0 -1
- package/lib/typescript/index.d.ts +0 -8
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/types/main.d.ts.map +0 -1
- package/lib/typescript/types/native.d.ts +0 -40
- package/lib/typescript/types/native.d.ts.map +0 -1
- package/lib/typescript/utils/CloudStorageError.d.ts +0 -8
- package/lib/typescript/utils/CloudStorageError.d.ts.map +0 -1
- package/src/google-drive/index.ts +0 -399
- package/src/utils/CloudStorageError.ts +0 -14
- /package/{lib → dist}/commonjs/expo-plugin/types/index.js +0 -0
- /package/{lib → dist}/commonjs/expo-plugin/types/index.js.map +0 -0
- /package/{lib/commonjs → dist/commonjs/storages}/google-drive/types.js +0 -0
- /package/{lib → dist}/commonjs/types/main.js +0 -0
- /package/{lib → dist}/commonjs/utils/helpers.js +0 -0
- /package/{lib → dist}/commonjs/utils/helpers.js.map +0 -0
- /package/{lib → dist}/module/expo-plugin/types/index.js +0 -0
- /package/{lib → dist}/module/expo-plugin/types/index.js.map +0 -0
- /package/{lib → dist}/module/package.json +0 -0
- /package/{lib/module → dist/module/storages}/google-drive/types.js +0 -0
- /package/{lib → dist}/module/types/main.js +0 -0
- /package/{lib → dist}/module/utils/helpers.js +0 -0
- /package/{lib → dist}/module/utils/helpers.js.map +0 -0
- /package/{lib → dist}/typescript/expo-plugin/types/index.d.ts +0 -0
- /package/{lib → dist}/typescript/expo-plugin/types/index.d.ts.map +0 -0
- /package/{lib/typescript → dist/typescript/storages}/google-drive/types.d.ts +0 -0
- /package/{lib → dist}/typescript/utils/helpers.d.ts +0 -0
- /package/src/expo-plugin/{withRNCloudStorageIos.ts → ios.ts} +0 -0
- /package/src/{google-drive → storages/google-drive}/types.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_native","require","_cloudStorageError","_interopRequireDefault","_types","_client","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","GoogleDrive","constructor","options","drive","GoogleDriveApiClient","Proxy","target","property","allowedFunctions","includes","toString","accessToken","length","CloudStorageError","NativeCloudStorageErrorCode","ACCESS_TOKEN_MISSING","isCloudAvailable","getRootDirectory","scope","isRootPath","path","resolvePathToDirectories","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","escapeDriveQueryValue","value","replaceAll","String","raw","getQueryRootParentId","getRootDirectoryId","findDirectoryByNameAndParent","name","parentId","escapedName","escapedParentId","query","MimeTypes","FOLDER","listFiles","findFilesByNameAndParent","findFilesByParent","findParentDirectoryId","directoryTree","parentDirectoryId","directoryName","id","files","file","parents","some","candidate","checkIfMultipleFilesWithSameName","strictFilenames","map","join","MULTIPLE_FILES_SAME_NAME","getFileId","throwIf","PATH_IS_DIRECTORY","rootDirectoryId","getFile","FILE_NOT_FOUND","mimeType","error","GoogleDriveHttpError","json","status","AUTHENTICATION_FAILED","UNKNOWN","fileExists","code","appendToFile","data","fileId","previousContent","getFileText","updateFile","body","TEXT","DIRECTORY_NOT_FOUND","createFile","overwrite","FILE_ALREADY_EXISTS","Set","createDirectory","readFile","content","triggerSync","_path","_scope","deleteFile","deleteDirectory","recursive","filesInDirectory","DELETE_ERROR","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile","downloadFile","remotePath","localPath","uploadFile","exports"],"sourceRoot":"../../../../src","sources":["storages/google-drive/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MimeTypes","exports"],"sourceRoot":"../../../../src","sources":["storages/google-drive/types.ts"],"mappings":";;;;;;IAEYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CloudStorageScope","exports","CloudStorageProvider"],"sourceRoot":"../../../src","sources":["types/main.ts"],"mappings":";;;;;;AAAA;AAAA,IAKYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,
|
|
1
|
+
{"version":3,"names":["CloudStorageScope","exports","CloudStorageProvider"],"sourceRoot":"../../../src","sources":["types/main.ts"],"mappings":";;;;;;AAAA;AAAA,IAKYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAiBjBE,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NativeCloudStorageErrorCode = void 0;
|
|
7
|
+
let NativeCloudStorageErrorCode = exports.NativeCloudStorageErrorCode = /*#__PURE__*/function (NativeCloudStorageErrorCode) {
|
|
8
|
+
NativeCloudStorageErrorCode["INVALID_SCOPE"] = "ERR_INVALID_SCOPE";
|
|
9
|
+
NativeCloudStorageErrorCode["FILE_NOT_FOUND"] = "ERR_FILE_NOT_FOUND";
|
|
10
|
+
NativeCloudStorageErrorCode["PATH_IS_FILE"] = "ERR_PATH_IS_FILE";
|
|
11
|
+
NativeCloudStorageErrorCode["PATH_IS_DIRECTORY"] = "ERR_PATH_IS_DIRECTORY";
|
|
12
|
+
NativeCloudStorageErrorCode["DIRECTORY_NOT_FOUND"] = "ERR_DIRECTORY_NOT_FOUND";
|
|
13
|
+
NativeCloudStorageErrorCode["DIRECTORY_NOT_EMPTY"] = "ERR_DIRECTORY_NOT_EMPTY";
|
|
14
|
+
NativeCloudStorageErrorCode["FILE_ALREADY_EXISTS"] = "ERR_FILE_EXISTS";
|
|
15
|
+
NativeCloudStorageErrorCode["MULTIPLE_FILES_SAME_NAME"] = "ERR_MULTIPLE_FILES_SAME_NAME";
|
|
16
|
+
NativeCloudStorageErrorCode["AUTHENTICATION_FAILED"] = "ERR_AUTHENTICATION_FAILED";
|
|
17
|
+
NativeCloudStorageErrorCode["WRITE_ERROR"] = "ERR_WRITE_ERROR";
|
|
18
|
+
NativeCloudStorageErrorCode["READ_ERROR"] = "ERR_READ_ERROR";
|
|
19
|
+
NativeCloudStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
|
|
20
|
+
NativeCloudStorageErrorCode["STAT_ERROR"] = "ERR_STAT_ERROR";
|
|
21
|
+
NativeCloudStorageErrorCode["UNKNOWN"] = "ERR_UNKNOWN";
|
|
22
|
+
NativeCloudStorageErrorCode["FILE_NOT_DOWNLOADABLE"] = "ERR_FILE_NOT_DOWNLOADABLE";
|
|
23
|
+
NativeCloudStorageErrorCode["ACCESS_TOKEN_MISSING"] = "ERR_ACCESS_TOKEN_MISSING";
|
|
24
|
+
NativeCloudStorageErrorCode["INVALID_URL"] = "ERR_INVALID_URL";
|
|
25
|
+
NativeCloudStorageErrorCode["NETWORK_ERROR"] = "ERR_NETWORK_ERROR";
|
|
26
|
+
return NativeCloudStorageErrorCode;
|
|
27
|
+
}({});
|
|
28
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeCloudStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA","ignoreList":[]}
|
package/{lib/commonjs/utils/CloudStorageError.js → dist/commonjs/utils/cloud-storage-error.js}
RENAMED
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
+
|
|
7
9
|
class CloudStorageError extends Error {
|
|
8
10
|
constructor(message, code, details) {
|
|
9
11
|
super(message);
|
|
@@ -12,4 +14,4 @@ class CloudStorageError extends Error {
|
|
|
12
14
|
}
|
|
13
15
|
}
|
|
14
16
|
var _default = exports.default = CloudStorageError;
|
|
15
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=cloud-storage-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CloudStorageError","Error","constructor","message","code","details","_default","exports","default"],"sourceRoot":"../../../src","sources":["utils/cloud-storage-error.ts"],"mappings":";;;;;;AAAA;;AAGA,MAAMA,iBAAiB,SAASC,KAAK,CAAC;EAIpCC,WAAWA,CAACC,OAAe,EAAEC,IAAiC,EAAEC,OAAa,EAAE;IAC7E,KAAK,CAACF,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,OAAO,GAAGA,OAAO;EACxB;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LINKING_ERROR = exports.DEFAULT_PROVIDER_OPTIONS = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _main = require("../types/main");
|
|
9
|
+
const LINKING_ERROR = exports.LINKING_ERROR = `The package 'react-native-cloud-storage' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
10
|
+
ios: "- You have run 'pod install'\n",
|
|
11
|
+
default: ''
|
|
12
|
+
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
13
|
+
const DEFAULT_PROVIDER_OPTIONS = exports.DEFAULT_PROVIDER_OPTIONS = {
|
|
14
|
+
[_main.CloudStorageProvider.ICloud]: {
|
|
15
|
+
scope: _main.CloudStorageScope.AppData,
|
|
16
|
+
documentsMode: 'icloud'
|
|
17
|
+
},
|
|
18
|
+
[_main.CloudStorageProvider.GoogleDrive]: {
|
|
19
|
+
scope: _main.CloudStorageScope.AppData,
|
|
20
|
+
accessToken: null,
|
|
21
|
+
strictFilenames: false,
|
|
22
|
+
timeout: 3000
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_main","LINKING_ERROR","exports","Platform","select","ios","default","DEFAULT_PROVIDER_OPTIONS","CloudStorageProvider","ICloud","scope","CloudStorageScope","AppData","documentsMode","GoogleDrive","accessToken","strictFilenames","timeout"],"sourceRoot":"../../../src","sources":["utils/constants.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEO,MAAME,aAAa,GAAAC,OAAA,CAAAD,aAAA,GACxB,qFAAqF,GACrFE,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAE1B,MAAMC,wBAAmE,GAAAL,OAAA,CAAAK,wBAAA,GAAG;EACjF,CAACC,0BAAoB,CAACC,MAAM,GAAG;IAC7BC,KAAK,EAAEC,uBAAiB,CAACC,OAAO;IAChCC,aAAa,EAAE;EACjB,CAAC;EACD,CAACL,0BAAoB,CAACM,WAAW,GAAG;IAClCJ,KAAK,EAAEC,uBAAiB,CAACC,OAAO;IAChCG,WAAW,EAAE,IAAI;IACjBC,eAAe,EAAE,KAAK;IACtBC,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.localFileSystem = void 0;
|
|
7
|
+
var _NativeCloudStorageLocalFileSystem = _interopRequireDefault(require("../specs/NativeCloudStorageLocalFileSystem"));
|
|
8
|
+
var _native = require("../utils/native");
|
|
9
|
+
var _constants = require("./constants");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const NativeLocalFileSystem = (0, _native.createProxiedNativeModule)(_NativeCloudStorageLocalFileSystem.default);
|
|
12
|
+
const localFileSystem = exports.localFileSystem = NativeLocalFileSystem ?? new Proxy({}, {
|
|
13
|
+
get() {
|
|
14
|
+
throw new Error(_constants.LINKING_ERROR);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=local-fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_NativeCloudStorageLocalFileSystem","_interopRequireDefault","require","_native","_constants","e","__esModule","default","NativeLocalFileSystem","createProxiedNativeModule","NativeCloudStorageLocalFileSystem","localFileSystem","exports","Proxy","get","Error","LINKING_ERROR"],"sourceRoot":"../../../src","sources":["utils/local-fs.ts"],"mappings":";;;;;;AAAA,IAAAA,kCAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAA4C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5C,MAAMG,qBAAqB,GAAG,IAAAC,iCAAyB,EACrDC,0CACF,CAAC;AAEM,MAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAC1BH,qBAAqB,IACpB,IAAIK,KAAK,CACR,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACC,wBAAa,CAAC;EAChC;AACF,CACF,CAA4B","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createProxiedNativeModule = void 0;
|
|
7
|
+
var _native = require("../types/native");
|
|
8
|
+
var _cloudStorageError = _interopRequireDefault(require("./cloud-storage-error"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/**
|
|
11
|
+
* Creates a proxied native module that wraps thrown errors in a CloudStorageError.
|
|
12
|
+
* @param nativeModule The native module to proxy.
|
|
13
|
+
* @returns The proxied native module.
|
|
14
|
+
*/
|
|
15
|
+
const createProxiedNativeModule = nativeModule => {
|
|
16
|
+
if (!nativeModule) return null;
|
|
17
|
+
return new Proxy(nativeModule, {
|
|
18
|
+
get(target, property, receiver) {
|
|
19
|
+
const originalValue = Reflect.get(target, property, receiver);
|
|
20
|
+
if (typeof originalValue === 'function') {
|
|
21
|
+
return async (...arguments_) => {
|
|
22
|
+
try {
|
|
23
|
+
return await Reflect.apply(originalValue, target, arguments_);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
const error_ = typeof error === 'object' && error !== null && 'code' in error && typeof error.code === 'string' && Object.values(_native.NativeCloudStorageErrorCode).includes(error.code) ? new _cloudStorageError.default('message' in error && typeof error.message === 'string' ? error.message : 'Unknown error', error.code) : new _cloudStorageError.default('Unknown error', _native.NativeCloudStorageErrorCode.UNKNOWN, error);
|
|
26
|
+
throw error_;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return originalValue;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
exports.createProxiedNativeModule = createProxiedNativeModule;
|
|
35
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_native","require","_cloudStorageError","_interopRequireDefault","e","__esModule","default","createProxiedNativeModule","nativeModule","Proxy","get","target","property","receiver","originalValue","Reflect","arguments_","apply","error","error_","code","Object","values","NativeCloudStorageErrorCode","includes","CloudStorageError","message","UNKNOWN","exports"],"sourceRoot":"../../../src","sources":["utils/native.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAsD,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtD;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAsBC,YAAkC,IAAe;EAC3G,IAAI,CAACA,YAAY,EAAE,OAAO,IAAI;EAE9B,OAAO,IAAIC,KAAK,CAACD,YAAY,EAAE;IAC7BE,GAAGA,CAACC,MAAS,EAAEC,QAAyB,EAAEC,QAAiB,EAAE;MAC3D,MAAMC,aAAa,GAAGC,OAAO,CAACL,GAAG,CAACC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,CAAC;MAE7D,IAAI,OAAOC,aAAa,KAAK,UAAU,EAAE;QACvC,OAAO,OAAO,GAAGE,UAAqB,KAAK;UACzC,IAAI;YACF,OAAO,MAAMD,OAAO,CAACE,KAAK,CAACH,aAAa,EAAEH,MAAM,EAAEK,UAAU,CAAC;UAC/D,CAAC,CAAC,OAAOE,KAAc,EAAE;YACvB,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,MAAM,IAAIA,KAAK,IACf,OAAOA,KAAK,CAACE,IAAI,KAAK,QAAQ,IAC9BC,MAAM,CAACC,MAAM,CAACC,mCAA2B,CAAC,CAACC,QAAQ,CAACN,KAAK,CAACE,IAAmC,CAAC,GAC1F,IAAIK,0BAAiB,CACnB,SAAS,IAAIP,KAAK,IAAI,OAAOA,KAAK,CAACQ,OAAO,KAAK,QAAQ,GAAGR,KAAK,CAACQ,OAAO,GAAG,eAAe,EACzFR,KAAK,CAACE,IACR,CAAC,GACD,IAAIK,0BAAiB,CAAC,eAAe,EAAEF,mCAA2B,CAACI,OAAO,EAAET,KAAK,CAAC;YACxF,MAAMC,MAAM;UACd;QACF,CAAC;MACH;MAEA,OAAOL,aAAa;IACtB;EACF,CAAC,CAAC;AACJ,CAAC;AAACc,OAAA,CAAArB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -1,50 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { CloudStorageProvider, CloudStorageScope } from './types/main';
|
|
4
|
+
import { NativeCloudStorageErrorCode } from './types/native';
|
|
4
5
|
import { isProviderSupported } from './utils/helpers';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
ios: "- You have run 'pod install'\n",
|
|
11
|
-
default: ''
|
|
12
|
-
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
13
|
-
|
|
14
|
-
// proxy NativeModules.CloudStorage to catch any errors thrown by the native module and wrap them in a CloudStorageError
|
|
15
|
-
const nativeIosInstance = NativeModules.CloudStorage ? new Proxy(NativeModules.CloudStorage, {
|
|
16
|
-
get(target, prop) {
|
|
17
|
-
const originalFunction = target[prop];
|
|
18
|
-
if (typeof originalFunction === 'function') {
|
|
19
|
-
return async (...args) => {
|
|
20
|
-
try {
|
|
21
|
-
// @ts-expect-error - we can't know the types of the functions and their arguments
|
|
22
|
-
return await originalFunction(...args);
|
|
23
|
-
} catch (error) {
|
|
24
|
-
if (error?.code && Object.values(CloudStorageErrorCode).includes(error.code)) {
|
|
25
|
-
throw new CloudStorageError(error?.message || '', error.code);
|
|
26
|
-
} else {
|
|
27
|
-
throw new CloudStorageError('Unknown error', CloudStorageErrorCode.UNKNOWN, error);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
return originalFunction;
|
|
33
|
-
}
|
|
34
|
-
}) : null;
|
|
35
|
-
const defaultProviderOptions = {
|
|
36
|
-
[CloudStorageProvider.ICloud]: {
|
|
37
|
-
scope: CloudStorageScope.AppData
|
|
38
|
-
},
|
|
39
|
-
[CloudStorageProvider.GoogleDrive]: {
|
|
40
|
-
scope: CloudStorageScope.AppData,
|
|
41
|
-
accessToken: null,
|
|
42
|
-
strictFilenames: false,
|
|
43
|
-
timeout: 3000
|
|
44
|
-
}
|
|
45
|
-
};
|
|
6
|
+
import { Platform } from 'react-native';
|
|
7
|
+
import GoogleDrive from './storages/google-drive';
|
|
8
|
+
import { NativeCloudKit, NativeCloudKitModule } from './storages/cloudkit';
|
|
9
|
+
import { DEFAULT_PROVIDER_OPTIONS, LINKING_ERROR } from './utils/constants';
|
|
10
|
+
import CloudStorageError from './utils/cloud-storage-error';
|
|
46
11
|
export default class RNCloudStorage {
|
|
47
12
|
cloudAvailabilityListeners = [];
|
|
13
|
+
cloudAvailabilitySubscription = null;
|
|
48
14
|
|
|
49
15
|
//#region Constructor and configuration
|
|
50
16
|
/**
|
|
@@ -57,23 +23,27 @@ export default class RNCloudStorage {
|
|
|
57
23
|
}
|
|
58
24
|
this.provider = {
|
|
59
25
|
provider: provider ?? RNCloudStorage.getDefaultProvider(),
|
|
60
|
-
options:
|
|
26
|
+
options: DEFAULT_PROVIDER_OPTIONS[provider ?? RNCloudStorage.getDefaultProvider()]
|
|
61
27
|
};
|
|
62
28
|
this.setProvider(provider ?? RNCloudStorage.getDefaultProvider());
|
|
63
29
|
if (options) {
|
|
64
30
|
this.setProviderOptions(options);
|
|
65
31
|
}
|
|
66
32
|
}
|
|
67
|
-
get
|
|
33
|
+
get nativeStorage() {
|
|
68
34
|
switch (this.provider.provider) {
|
|
69
35
|
case CloudStorageProvider.ICloud:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
36
|
+
{
|
|
37
|
+
return NativeCloudKit ?? new Proxy({}, {
|
|
38
|
+
get() {
|
|
39
|
+
throw new Error(LINKING_ERROR);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
75
43
|
default:
|
|
76
|
-
|
|
44
|
+
{
|
|
45
|
+
return new GoogleDrive(this.provider.options);
|
|
46
|
+
}
|
|
77
47
|
}
|
|
78
48
|
}
|
|
79
49
|
|
|
@@ -84,9 +54,13 @@ export default class RNCloudStorage {
|
|
|
84
54
|
static getDefaultProvider() {
|
|
85
55
|
switch (Platform.OS) {
|
|
86
56
|
case 'ios':
|
|
87
|
-
|
|
57
|
+
{
|
|
58
|
+
return CloudStorageProvider.ICloud;
|
|
59
|
+
}
|
|
88
60
|
default:
|
|
89
|
-
|
|
61
|
+
{
|
|
62
|
+
return CloudStorageProvider.GoogleDrive;
|
|
63
|
+
}
|
|
90
64
|
}
|
|
91
65
|
}
|
|
92
66
|
|
|
@@ -95,7 +69,7 @@ export default class RNCloudStorage {
|
|
|
95
69
|
* @returns An array of supported CloudStorageProviders.
|
|
96
70
|
*/
|
|
97
71
|
static getSupportedProviders() {
|
|
98
|
-
return Object.values(CloudStorageProvider).filter(isProviderSupported);
|
|
72
|
+
return Object.values(CloudStorageProvider).filter(provider => isProviderSupported(provider));
|
|
99
73
|
}
|
|
100
74
|
|
|
101
75
|
/**
|
|
@@ -105,6 +79,38 @@ export default class RNCloudStorage {
|
|
|
105
79
|
getProvider() {
|
|
106
80
|
return this.provider.provider;
|
|
107
81
|
}
|
|
82
|
+
notifyCloudAvailabilityListeners(available) {
|
|
83
|
+
for (const listener of this.cloudAvailabilityListeners) {
|
|
84
|
+
listener(available);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
refreshCloudAvailability() {
|
|
88
|
+
this.nativeStorage.isCloudAvailable().then(available => {
|
|
89
|
+
this.notifyCloudAvailabilityListeners(available);
|
|
90
|
+
}).catch(() => {
|
|
91
|
+
// ignore errors when refreshing availability after provider changes
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
getNativeCloudKitModule() {
|
|
95
|
+
return this.provider.provider === CloudStorageProvider.ICloud ? NativeCloudKitModule : null;
|
|
96
|
+
}
|
|
97
|
+
removeCloudAvailabilitySubscription() {
|
|
98
|
+
this.cloudAvailabilitySubscription?.remove();
|
|
99
|
+
this.cloudAvailabilitySubscription = null;
|
|
100
|
+
}
|
|
101
|
+
configureCloudAvailabilitySubscription() {
|
|
102
|
+
this.removeCloudAvailabilitySubscription();
|
|
103
|
+
if (this.cloudAvailabilityListeners.length === 0) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const nativeCloudKitModule = this.getNativeCloudKitModule();
|
|
107
|
+
if (!nativeCloudKitModule) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
this.cloudAvailabilitySubscription = nativeCloudKitModule.onCloudAvailabilityChanged(event => {
|
|
111
|
+
this.notifyCloudAvailabilityListeners(event.available);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
108
114
|
|
|
109
115
|
/**
|
|
110
116
|
* Sets the current CloudStorageProvider.
|
|
@@ -116,24 +122,10 @@ export default class RNCloudStorage {
|
|
|
116
122
|
}
|
|
117
123
|
this.provider = {
|
|
118
124
|
provider,
|
|
119
|
-
options:
|
|
125
|
+
options: DEFAULT_PROVIDER_OPTIONS[provider]
|
|
120
126
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
this.nativeInstance.isCloudAvailable().then(available => {
|
|
124
|
-
this.cloudAvailabilityListeners.forEach(listener => {
|
|
125
|
-
listener(available);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
if (provider === CloudStorageProvider.ICloud) {
|
|
129
|
-
// Listen to native cloud availability change events
|
|
130
|
-
const eventEmitter = new NativeEventEmitter(NativeModules.CloudStorageEventEmitter);
|
|
131
|
-
eventEmitter.addListener('RNCloudStorage.cloud.availability-changed', event => {
|
|
132
|
-
this.cloudAvailabilityListeners.forEach(listener => {
|
|
133
|
-
listener(event.available);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
}
|
|
127
|
+
this.refreshCloudAvailability();
|
|
128
|
+
this.configureCloudAvailabilitySubscription();
|
|
137
129
|
}
|
|
138
130
|
|
|
139
131
|
/**
|
|
@@ -156,16 +148,32 @@ export default class RNCloudStorage {
|
|
|
156
148
|
};
|
|
157
149
|
if (this.provider.provider === CloudStorageProvider.GoogleDrive && 'accessToken' in newOptions) {
|
|
158
150
|
// Emit an event to notify useIsCloudAvailable() hook consumers of the new cloud availability status
|
|
159
|
-
this.
|
|
160
|
-
listener(!!newOptions.accessToken?.length);
|
|
161
|
-
});
|
|
151
|
+
this.notifyCloudAvailabilityListeners(!!newOptions.accessToken?.length);
|
|
162
152
|
}
|
|
163
153
|
}
|
|
164
154
|
subscribeToCloudAvailability(listener) {
|
|
165
155
|
this.cloudAvailabilityListeners.push(listener);
|
|
156
|
+
if (this.cloudAvailabilityListeners.length === 1) {
|
|
157
|
+
this.configureCloudAvailabilitySubscription();
|
|
158
|
+
this.refreshCloudAvailability();
|
|
159
|
+
}
|
|
166
160
|
}
|
|
167
161
|
unsubscribeFromCloudAvailability(listener) {
|
|
168
162
|
this.cloudAvailabilityListeners = this.cloudAvailabilityListeners.filter(l => l !== listener);
|
|
163
|
+
if (this.cloudAvailabilityListeners.length === 0) {
|
|
164
|
+
this.removeCloudAvailabilitySubscription();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
resolveNativeScope(scope) {
|
|
168
|
+
const resolvedScope = scope ?? this.provider.options.scope;
|
|
169
|
+
if (this.provider.provider !== CloudStorageProvider.ICloud || resolvedScope !== CloudStorageScope.Documents) {
|
|
170
|
+
return resolvedScope;
|
|
171
|
+
}
|
|
172
|
+
const iCloudOptions = this.provider.options;
|
|
173
|
+
if (iCloudOptions.documentsMode === 'legacy_sandbox') {
|
|
174
|
+
return 'documents_legacy';
|
|
175
|
+
}
|
|
176
|
+
return resolvedScope;
|
|
169
177
|
}
|
|
170
178
|
//#endregion
|
|
171
179
|
|
|
@@ -176,7 +184,7 @@ export default class RNCloudStorage {
|
|
|
176
184
|
* @returns A promise that resolves to true if the cloud storage is available, false otherwise.
|
|
177
185
|
*/
|
|
178
186
|
isCloudAvailable() {
|
|
179
|
-
return this.
|
|
187
|
+
return this.nativeStorage.isCloudAvailable();
|
|
180
188
|
}
|
|
181
189
|
|
|
182
190
|
/**
|
|
@@ -187,7 +195,7 @@ export default class RNCloudStorage {
|
|
|
187
195
|
* @returns A promise that resolves when the data has been appended.
|
|
188
196
|
*/
|
|
189
197
|
appendFile(path, data, scope) {
|
|
190
|
-
return this.
|
|
198
|
+
return this.nativeStorage.appendToFile(path, data, this.resolveNativeScope(scope));
|
|
191
199
|
}
|
|
192
200
|
|
|
193
201
|
/**
|
|
@@ -197,7 +205,7 @@ export default class RNCloudStorage {
|
|
|
197
205
|
* @returns A promise that resolves to true if the path exists, false otherwise.
|
|
198
206
|
*/
|
|
199
207
|
exists(path, scope) {
|
|
200
|
-
return this.
|
|
208
|
+
return this.nativeStorage.fileExists(path, this.resolveNativeScope(scope));
|
|
201
209
|
}
|
|
202
210
|
|
|
203
211
|
/**
|
|
@@ -208,7 +216,7 @@ export default class RNCloudStorage {
|
|
|
208
216
|
* @returns A promise that resolves when the file has been written.
|
|
209
217
|
*/
|
|
210
218
|
writeFile(path, data, scope) {
|
|
211
|
-
return this.
|
|
219
|
+
return this.nativeStorage.createFile(path, data, this.resolveNativeScope(scope), true);
|
|
212
220
|
}
|
|
213
221
|
|
|
214
222
|
/**
|
|
@@ -218,7 +226,7 @@ export default class RNCloudStorage {
|
|
|
218
226
|
* @returns A promise that resolves when the directory has been created.
|
|
219
227
|
*/
|
|
220
228
|
mkdir(path, scope) {
|
|
221
|
-
return this.
|
|
229
|
+
return this.nativeStorage.createDirectory(path, this.resolveNativeScope(scope));
|
|
222
230
|
}
|
|
223
231
|
|
|
224
232
|
/**
|
|
@@ -228,7 +236,7 @@ export default class RNCloudStorage {
|
|
|
228
236
|
* @returns A promise that resolves to an array of file names, excluding '.' and '..'.
|
|
229
237
|
*/
|
|
230
238
|
readdir(path, scope) {
|
|
231
|
-
return this.
|
|
239
|
+
return this.nativeStorage.listFiles(path, this.resolveNativeScope(scope));
|
|
232
240
|
}
|
|
233
241
|
|
|
234
242
|
/**
|
|
@@ -238,17 +246,55 @@ export default class RNCloudStorage {
|
|
|
238
246
|
* @returns A promise that resolves to the contents of the file.
|
|
239
247
|
*/
|
|
240
248
|
readFile(path, scope) {
|
|
241
|
-
return this.
|
|
249
|
+
return this.nativeStorage.readFile(path, this.resolveNativeScope(scope));
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Triggers synchronization for the file at the given path. Does not have any effect on Google Drive.
|
|
254
|
+
* @param path The file to trigger synchronization for.
|
|
255
|
+
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
256
|
+
* @returns A promise that resolves once the synchronization has been triggered.
|
|
257
|
+
*/
|
|
258
|
+
triggerSync(path, scope) {
|
|
259
|
+
return this.nativeStorage.triggerSync(path, this.resolveNativeScope(scope));
|
|
242
260
|
}
|
|
243
261
|
|
|
244
262
|
/**
|
|
245
|
-
*
|
|
246
|
-
* @param
|
|
263
|
+
* Uploads the file at the given local path to the given path, creating it if it doesn't exist or overwriting it if it does.
|
|
264
|
+
* @param remotePath The remote path to upload to.
|
|
265
|
+
* @param localPath The local path of the file to upload.
|
|
266
|
+
* @param options The options for the upload. Must contain a `mimeType` property.
|
|
247
267
|
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
248
|
-
* @returns A promise that resolves
|
|
268
|
+
* @returns A promise that resolves when the file has been uploaded.
|
|
249
269
|
*/
|
|
250
|
-
|
|
251
|
-
return this.
|
|
270
|
+
uploadFile(remotePath, localPath, options, scope) {
|
|
271
|
+
return this.nativeStorage.uploadFile(remotePath, localPath, options.mimeType, this.resolveNativeScope(scope), true);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Triggers synchronization for the file at the given path. Does not have any effect on Google Drive.
|
|
276
|
+
* @param path The file to trigger synchronization for.
|
|
277
|
+
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
278
|
+
* @returns A promise that resolves once the synchronization has been triggered.
|
|
279
|
+
* @deprecated Use `triggerSync` instead.
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Downloads the cloud file at the given remote path to the given local path.
|
|
284
|
+
* @param remotePath The remote path of the file to download from the cloud.
|
|
285
|
+
* @param localPath The local path to download the cloud file to.
|
|
286
|
+
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
287
|
+
*/
|
|
288
|
+
|
|
289
|
+
downloadFile(remotePathOrPath, localPathOrScope, scope) {
|
|
290
|
+
if (!localPathOrScope || !scope && typeof localPathOrScope === 'string' && Object.values(CloudStorageScope).includes(localPathOrScope)) {
|
|
291
|
+
// deprecated `triggerSync` call
|
|
292
|
+
return this.triggerSync(remotePathOrPath, scope);
|
|
293
|
+
}
|
|
294
|
+
if (!localPathOrScope) {
|
|
295
|
+
throw new CloudStorageError('Invalid arguments provided to downloadFile', NativeCloudStorageErrorCode.UNKNOWN);
|
|
296
|
+
}
|
|
297
|
+
return this.nativeStorage.downloadFile(remotePathOrPath, localPathOrScope, this.resolveNativeScope(scope));
|
|
252
298
|
}
|
|
253
299
|
|
|
254
300
|
/**
|
|
@@ -258,7 +304,7 @@ export default class RNCloudStorage {
|
|
|
258
304
|
* @returns A promise that resolves when the file has been deleted.
|
|
259
305
|
*/
|
|
260
306
|
unlink(path, scope) {
|
|
261
|
-
return this.
|
|
307
|
+
return this.nativeStorage.deleteFile(path, this.resolveNativeScope(scope));
|
|
262
308
|
}
|
|
263
309
|
|
|
264
310
|
/**
|
|
@@ -269,7 +315,7 @@ export default class RNCloudStorage {
|
|
|
269
315
|
* @returns A promise that resolves when the directory has been deleted.
|
|
270
316
|
*/
|
|
271
317
|
rmdir(path, options, scope) {
|
|
272
|
-
return this.
|
|
318
|
+
return this.nativeStorage.deleteDirectory(path, options?.recursive ?? false, this.resolveNativeScope(scope));
|
|
273
319
|
}
|
|
274
320
|
|
|
275
321
|
/**
|
|
@@ -279,7 +325,7 @@ export default class RNCloudStorage {
|
|
|
279
325
|
* @returns A promise that resolves to the CloudStorageFileStat object.
|
|
280
326
|
*/
|
|
281
327
|
async stat(path, scope) {
|
|
282
|
-
const native = await this.
|
|
328
|
+
const native = await this.nativeStorage.statFile(path, this.resolveNativeScope(scope));
|
|
283
329
|
return {
|
|
284
330
|
...native,
|
|
285
331
|
birthtime: new Date(native.birthtimeMs),
|
|
@@ -402,13 +448,52 @@ export default class RNCloudStorage {
|
|
|
402
448
|
}
|
|
403
449
|
|
|
404
450
|
/**
|
|
405
|
-
*
|
|
406
|
-
* @param path The file to trigger
|
|
451
|
+
* Triggers synchronization for the file at the given path in the provider of the default static instance. Does not have any effect on Google Drive.
|
|
452
|
+
* @param path The file to trigger synchronization for.
|
|
407
453
|
* @param scope The directory scope the path is in. Defaults to the default scope set for the default static instance.
|
|
408
|
-
* @returns A promise that resolves once the
|
|
454
|
+
* @returns A promise that resolves once the synchronization has been triggered.
|
|
455
|
+
*/
|
|
456
|
+
static triggerSync(path, scope) {
|
|
457
|
+
return RNCloudStorage.getDefaultInstance().triggerSync(path, scope);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Uploads the file at the given local path to the given path in the provider of the default static instance, creating it if it doesn't exist or overwriting it if it does.
|
|
462
|
+
* @param remotePath The remote path to upload to.
|
|
463
|
+
* @param localPath The local path of the file to upload.
|
|
464
|
+
* @param options The options for the upload. Must contain a `mimeType` property.
|
|
465
|
+
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
466
|
+
* @returns A promise that resolves when the file has been uploaded.
|
|
467
|
+
*/
|
|
468
|
+
static uploadFile(remotePath, localPath, options, scope) {
|
|
469
|
+
return RNCloudStorage.getDefaultInstance().uploadFile(remotePath, localPath, options, scope);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Triggers synchronization for the file at the given path in the provider of the default static instance. Does not have any effect on Google Drive.
|
|
474
|
+
* @param path The file to trigger synchronization for.
|
|
475
|
+
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
476
|
+
* @returns A promise that resolves once the synchronization has been triggered.
|
|
477
|
+
* @deprecated Use `triggerSync` instead.
|
|
409
478
|
*/
|
|
410
|
-
|
|
411
|
-
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Downloads the cloud file at the given remote path to the given local path.
|
|
482
|
+
* @param remotePath The remote path of the file to download from the cloud.
|
|
483
|
+
* @param localPath The local path to download the cloud file to.
|
|
484
|
+
* @param scope The directory scope the path is in. Defaults to set default scope set for the current provider.
|
|
485
|
+
*/
|
|
486
|
+
|
|
487
|
+
static downloadFile(remotePathOrPath, localPathOrScope, scope) {
|
|
488
|
+
if (typeof scope === 'string') {
|
|
489
|
+
if (!localPathOrScope) {
|
|
490
|
+
throw new CloudStorageError('Invalid arguments provided to downloadFile', NativeCloudStorageErrorCode.UNKNOWN);
|
|
491
|
+
}
|
|
492
|
+
return RNCloudStorage.getDefaultInstance().downloadFile(remotePathOrPath, localPathOrScope, scope);
|
|
493
|
+
} else {
|
|
494
|
+
// deprecated `triggerSync` call
|
|
495
|
+
return RNCloudStorage.getDefaultInstance().triggerSync(remotePathOrPath, scope);
|
|
496
|
+
}
|
|
412
497
|
}
|
|
413
498
|
|
|
414
499
|
/**
|
|
@@ -443,4 +528,4 @@ export default class RNCloudStorage {
|
|
|
443
528
|
}
|
|
444
529
|
//#endregion
|
|
445
530
|
}
|
|
446
|
-
//# sourceMappingURL=
|
|
531
|
+
//# sourceMappingURL=cloud-storage.js.map
|