react-native-cloud-storage 2.2.2 → 2.3.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/android/build.gradle +101 -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 +236 -0
- package/android/src/main/java/com/voicekit/CloudStoragePackage.kt +17 -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} +130 -80
- 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/storages/cloudkit.js +10 -0
- package/dist/commonjs/storages/cloudkit.js.map +1 -0
- package/{lib/commonjs → dist/commonjs/storages}/google-drive/client.js +80 -38
- package/dist/commonjs/storages/google-drive/client.js.map +1 -0
- package/{lib/commonjs → dist/commonjs/storages}/google-drive/index.js +120 -64
- package/dist/commonjs/storages/google-drive/index.js.map +1 -0
- package/dist/commonjs/storages/google-drive/types.js.map +1 -0
- 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 +24 -0
- package/dist/commonjs/utils/constants.js.map +1 -0
- package/dist/commonjs/utils/local-fs.js +16 -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} +130 -80
- 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/storages/cloudkit.js +6 -0
- package/dist/module/storages/cloudkit.js.map +1 -0
- package/{lib/module → dist/module/storages}/google-drive/client.js +80 -38
- package/dist/module/storages/google-drive/client.js.map +1 -0
- package/{lib/module → dist/module/storages}/google-drive/index.js +119 -62
- package/dist/module/storages/google-drive/index.js.map +1 -0
- package/dist/module/storages/google-drive/types.js.map +1 -0
- 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 +20 -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} +60 -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/storages/cloudkit.d.ts +3 -0
- package/dist/typescript/storages/cloudkit.d.ts.map +1 -0
- package/{lib/typescript → dist/typescript/storages}/google-drive/client.d.ts +9 -2
- package/dist/typescript/storages/google-drive/client.d.ts.map +1 -0
- package/dist/typescript/storages/google-drive/index.d.ts +35 -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/dist/typescript/types/native.d.ts +64 -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 +3 -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.xcodeproj/project.pbxproj +12 -6
- package/ios/{CloudStorage.m → CloudStorageCloudKit.m} +4 -2
- package/ios/{CloudStorage.swift → CloudStorageCloudKit.swift} +60 -5
- package/ios/CloudStorageLocalFileSystem.m +15 -0
- package/ios/CloudStorageLocalFileSystem.swift +215 -0
- package/ios/Utils/CloudKitUtils.swift +4 -4
- package/ios/Utils/CloudStorageError.swift +8 -0
- package/ios/Utils/FileUtils.swift +19 -0
- package/ios/Utils/Types.swift +7 -1
- package/package.json +44 -103
- package/src/{RNCloudStorage.ts → cloud-storage.ts} +147 -85
- 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/storages/cloudkit.ts +5 -0
- package/src/{google-drive → storages/google-drive}/client.ts +98 -40
- package/src/{google-drive → storages/google-drive}/index.ts +172 -89
- package/src/types/native.ts +50 -14
- package/src/utils/cloud-storage-error.ts +15 -0
- package/src/utils/constants.ts +20 -0
- package/src/utils/local-fs.ts +19 -0
- package/src/utils/native.ts +40 -0
- 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.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.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/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/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/types/main.js.map +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/types/main.js.map +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/types/main.d.ts +0 -0
- /package/{lib → dist}/typescript/types/main.d.ts.map +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
|
@@ -5,10 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.GoogleDriveHttpError = void 0;
|
|
7
7
|
var _types = require("./types");
|
|
8
|
+
var _localFs = require("../../utils/local-fs");
|
|
8
9
|
const BASE_URL = 'https://www.googleapis.com/drive/v3';
|
|
9
10
|
const BASE_UPLOAD_URL = 'https://www.googleapis.com/upload/drive/v3';
|
|
10
11
|
const MULTIPART_BOUNDARY = 'foo_bar_baz';
|
|
11
12
|
class GoogleDriveHttpError extends Error {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
|
|
12
15
|
constructor(message, status, json) {
|
|
13
16
|
super(message);
|
|
14
17
|
this.status = status;
|
|
@@ -16,22 +19,22 @@ class GoogleDriveHttpError extends Error {
|
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
|
|
19
|
-
// TODO: fetch timeout
|
|
20
22
|
// TODO: properly handle errors
|
|
21
23
|
exports.GoogleDriveHttpError = GoogleDriveHttpError;
|
|
22
24
|
class GoogleDriveApiClient {
|
|
25
|
+
_fetchTimeout = null;
|
|
23
26
|
constructor(options) {
|
|
24
27
|
this.options = options;
|
|
25
28
|
}
|
|
26
29
|
buildQueryString(query) {
|
|
27
|
-
let
|
|
30
|
+
let result = Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => {
|
|
28
31
|
if (typeof value === 'boolean') return `${encodeURIComponent(key)}=${value ? 'true' : 'false'}`;
|
|
29
32
|
return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
|
|
30
33
|
}).join('&');
|
|
31
|
-
if (
|
|
32
|
-
|
|
34
|
+
if (result) {
|
|
35
|
+
result = `?${result}`;
|
|
33
36
|
}
|
|
34
|
-
return
|
|
37
|
+
return result;
|
|
35
38
|
}
|
|
36
39
|
async request(operation, {
|
|
37
40
|
queryParameters,
|
|
@@ -46,7 +49,7 @@ class GoogleDriveApiClient {
|
|
|
46
49
|
if (queryParameters) {
|
|
47
50
|
path += this.buildQueryString(queryParameters);
|
|
48
51
|
}
|
|
49
|
-
clearTimeout(this._fetchTimeout);
|
|
52
|
+
if (this._fetchTimeout !== null) clearTimeout(this._fetchTimeout);
|
|
50
53
|
const abortController = new AbortController();
|
|
51
54
|
this._fetchTimeout = setTimeout(() => {
|
|
52
55
|
abortController.abort();
|
|
@@ -64,8 +67,8 @@ class GoogleDriveApiClient {
|
|
|
64
67
|
let json = null;
|
|
65
68
|
try {
|
|
66
69
|
json = await response.json();
|
|
67
|
-
errorMessage = json.error
|
|
68
|
-
} catch
|
|
70
|
+
errorMessage = typeof json === 'object' && json !== null && 'error' in json && typeof json.error === 'object' && json.error !== null && 'message' in json.error && typeof json.error.message === 'string' ? json.error.message : `Request failed with status ${response.status}`;
|
|
71
|
+
} catch {
|
|
69
72
|
errorMessage = `Request failed with status ${response.status}`;
|
|
70
73
|
}
|
|
71
74
|
throw new GoogleDriveHttpError(errorMessage, response.status, json);
|
|
@@ -80,13 +83,7 @@ class GoogleDriveApiClient {
|
|
|
80
83
|
}
|
|
81
84
|
buildMultiPartBody(metadata, media) {
|
|
82
85
|
const body = [];
|
|
83
|
-
body.push(`--${MULTIPART_BOUNDARY}\r\n`);
|
|
84
|
-
body.push(`Content-Type: ${_types.MimeTypes.JSON}; charset=UTF-8\r\n\r\n`);
|
|
85
|
-
body.push(`${JSON.stringify(metadata)}\r\n`);
|
|
86
|
-
body.push(`--${MULTIPART_BOUNDARY}\r\n`);
|
|
87
|
-
body.push(`Content-Type: ${media.mimeType}\r\n\r\n`);
|
|
88
|
-
body.push(`${media.body}\r\n`);
|
|
89
|
-
body.push(`--${MULTIPART_BOUNDARY}--`);
|
|
86
|
+
body.push(`--${MULTIPART_BOUNDARY}\r\n`, `Content-Type: ${_types.MimeTypes.JSON}; charset=UTF-8\r\n\r\n`, `${JSON.stringify(metadata)}\r\n`, `--${MULTIPART_BOUNDARY}\r\n`, `Content-Type: ${media.mimeType}\r\n\r\n`, `${media.body}\r\n`, `--${MULTIPART_BOUNDARY}--`);
|
|
90
87
|
return body.join('');
|
|
91
88
|
}
|
|
92
89
|
async listFiles(space) {
|
|
@@ -131,19 +128,44 @@ class GoogleDriveApiClient {
|
|
|
131
128
|
});
|
|
132
129
|
}
|
|
133
130
|
async createFile(metadata, media) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
131
|
+
if ('body' in media) {
|
|
132
|
+
const multipartRequestBody = this.buildMultiPartBody(metadata, media);
|
|
133
|
+
await this.request(`/files`, {
|
|
134
|
+
queryParameters: {
|
|
135
|
+
uploadType: 'multipart'
|
|
136
|
+
},
|
|
137
|
+
method: 'POST',
|
|
138
|
+
headers: {
|
|
139
|
+
'Content-Type': `multipart/related; boundary=${MULTIPART_BOUNDARY}`,
|
|
140
|
+
'Content-Length': multipartRequestBody.length.toString()
|
|
141
|
+
},
|
|
142
|
+
body: multipartRequestBody,
|
|
143
|
+
baseUrl: BASE_UPLOAD_URL
|
|
144
|
+
});
|
|
145
|
+
} else {
|
|
146
|
+
// First, create an empty file with the required metadata
|
|
147
|
+
const file = await this.request(`/files`, {
|
|
148
|
+
method: 'POST',
|
|
149
|
+
headers: {
|
|
150
|
+
'Content-Type': _types.MimeTypes.JSON
|
|
151
|
+
},
|
|
152
|
+
body: JSON.stringify({
|
|
153
|
+
...metadata,
|
|
154
|
+
mimeType: media.mimeType
|
|
155
|
+
})
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// Then, upload the binary content via the native helper module
|
|
159
|
+
const remoteUri = `${BASE_UPLOAD_URL}/files/${file.id}?uploadType=media`;
|
|
160
|
+
await _localFs.localFileSystem.uploadFile(media.localPath, remoteUri, {
|
|
161
|
+
method: 'PATCH',
|
|
162
|
+
uploadType: 'binary',
|
|
163
|
+
headers: {
|
|
164
|
+
'Authorization': `Bearer ${this.options.accessToken}`,
|
|
165
|
+
'Content-Type': media.mimeType
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
147
169
|
}
|
|
148
170
|
async createDirectory(metadata) {
|
|
149
171
|
await this.request(`/files`, {
|
|
@@ -158,17 +180,37 @@ class GoogleDriveApiClient {
|
|
|
158
180
|
});
|
|
159
181
|
}
|
|
160
182
|
async updateFile(fileId, media) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
183
|
+
if ('body' in media) {
|
|
184
|
+
await this.request(`/files/${fileId}`, {
|
|
185
|
+
queryParameters: {
|
|
186
|
+
uploadType: 'media'
|
|
187
|
+
},
|
|
188
|
+
method: 'PATCH',
|
|
189
|
+
headers: {
|
|
190
|
+
'Content-Type': media.mimeType,
|
|
191
|
+
'Content-Length': media.body.length.toString()
|
|
192
|
+
},
|
|
193
|
+
body: media.body,
|
|
194
|
+
baseUrl: BASE_UPLOAD_URL
|
|
195
|
+
});
|
|
196
|
+
} else {
|
|
197
|
+
const remoteUri = `${BASE_UPLOAD_URL}/files/${fileId}?uploadType=media`;
|
|
198
|
+
await _localFs.localFileSystem.uploadFile(media.localPath, remoteUri, {
|
|
199
|
+
method: 'PATCH',
|
|
200
|
+
uploadType: 'binary',
|
|
201
|
+
headers: {
|
|
202
|
+
'Authorization': `Bearer ${this.options.accessToken}`,
|
|
203
|
+
'Content-Type': media.mimeType
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
async downloadFile(fileId, localPath) {
|
|
209
|
+
const remoteUri = `${BASE_URL}/files/${fileId}?alt=media`;
|
|
210
|
+
await _localFs.localFileSystem.downloadFile(remoteUri, localPath, {
|
|
166
211
|
headers: {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
},
|
|
170
|
-
body: media.body,
|
|
171
|
-
baseUrl: BASE_UPLOAD_URL
|
|
212
|
+
Authorization: `Bearer ${this.options.accessToken}`
|
|
213
|
+
}
|
|
172
214
|
});
|
|
173
215
|
}
|
|
174
216
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","_localFs","BASE_URL","BASE_UPLOAD_URL","MULTIPART_BOUNDARY","GoogleDriveHttpError","Error","constructor","message","status","json","exports","GoogleDriveApiClient","_fetchTimeout","options","buildQueryString","query","result","Object","entries","filter","value","undefined","map","key","encodeURIComponent","join","request","operation","queryParameters","baseUrl","timeout","accessToken","path","clearTimeout","abortController","AbortController","setTimeout","abort","response","fetch","headers","Authorization","signal","ok","errorMessage","error","Accept","text","buildMultiPartBody","metadata","media","body","push","MimeTypes","JSON","stringify","mimeType","listFiles","space","files","pageToken","fields","spaces","nextPageToken","getFile","fileId","getFileText","alt","deleteFile","method","createFile","multipartRequestBody","uploadType","length","toString","file","remoteUri","id","localFileSystem","uploadFile","localPath","createDirectory","FOLDER","updateFile","downloadFile","default"],"sourceRoot":"../../../../src","sources":["storages/google-drive/client.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,15 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _native = require("
|
|
8
|
-
var
|
|
7
|
+
var _native = require("../../types/native");
|
|
8
|
+
var _cloudStorageError = _interopRequireDefault(require("../../utils/cloud-storage-error"));
|
|
9
9
|
var _types = require("./types");
|
|
10
10
|
var _client = _interopRequireWildcard(require("./client"));
|
|
11
|
-
function
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
/**
|
|
15
|
-
* A
|
|
14
|
+
* A JavaScript-based implementation of the Google Drive API that implements the cloud storage interface.
|
|
16
15
|
*/
|
|
17
16
|
class GoogleDrive {
|
|
18
17
|
constructor(options) {
|
|
@@ -20,17 +19,17 @@ class GoogleDrive {
|
|
|
20
19
|
this.drive = new _client.default(options);
|
|
21
20
|
return new Proxy(this, {
|
|
22
21
|
// before calling any function, check if the access token is set
|
|
23
|
-
get(target,
|
|
22
|
+
get(target, property) {
|
|
24
23
|
const allowedFunctions = ['isCloudAvailable'];
|
|
25
|
-
if (typeof target[
|
|
24
|
+
if (typeof target[property] === 'function' && !allowedFunctions.includes(property.toString())) {
|
|
26
25
|
const {
|
|
27
26
|
accessToken
|
|
28
27
|
} = options;
|
|
29
28
|
if (!accessToken?.length) {
|
|
30
|
-
throw new
|
|
29
|
+
throw new _cloudStorageError.default(`Google Drive access token is not set, cannot call function ${property.toString()}`, _native.NativeCloudStorageErrorCode.ACCESS_TOKEN_MISSING);
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
|
-
return target[
|
|
32
|
+
return target[property];
|
|
34
33
|
}
|
|
35
34
|
});
|
|
36
35
|
}
|
|
@@ -43,9 +42,13 @@ class GoogleDrive {
|
|
|
43
42
|
getRootDirectory(scope) {
|
|
44
43
|
switch (scope) {
|
|
45
44
|
case 'documents':
|
|
46
|
-
|
|
45
|
+
{
|
|
46
|
+
return 'drive';
|
|
47
|
+
}
|
|
47
48
|
case 'app_data':
|
|
48
|
-
|
|
49
|
+
{
|
|
50
|
+
return 'appDataFolder';
|
|
51
|
+
}
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
resolvePathToDirectories(path) {
|
|
@@ -68,23 +71,23 @@ class GoogleDrive {
|
|
|
68
71
|
the files array - if it does not, it means that the directory is a child of the root directory and the one we're
|
|
69
72
|
looking for */
|
|
70
73
|
for (const possibleTopDirectory of possibleTopDirectories) {
|
|
71
|
-
if (!files.
|
|
74
|
+
if (!files.some(f => f.id === possibleTopDirectory.parents[0] && f.mimeType === _types.MimeTypes.FOLDER)) {
|
|
72
75
|
topDirectoryId = possibleTopDirectory.id;
|
|
73
76
|
break;
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
if (!topDirectoryId) {
|
|
78
|
-
throw new
|
|
81
|
+
throw new _cloudStorageError.default(`Could not find top directory with name ${directoryTree[0]}`, _native.NativeCloudStorageErrorCode.DIRECTORY_NOT_FOUND);
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
// now, we traverse the directories array and get the id of the last directory from the files array
|
|
82
85
|
let currentDirectoryId = topDirectoryId;
|
|
83
|
-
for (let
|
|
86
|
+
for (let index = 1; index < directoryTree.length; index++) {
|
|
84
87
|
const currentDirectory = files.find(f => f.id === currentDirectoryId);
|
|
85
|
-
if (!currentDirectory) throw new
|
|
86
|
-
const nextDirectory = files.find(f => f.name === directoryTree[
|
|
87
|
-
if (!nextDirectory) throw new
|
|
88
|
+
if (!currentDirectory) throw new _cloudStorageError.default(`Could not find directory with id ${currentDirectoryId}`, _native.NativeCloudStorageErrorCode.DIRECTORY_NOT_FOUND);
|
|
89
|
+
const nextDirectory = files.find(f => f.name === directoryTree[index] && f.parents[0] === currentDirectoryId);
|
|
90
|
+
if (!nextDirectory) throw new _cloudStorageError.default(`Could not find directory with name ${directoryTree[index]}`, _native.NativeCloudStorageErrorCode.DIRECTORY_NOT_FOUND);
|
|
88
91
|
currentDirectoryId = nextDirectory.id;
|
|
89
92
|
}
|
|
90
93
|
return currentDirectoryId;
|
|
@@ -98,7 +101,7 @@ class GoogleDrive {
|
|
|
98
101
|
async getRootDirectoryId(scope) {
|
|
99
102
|
const files = await this.drive.listFiles(this.getRootDirectory(scope));
|
|
100
103
|
for (const file of files) {
|
|
101
|
-
if (!files.
|
|
104
|
+
if (!files.some(f => f.id === file.parents[0])) return file.parents[0] ?? null;
|
|
102
105
|
}
|
|
103
106
|
return null;
|
|
104
107
|
}
|
|
@@ -106,15 +109,10 @@ class GoogleDrive {
|
|
|
106
109
|
const {
|
|
107
110
|
strictFilenames
|
|
108
111
|
} = this.options;
|
|
109
|
-
|
|
110
|
-
if (parentDirectoryId) {
|
|
111
|
-
possibleFiles = files.filter(f => f.name === filename && f.parents[0] === parentDirectoryId);
|
|
112
|
-
} else {
|
|
113
|
-
possibleFiles = files.filter(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
114
|
-
}
|
|
112
|
+
const possibleFiles = parentDirectoryId ? files.filter(f => f.name === filename && f.parents[0] === parentDirectoryId) : files.filter(f => f.name === filename && !files.some(f2 => f2.id === f.parents[0]));
|
|
115
113
|
if (possibleFiles.length <= 1) return;
|
|
116
114
|
if (strictFilenames) {
|
|
117
|
-
throw new
|
|
115
|
+
throw new _cloudStorageError.default(`Multiple files with the same name found at path ${path}: ${possibleFiles.map(f => f.id).join(', ')}`, _native.NativeCloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME);
|
|
118
116
|
}
|
|
119
117
|
}
|
|
120
118
|
async getFileId(path, scope, throwIf = false) {
|
|
@@ -122,7 +120,7 @@ class GoogleDrive {
|
|
|
122
120
|
const files = await this.drive.listFiles(this.getRootDirectory(scope));
|
|
123
121
|
if (path === '' || path === '/') {
|
|
124
122
|
const rootDirectoryId = await this.getRootDirectoryId(scope);
|
|
125
|
-
if (!rootDirectoryId) throw new
|
|
123
|
+
if (!rootDirectoryId) throw new _cloudStorageError.default(`Root directory in scope ${scope} not found`, _native.NativeCloudStorageErrorCode.DIRECTORY_NOT_FOUND);
|
|
126
124
|
return rootDirectoryId;
|
|
127
125
|
}
|
|
128
126
|
const {
|
|
@@ -135,24 +133,24 @@ class GoogleDrive {
|
|
|
135
133
|
this.checkIfMultipleFilesWithSameName(path, files, filename, null);
|
|
136
134
|
/* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
|
|
137
135
|
and the first parent has an id which does not exist in the files array */
|
|
138
|
-
file = files.find(f => f.name === filename && !files.
|
|
136
|
+
file = files.find(f => f.name === filename && !files.some(f2 => f2.id === f.parents[0]));
|
|
139
137
|
} else {
|
|
140
138
|
this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
|
|
141
139
|
file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
|
|
142
140
|
}
|
|
143
|
-
if (!file) throw new
|
|
141
|
+
if (!file) throw new _cloudStorageError.default(`File not found`, _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND);
|
|
144
142
|
if (file.mimeType === _types.MimeTypes.FOLDER && throwIf === 'directory') {
|
|
145
|
-
throw new
|
|
143
|
+
throw new _cloudStorageError.default(`Path ${path} is a directory`, _native.NativeCloudStorageErrorCode.PATH_IS_DIRECTORY);
|
|
146
144
|
} else if (file.mimeType !== _types.MimeTypes.FOLDER && throwIf === 'file') {
|
|
147
|
-
throw new
|
|
145
|
+
throw new _cloudStorageError.default(`Path ${path} is a file`, _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND);
|
|
148
146
|
}
|
|
149
147
|
return file.id;
|
|
150
|
-
} catch (
|
|
151
|
-
if (
|
|
152
|
-
throw new
|
|
148
|
+
} catch (error) {
|
|
149
|
+
if (error instanceof _client.GoogleDriveHttpError && error.json?.error?.status === 'UNAUTHENTICATED') {
|
|
150
|
+
throw new _cloudStorageError.default(`Could not authenticate with Google Drive`, _native.NativeCloudStorageErrorCode.AUTHENTICATION_FAILED, error.json);
|
|
153
151
|
} else {
|
|
154
|
-
if (
|
|
155
|
-
throw new
|
|
152
|
+
if (error instanceof _cloudStorageError.default) throw error;
|
|
153
|
+
throw new _cloudStorageError.default(`Could not get file id for path ${path}`, _native.NativeCloudStorageErrorCode.UNKNOWN, error);
|
|
156
154
|
}
|
|
157
155
|
}
|
|
158
156
|
}
|
|
@@ -160,26 +158,26 @@ class GoogleDrive {
|
|
|
160
158
|
try {
|
|
161
159
|
await this.getFileId(path, scope);
|
|
162
160
|
return true;
|
|
163
|
-
} catch (
|
|
164
|
-
if (
|
|
161
|
+
} catch (error) {
|
|
162
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) return false;else throw error;
|
|
165
163
|
}
|
|
166
164
|
}
|
|
167
165
|
async appendToFile(path, data, scope) {
|
|
168
166
|
let fileId;
|
|
169
|
-
let
|
|
167
|
+
let previousContent = '';
|
|
170
168
|
try {
|
|
171
169
|
fileId = await this.getFileId(path, scope);
|
|
172
|
-
|
|
173
|
-
} catch (
|
|
174
|
-
if (
|
|
170
|
+
previousContent = await this.drive.getFileText(fileId);
|
|
171
|
+
} catch (error) {
|
|
172
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
175
173
|
/* do nothing, simply create the file */
|
|
176
174
|
} else {
|
|
177
|
-
throw
|
|
175
|
+
throw error;
|
|
178
176
|
}
|
|
179
177
|
}
|
|
180
178
|
if (fileId) {
|
|
181
179
|
await this.drive.updateFile(fileId, {
|
|
182
|
-
body:
|
|
180
|
+
body: previousContent + data,
|
|
183
181
|
mimeType: _types.MimeTypes.TEXT
|
|
184
182
|
});
|
|
185
183
|
} else {
|
|
@@ -203,22 +201,22 @@ class GoogleDrive {
|
|
|
203
201
|
if (overwrite) {
|
|
204
202
|
try {
|
|
205
203
|
fileId = await this.getFileId(path, scope);
|
|
206
|
-
} catch (
|
|
207
|
-
if (
|
|
204
|
+
} catch (error) {
|
|
205
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
208
206
|
/* do nothing, simply create the file */
|
|
209
207
|
} else {
|
|
210
|
-
throw
|
|
208
|
+
throw error;
|
|
211
209
|
}
|
|
212
210
|
}
|
|
213
211
|
} else {
|
|
214
212
|
try {
|
|
215
213
|
await this.getFileId(path, scope);
|
|
216
|
-
throw new
|
|
217
|
-
} catch (
|
|
218
|
-
if (
|
|
214
|
+
throw new _cloudStorageError.default(`File ${path} already exists`, _native.NativeCloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
215
|
+
} catch (error) {
|
|
216
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
219
217
|
/* do nothing, simply create the file */
|
|
220
218
|
} else {
|
|
221
|
-
throw
|
|
219
|
+
throw error;
|
|
222
220
|
}
|
|
223
221
|
}
|
|
224
222
|
}
|
|
@@ -245,26 +243,26 @@ class GoogleDrive {
|
|
|
245
243
|
}
|
|
246
244
|
async listFiles(path, scope) {
|
|
247
245
|
const allFiles = await this.drive.listFiles(this.getRootDirectory(scope));
|
|
248
|
-
if (path
|
|
246
|
+
if (path === '') {
|
|
247
|
+
const rootDirectoryId = await this.getRootDirectoryId(scope);
|
|
248
|
+
return [...new Set(allFiles.filter(f => (f.parents ?? [])[0] === rootDirectoryId).map(f => f.name))];
|
|
249
|
+
} else {
|
|
249
250
|
const fileId = await this.getFileId(path, scope);
|
|
250
251
|
const files = allFiles.filter(f => (f.parents ?? [])[0] === fileId);
|
|
251
|
-
return
|
|
252
|
-
} else {
|
|
253
|
-
const rootDirectoryId = await this.getRootDirectoryId(scope);
|
|
254
|
-
return Array.from(new Set(allFiles.filter(f => (f.parents ?? [])[0] === rootDirectoryId).map(f => f.name)));
|
|
252
|
+
return [...new Set(files.map(f => f.name))];
|
|
255
253
|
}
|
|
256
254
|
}
|
|
257
255
|
async createDirectory(path, scope) {
|
|
258
256
|
try {
|
|
259
257
|
await this.getFileId(path, scope);
|
|
260
|
-
throw new
|
|
261
|
-
} catch (
|
|
262
|
-
if (
|
|
258
|
+
throw new _cloudStorageError.default(`File ${path} already exists`, _native.NativeCloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
259
|
+
} catch (error) {
|
|
260
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
263
261
|
/* do nothing, simply create the file */
|
|
264
|
-
} else if (
|
|
265
|
-
throw new
|
|
262
|
+
} else if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.PATH_IS_DIRECTORY) {
|
|
263
|
+
throw new _cloudStorageError.default(`Directory ${path} already exists`, _native.NativeCloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
266
264
|
} else {
|
|
267
|
-
throw
|
|
265
|
+
throw error;
|
|
268
266
|
}
|
|
269
267
|
}
|
|
270
268
|
const files = await this.drive.listFiles(this.getRootDirectory(scope));
|
|
@@ -283,8 +281,8 @@ class GoogleDrive {
|
|
|
283
281
|
const content = await this.drive.getFileText(fileId);
|
|
284
282
|
return content;
|
|
285
283
|
}
|
|
286
|
-
async
|
|
287
|
-
//
|
|
284
|
+
async triggerSync(_path, _scope) {
|
|
285
|
+
// Triggering file synchronization in Google Drive is not necessary / possible, as they need to be downloaded on every read operation via the API anyway
|
|
288
286
|
return;
|
|
289
287
|
}
|
|
290
288
|
async deleteFile(path, scope) {
|
|
@@ -300,7 +298,7 @@ class GoogleDrive {
|
|
|
300
298
|
const files = await this.drive.listFiles(this.getRootDirectory(scope));
|
|
301
299
|
const filesInDirectory = files.filter(f => (f.parents ?? [])[0] === fileId);
|
|
302
300
|
if (filesInDirectory.length > 0) {
|
|
303
|
-
throw new
|
|
301
|
+
throw new _cloudStorageError.default(`Directory ${path} is not empty`, _native.NativeCloudStorageErrorCode.DELETE_ERROR, filesInDirectory);
|
|
304
302
|
}
|
|
305
303
|
}
|
|
306
304
|
await this.drive.deleteFile(fileId);
|
|
@@ -316,6 +314,64 @@ class GoogleDrive {
|
|
|
316
314
|
isFile: file.mimeType !== _types.MimeTypes.FOLDER
|
|
317
315
|
};
|
|
318
316
|
}
|
|
317
|
+
async downloadFile(remotePath, localPath, scope) {
|
|
318
|
+
const fileId = await this.getFileId(remotePath, scope, 'directory');
|
|
319
|
+
try {
|
|
320
|
+
await this.drive.downloadFile(fileId, localPath);
|
|
321
|
+
} catch (error) {
|
|
322
|
+
if (error instanceof _cloudStorageError.default) throw error;
|
|
323
|
+
throw new _cloudStorageError.default(`Could not download file ${remotePath} to ${localPath}`, _native.NativeCloudStorageErrorCode.UNKNOWN, error);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
async uploadFile(remotePath, localPath, mimeType, scope, overwrite) {
|
|
327
|
+
let fileId;
|
|
328
|
+
if (overwrite) {
|
|
329
|
+
try {
|
|
330
|
+
fileId = await this.getFileId(remotePath, scope);
|
|
331
|
+
} catch (error) {
|
|
332
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
333
|
+
/* File doesn't exist -> we'll create it below */
|
|
334
|
+
} else {
|
|
335
|
+
throw error;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
} else {
|
|
339
|
+
try {
|
|
340
|
+
await this.getFileId(remotePath, scope);
|
|
341
|
+
throw new _cloudStorageError.default(`File ${remotePath} already exists`, _native.NativeCloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
342
|
+
} catch (error) {
|
|
343
|
+
if (error instanceof _cloudStorageError.default && error.code === _native.NativeCloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
344
|
+
/* not found -> ok, we'll create */
|
|
345
|
+
} else if (error instanceof _cloudStorageError.default) {
|
|
346
|
+
throw error;
|
|
347
|
+
} else {
|
|
348
|
+
throw error;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (fileId) {
|
|
353
|
+
// Overwrite existing file
|
|
354
|
+
await this.drive.updateFile(fileId, {
|
|
355
|
+
mimeType,
|
|
356
|
+
localPath
|
|
357
|
+
});
|
|
358
|
+
} else {
|
|
359
|
+
// Need to create a new file first
|
|
360
|
+
const files = await this.drive.listFiles(this.getRootDirectory(scope));
|
|
361
|
+
const {
|
|
362
|
+
directories,
|
|
363
|
+
filename
|
|
364
|
+
} = this.resolvePathToDirectories(remotePath);
|
|
365
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
366
|
+
await this.drive.createFile({
|
|
367
|
+
name: filename,
|
|
368
|
+
parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
|
|
369
|
+
}, {
|
|
370
|
+
mimeType,
|
|
371
|
+
localPath
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
319
375
|
}
|
|
320
376
|
exports.default = GoogleDrive;
|
|
321
377
|
//# sourceMappingURL=index.js.map
|
|
@@ -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","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","mimeType","MimeTypes","FOLDER","name","topDirectoryId","id","possibleTopDirectory","some","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","index","currentDirectory","find","nextDirectory","getRootDirectoryId","listFiles","file","checkIfMultipleFilesWithSameName","parentDirectoryId","strictFilenames","possibleFiles","f2","map","join","MULTIPLE_FILES_SAME_NAME","getFileId","throwIf","rootDirectoryId","FILE_NOT_FOUND","PATH_IS_DIRECTORY","error","GoogleDriveHttpError","json","status","AUTHENTICATION_FAILED","UNKNOWN","fileExists","code","appendToFile","data","fileId","previousContent","getFileText","updateFile","body","TEXT","createFile","undefined","overwrite","FILE_ALREADY_EXISTS","allFiles","Set","createDirectory","readFile","content","triggerSync","_path","_scope","deleteFile","deleteDirectory","recursive","filesInDirectory","DELETE_ERROR","statFile","getFile","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":[]}
|
|
@@ -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
|