react-native-cloud-storage 0.4.2 → 0.6.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.
@@ -4,6 +4,7 @@
4
4
 
5
5
  RCT_EXTERN_METHOD(fileExists:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
6
6
  RCT_EXTERN_METHOD(createFile:(NSString *)path withData:(NSString *)data withScope:(NSString *)scope withOverwrite:(BOOL)overwrite withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
7
+ RCT_EXTERN_METHOD(createDirectory:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
7
8
  RCT_EXTERN_METHOD(readFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
8
9
  RCT_EXTERN_METHOD(deleteFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
9
10
  RCT_EXTERN_METHOD(statFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
@@ -37,6 +37,28 @@ class CloudStorage: NSObject {
37
37
  }
38
38
  }
39
39
 
40
+ @objc(createDirectory:withScope:withResolver:withRejecter:)
41
+ func createDirectory(path: String, scope: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
42
+ let fileManager = FileManager.default
43
+ let directory = getDirectory(scope)
44
+ if (directory == nil) {
45
+ reject("ERR_NO_DIRECTORY_FOUND", "No directory found for scope \(scope)", nil)
46
+ return
47
+ }
48
+ let dirPath = directory?.appendingPathComponent(path)
49
+ let dirExists = fileManager.fileExists(atPath: dirPath!.path)
50
+ if (dirExists) {
51
+ reject("ERR_FILE_EXISTS", "Directory \(path) already exists", nil)
52
+ return
53
+ }
54
+ do {
55
+ try fileManager.createDirectory(at: dirPath!, withIntermediateDirectories: true, attributes: nil)
56
+ resolve(true)
57
+ } catch {
58
+ reject("ERR_WRITE_ERROR", "Error creating directory \(path)", error)
59
+ }
60
+ }
61
+
40
62
  @objc(readFile:withScope:withResolver:withRejecter:)
41
63
  func readFile(path: String, scope: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
42
64
  let fileManager = FileManager.default
@@ -6,11 +6,21 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _createRNCloudStorage = _interopRequireDefault(require("./createRNCloudStorage"));
8
8
  var _googleDrive = _interopRequireDefault(require("./google-drive"));
9
+ var _reactNative = require("react-native");
9
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
11
  const nativeInstance = (0, _createRNCloudStorage.default)();
11
12
  const RNCloudStorage = {
12
13
  getGoogleDriveAccessToken: () => _googleDrive.default.accessToken,
13
14
  setGoogleDriveAccessToken: accessToken => _googleDrive.default.accessToken = accessToken,
15
+ setThrowOnFilesWithSameName: enable => _googleDrive.default.throwOnFilesWithSameName = enable,
16
+ /* eslint-disable @typescript-eslint/no-unused-vars */
17
+ subscribeToFilesWithSameName: _reactNative.Platform.OS === 'ios' ?
18
+ // @ts-expect-error - subscriber is undefined; just a mock
19
+ subscriber => ({
20
+ remove: () => {}
21
+ }) : nativeInstance.subscribeToFilesWithSameName.bind(nativeInstance),
22
+ /* eslint-enable @typescript-eslint/no-unused-vars */
23
+
14
24
  /**
15
25
  * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
16
26
  * unavailable right after app launch or if the user is not logged in.
@@ -38,6 +48,15 @@ const RNCloudStorage = {
38
48
  writeFile: (path, data, scope) => {
39
49
  return nativeInstance.createFile(path, data, scope, true);
40
50
  },
51
+ /**
52
+ * Creates a new directory at the given path.
53
+ * @param path The directory to create.
54
+ * @param scope The directory scope the path is in.
55
+ * @returns A promise that resolves when the directory has been created.
56
+ */
57
+ mkdir: (path, scope) => {
58
+ return nativeInstance.createDirectory(path, scope);
59
+ },
41
60
  /**
42
61
  * Reads the contents of the file at the given path.
43
62
  * @param path The file to read.
@@ -1 +1 @@
1
- {"version":3,"names":["_createRNCloudStorage","_interopRequireDefault","require","_googleDrive","obj","__esModule","default","nativeInstance","createRNCloudStorage","RNCloudStorage","getGoogleDriveAccessToken","GoogleDriveApiClient","accessToken","setGoogleDriveAccessToken","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile","_default","exports"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGlD,MAAMG,cAAc,GAAG,IAAAC,6BAAoB,GAAE;AAC7C,MAAMC,cAAc,GAAG;EACrBC,yBAAyB,EAAEA,CAAA,KAAMC,oBAAoB,CAACC,WAAW;EACjEC,yBAAyB,EAAGD,WAAmB,IAAMD,oBAAoB,CAACC,WAAW,GAAGA,WAAY;EAEpG;AACF;AACA;AACA;AACA;EACEE,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOP,cAAc,CAACO,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAwB,KAAuB;IACpE,OAAOV,cAAc,CAACW,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAwB,KAAoB;IAClF,OAAOV,cAAc,CAACc,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQ,EAAEA,CAACN,IAAY,EAAEC,KAAwB,KAAsB;IACrE,OAAOV,cAAc,CAACe,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAwB,KAAoB;IACjE,OAAOV,cAAc,CAACiB,UAAU,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,IAAI,EAAE,MAAAA,CAAOT,IAAY,EAAEC,KAAwB,KAAoC;IACrF,MAAMS,MAAM,GAAG,MAAMnB,cAAc,CAACoB,QAAQ,CAACX,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGS,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAAC,IAAAC,QAAA,GAEa1B,cAAc;AAAA2B,OAAA,CAAA9B,OAAA,GAAA6B,QAAA"}
1
+ {"version":3,"names":["_createRNCloudStorage","_interopRequireDefault","require","_googleDrive","_reactNative","obj","__esModule","default","nativeInstance","createRNCloudStorage","RNCloudStorage","getGoogleDriveAccessToken","GoogleDriveApiClient","accessToken","setGoogleDriveAccessToken","setThrowOnFilesWithSameName","enable","throwOnFilesWithSameName","subscribeToFilesWithSameName","Platform","OS","subscriber","remove","bind","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","mkdir","createDirectory","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile","_default","exports"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAAwC,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,MAAMG,cAAc,GAAG,IAAAC,6BAAoB,GAAE;AAE7C,MAAMC,cAAc,GAAG;EACrBC,yBAAyB,EAAEA,CAAA,KAAMC,oBAAoB,CAACC,WAAW;EACjEC,yBAAyB,EAAGD,WAAmB,IAAMD,oBAAoB,CAACC,WAAW,GAAGA,WAAY;EACpGE,2BAA2B,EAAGC,MAAe,IAAMJ,oBAAoB,CAACK,wBAAwB,GAAGD,MAAO;EAC1G;EACAE,4BAA4B,EAC1BC,qBAAQ,CAACC,EAAE,KAAK,KAAK;EACjB;EACCC,UAA4E,KAAM;IAAEC,MAAM,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAC,CAAC,GACvGd,cAAc,CAA0BU,4BAA4B,CAACK,IAAI,CAACf,cAAc,CAAC;EAChG;;EAEA;AACF;AACA;AACA;AACA;EACEgB,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOhB,cAAc,CAACgB,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAwB,KAAuB;IACpE,OAAOnB,cAAc,CAACoB,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAwB,KAAoB;IAClF,OAAOnB,cAAc,CAACuB,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,KAAK,EAAEA,CAACN,IAAY,EAAEC,KAAwB,KAAoB;IAChE,OAAOnB,cAAc,CAACyB,eAAe,CAACP,IAAI,EAAEC,KAAK,CAAC;EACpD,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEO,QAAQ,EAAEA,CAACR,IAAY,EAAEC,KAAwB,KAAsB;IACrE,OAAOnB,cAAc,CAAC0B,QAAQ,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,MAAM,EAAEA,CAACT,IAAY,EAAEC,KAAwB,KAAoB;IACjE,OAAOnB,cAAc,CAAC4B,UAAU,CAACV,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEU,IAAI,EAAE,MAAAA,CAAOX,IAAY,EAAEC,KAAwB,KAAoC;IACrF,MAAMW,MAAM,GAAG,MAAM9B,cAAc,CAAC+B,QAAQ,CAACb,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGW,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAAC,IAAAC,QAAA,GAEarC,cAAc;AAAAsC,OAAA,CAAAzC,OAAA,GAAAwC,QAAA"}
@@ -10,12 +10,15 @@ var _CloudStorageError = _interopRequireDefault(require("../utils/CloudStorageEr
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
  class GoogleDriveApiClient {
12
12
  static drive = new _reactNativeGoogleDriveApiWrapperJs.GDrive();
13
+ static throwOnFilesWithSameName = false;
13
14
  constructor() {
15
+ this.filesWithSameNameSubscribers = [];
14
16
  GoogleDriveApiClient.drive.fetchTimeout = 3000;
15
17
  return new Proxy(this, {
16
18
  // before calling any function, check if the access token is set
17
19
  get(target, prop) {
18
- if (typeof target[prop] === 'function' && prop !== 'isCloudAvailable') {
20
+ const allowedFunctions = ['isCloudAvailable', 'subscribeToFilesWithSameName'];
21
+ if (typeof target[prop] === 'function' && !allowedFunctions.includes(prop.toString())) {
19
22
  if (!GoogleDriveApiClient.drive.accessToken) {
20
23
  throw new _CloudStorageError.default(`Google Drive access token is not set, cannot call function ${prop.toString()}`, _native.CloudStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
21
24
  }
@@ -32,6 +35,14 @@ class GoogleDriveApiClient {
32
35
  static get accessToken() {
33
36
  return GoogleDriveApiClient.drive.accessToken;
34
37
  }
38
+ subscribeToFilesWithSameName(subscriber) {
39
+ this.filesWithSameNameSubscribers.push(subscriber);
40
+ return {
41
+ remove: () => {
42
+ this.filesWithSameNameSubscribers = this.filesWithSameNameSubscribers.filter(s => s !== subscriber);
43
+ }
44
+ };
45
+ }
35
46
  isCloudAvailable = async () => {
36
47
  var _GoogleDriveApiClient;
37
48
  return !!((_GoogleDriveApiClient = GoogleDriveApiClient.accessToken) !== null && _GoogleDriveApiClient !== void 0 && _GoogleDriveApiClient.length);
@@ -92,27 +103,60 @@ class GoogleDriveApiClient {
92
103
  });
93
104
  return files.files;
94
105
  }
95
- async getFileId(path, scope) {
96
- const files = await this.listFiles(scope);
97
- const {
98
- directories,
99
- filename
100
- } = this.resolvePathToDirectories(path);
101
- const parentDirectoryId = this.findParentDirectoryId(files, directories);
102
- let file;
103
- if (parentDirectoryId === null) {
104
- /* when the file is supposes to be in the root directory, we need to get the file where the name is the filename
105
- and the first parent has an id which does not exist in the files array */
106
- file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
106
+ checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId) {
107
+ let possibleFiles;
108
+ if (parentDirectoryId) {
109
+ possibleFiles = files.filter(f => f.name === filename && f.parents[0] === parentDirectoryId);
110
+ } else {
111
+ possibleFiles = files.filter(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
112
+ }
113
+ if (possibleFiles.length <= 1) return;
114
+ if (GoogleDriveApiClient.throwOnFilesWithSameName) {
115
+ throw new _CloudStorageError.default(`Multiple files with the same name found at path ${path}: ${possibleFiles.map(f => f.id).join(', ')}`, _native.CloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME);
107
116
  } else {
108
- file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
117
+ this.filesWithSameNameSubscribers.forEach(s => s({
118
+ path,
119
+ fileIds: possibleFiles.map(f => f.id)
120
+ }));
121
+ }
122
+ }
123
+ async getFileId(path, scope) {
124
+ let throwIfDirectory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
125
+ try {
126
+ const files = await this.listFiles(scope);
127
+ const {
128
+ directories,
129
+ filename
130
+ } = this.resolvePathToDirectories(path);
131
+ const parentDirectoryId = this.findParentDirectoryId(files, directories);
132
+ let file;
133
+ if (parentDirectoryId === null) {
134
+ this.checkIfMultipleFilesWithSameName(path, files, filename, null);
135
+ /* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
136
+ and the first parent has an id which does not exist in the files array */
137
+ file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
138
+ } else {
139
+ this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
140
+ file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
141
+ }
142
+ if (!file) throw new _CloudStorageError.default(`File not found`, _native.CloudStorageErrorCode.FILE_NOT_FOUND);
143
+ if (file.mimeType === _reactNativeGoogleDriveApiWrapperJs.MimeTypes.FOLDER && throwIfDirectory) {
144
+ throw new _CloudStorageError.default(`Path ${path} is a directory`, _native.CloudStorageErrorCode.PATH_IS_DIRECTORY);
145
+ }
146
+ return file.id;
147
+ } catch (e) {
148
+ var _e$json, _e$json$error;
149
+ if (e instanceof _reactNativeGoogleDriveApiWrapperJs.HttpError && ((_e$json = e.json) === null || _e$json === void 0 ? void 0 : (_e$json$error = _e$json.error) === null || _e$json$error === void 0 ? void 0 : _e$json$error.status) === 'UNAUTHENTICATED') {
150
+ throw new _CloudStorageError.default(`Could not authenticate with Google Drive`, _native.CloudStorageErrorCode.AUTHENTICATION_FAILED, e.json);
151
+ } else {
152
+ if (e instanceof _CloudStorageError.default) throw e;
153
+ throw new _CloudStorageError.default(`Could not get file id for path ${path}`, _native.CloudStorageErrorCode.UNKNOWN, e);
154
+ }
109
155
  }
110
- if (!file) throw new _CloudStorageError.default(`File not found`, _native.CloudStorageErrorCode.FILE_NOT_FOUND);
111
- return file.id;
112
156
  }
113
157
  async fileExists(path, scope) {
114
158
  try {
115
- await this.getFileId(path, scope);
159
+ await this.getFileId(path, scope, false);
116
160
  return true;
117
161
  } catch (e) {
118
162
  if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) return false;else throw e;
@@ -124,7 +168,22 @@ class GoogleDriveApiClient {
124
168
  try {
125
169
  fileId = await this.getFileId(path, scope);
126
170
  } catch (e) {
127
- /* do nothing, simply create the file */
171
+ if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) {
172
+ /* do nothing, simply create the file */
173
+ } else {
174
+ throw e;
175
+ }
176
+ }
177
+ } else {
178
+ try {
179
+ await this.getFileId(path, scope);
180
+ throw new _CloudStorageError.default(`File ${path} already exists`, _native.CloudStorageErrorCode.FILE_ALREADY_EXISTS);
181
+ } catch (e) {
182
+ if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) {
183
+ /* do nothing, simply create the file */
184
+ } else {
185
+ throw e;
186
+ }
128
187
  }
129
188
  }
130
189
  const uploader = GoogleDriveApiClient.drive.files.newMultipartUploader().setData(data, _reactNativeGoogleDriveApiWrapperJs.MimeTypes.TEXT);
@@ -142,6 +201,33 @@ class GoogleDriveApiClient {
142
201
  }
143
202
  await uploader.execute();
144
203
  }
204
+ async createDirectory(path, scope) {
205
+ try {
206
+ await this.getFileId(path, scope);
207
+ throw new _CloudStorageError.default(`File ${path} already exists`, _native.CloudStorageErrorCode.FILE_ALREADY_EXISTS);
208
+ } catch (e) {
209
+ if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) {
210
+ /* do nothing, simply create the file */
211
+ } else if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.PATH_IS_DIRECTORY) {
212
+ throw new _CloudStorageError.default(`Directory ${path} already exists`, _native.CloudStorageErrorCode.FILE_ALREADY_EXISTS);
213
+ } else {
214
+ throw e;
215
+ }
216
+ }
217
+ const uploader = GoogleDriveApiClient.drive.files.newMetadataOnlyUploader();
218
+ const files = await this.listFiles(scope);
219
+ const {
220
+ directories,
221
+ filename
222
+ } = this.resolvePathToDirectories(path);
223
+ const parentDirectoryId = this.findParentDirectoryId(files, directories);
224
+ uploader.setRequestBody({
225
+ name: filename,
226
+ mimeType: _reactNativeGoogleDriveApiWrapperJs.MimeTypes.FOLDER,
227
+ parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
228
+ });
229
+ await uploader.execute();
230
+ }
145
231
  async readFile(path, scope) {
146
232
  const fileId = await this.getFileId(path, scope);
147
233
  const content = await GoogleDriveApiClient.drive.files.getText(fileId);
@@ -152,10 +238,10 @@ class GoogleDriveApiClient {
152
238
  await GoogleDriveApiClient.drive.files.delete(fileId);
153
239
  }
154
240
  async statFile(path, scope) {
155
- const fileId = await this.getFileId(path, scope);
156
- const file = await GoogleDriveApiClient.drive.files.get(fileId, {
241
+ const fileId = await this.getFileId(path, scope, false);
242
+ const file = await (await GoogleDriveApiClient.drive.files.get(fileId, {
157
243
  fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime'
158
- });
244
+ })).json();
159
245
  return {
160
246
  size: file.size ?? 0,
161
247
  birthtimeMs: new Date(file.createdTime).getTime(),
@@ -165,6 +251,5 @@ class GoogleDriveApiClient {
165
251
  };
166
252
  }
167
253
  }
168
- var _default = GoogleDriveApiClient;
169
- exports.default = _default;
254
+ exports.default = GoogleDriveApiClient;
170
255
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeGoogleDriveApiWrapperJs","require","_native","_CloudStorageError","_interopRequireDefault","obj","__esModule","default","GoogleDriveApiClient","drive","GDrive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","CloudStorageError","toString","CloudStorageErrorCode","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","MimeTypes","FOLDER","name","topDirectoryId","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","getFileId","parentDirectoryId","file","f2","FILE_NOT_FOUND","fileExists","e","code","createFile","data","overwrite","fileId","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","undefined","execute","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile","_default","exports"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNativeGoogleDriveApiWrapperJs","require","_native","_CloudStorageError","_interopRequireDefault","obj","__esModule","default","GoogleDriveApiClient","drive","GDrive","throwOnFilesWithSameName","constructor","filesWithSameNameSubscribers","fetchTimeout","Proxy","get","target","prop","allowedFunctions","includes","toString","accessToken","CloudStorageError","CloudStorageErrorCode","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","subscribeToFilesWithSameName","subscriber","push","remove","filter","s","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","f","mimeType","MimeTypes","FOLDER","name","topDirectoryId","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","checkIfMultipleFilesWithSameName","parentDirectoryId","possibleFiles","f2","map","join","MULTIPLE_FILES_SAME_NAME","forEach","fileIds","getFileId","throwIfDirectory","arguments","undefined","file","FILE_NOT_FOUND","PATH_IS_DIRECTORY","e","_e$json","_e$json$error","HttpError","json","error","status","AUTHENTICATION_FAILED","UNKNOWN","fileExists","code","createFile","data","overwrite","fileId","FILE_ALREADY_EXISTS","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","execute","createDirectory","newMetadataOnlyUploader","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile","exports"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":";;;;;;AAAA,IAAAA,mCAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAMA,IAAAE,kBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA2D,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5C,MAAMG,oBAAoB,CAAiC;EACxE,OAAeC,KAAK,GAAW,IAAIC,0CAAM,EAAE;EAC3C,OAAcC,wBAAwB,GAAG,KAAK;EAG9CC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,4BAA4B,GAAG,EAAE;IACtCL,oBAAoB,CAACC,KAAK,CAACK,YAAY,GAAG,IAAI;IAC9C,OAAO,IAAIC,KAAK,CAAC,IAAI,EAAE;MACrB;MACAC,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;QAClE,MAAMC,gBAAgB,GAAG,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;QAC7E,IAAI,OAAOF,MAAM,CAACC,IAAI,CAAC,KAAK,UAAU,IAAI,CAACC,gBAAgB,CAACC,QAAQ,CAACF,IAAI,CAACG,QAAQ,EAAE,CAAC,EAAE;UACrF,IAAI,CAACb,oBAAoB,CAACC,KAAK,CAACa,WAAW,EAAE;YAC3C,MAAM,IAAIC,0BAAiB,CACxB,8DAA6DL,IAAI,CAACG,QAAQ,EAAG,EAAC,EAC/EG,6BAAqB,CAACC,iCAAiC,CACxD;UACH;QACF;QAEA,OAAOR,MAAM,CAACC,IAAI,CAAC;MACrB;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,WAAkBI,WAAWA,CAACA,WAA+B,EAAE;IAC7Dd,oBAAoB,CAACC,KAAK,CAACa,WAAW,GAAGA,WAAW;EACtD;EAEA,WAAkBA,WAAWA,CAAA,EAAuB;IAClD,OAAOd,oBAAoB,CAACC,KAAK,CAACa,WAAW;EAC/C;EAEOI,4BAA4BA,CAACC,UAA4E,EAE9G;IACA,IAAI,CAACd,4BAA4B,CAACe,IAAI,CAACD,UAAU,CAAC;IAElD,OAAO;MACLE,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAChB,4BAA4B,GAAG,IAAI,CAACA,4BAA4B,CAACiB,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKJ,UAAU,CAAC;MACvG;IACF,CAAC;EACH;EAEOK,gBAAgB,GAA2B,MAAAA,CAAA;IAAA,IAAAC,qBAAA;IAAA,OAAY,CAAC,GAAAA,qBAAA,GAACzB,oBAAoB,CAACc,WAAW,cAAAW,qBAAA,eAAhCA,qBAAA,CAAkCC,MAAM;EAAA;EAEhGC,gBAAgBA,CAACC,KAAqC,EAA6B;IACzF,QAAQA,KAAK;MACX,KAAK,WAAW;QACd,OAAO,OAAO;MAChB,KAAK,UAAU;QACb,OAAO,eAAe;IAAC;EAE7B;EAEQC,wBAAwBA,CAACC,IAAY,EAA+C;IAC1F,IAAIA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAED,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAIF,IAAI,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAEH,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAME,WAAW,GAAGJ,IAAI,CAACK,KAAK,CAAC,GAAG,CAAC;IACnC,MAAMC,cAAc,GAAGF,WAAW,CAACG,GAAG,EAAE,IAAI,EAAE;IAC9C,OAAO;MAAEH,WAAW;MAAEI,QAAQ,EAAEF;IAAe,CAAC;EAClD;EAEQG,qBAAqBA,CAACC,KAAwB,EAAEC,aAAuB,EAAiB;IAC9F,MAAMC,sBAAsB,GAAGF,KAAK,CACjClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACC,QAAQ,KAAKC,6CAAS,CAACC,MAAM,CAAC,CAC9CxB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKN,aAAa,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAIO,cAAkC;IACtC,IAAIN,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAChD,IAAIgB,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE;MAC5CsB,cAAc,GAAGN,sBAAsB,CAAC,CAAC,CAAC,CAAEO,EAAE;IAChD,CAAC,MAAM;MACL;AACN;AACA;MACM,KAAK,MAAMC,oBAAoB,IAAIR,sBAAsB,EAAE;QACzD,IAAI,CAACF,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACM,EAAE,KAAKC,oBAAoB,CAAEE,OAAO,CAAE,CAAC,CAAC,IAAIT,CAAC,CAACC,QAAQ,KAAKC,6CAAS,CAACC,MAAM,CAAC,EAAE;UACrGE,cAAc,GAAGE,oBAAoB,CAAED,EAAE;UACzC;QACF;MACF;IACF;IAEA,IAAI,CAACD,cAAc,EAAE;MACnB,MAAM,IAAIjC,0BAAiB,CACxB,0CAAyC0B,aAAa,CAAC,CAAC,CAAE,EAAC,EAC5DzB,6BAAqB,CAACqC,mBAAmB,CAC1C;IACH;;IAEA;IACA,IAAIC,kBAAkB,GAAGN,cAAc;IACvC,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,aAAa,CAACf,MAAM,EAAE6B,CAAC,EAAE,EAAE;MAC7C,MAAMC,gBAAgB,GAAGhB,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACM,EAAE,KAAKK,kBAAkB,CAAC;MACvE,IAAI,CAACE,gBAAgB,EACnB,MAAM,IAAIzC,0BAAiB,CACxB,oCAAmCuC,kBAAmB,EAAC,EACxDtC,6BAAqB,CAACqC,mBAAmB,CAC1C;MACH,MAAMI,aAAa,GAAGjB,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKN,aAAa,CAACc,CAAC,CAAC,IAAIZ,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKE,kBAAkB,CAAC;MAC5G,IAAI,CAACG,aAAa,EAChB,MAAM,IAAI1C,0BAAiB,CACxB,sCAAqC0B,aAAa,CAACc,CAAC,CAAE,EAAC,EACxDvC,6BAAqB,CAACqC,mBAAmB,CAC1C;MACHC,kBAAkB,GAAGG,aAAa,CAACR,EAAE;IACvC;IAEA,OAAOK,kBAAkB;EAC3B;EAEA,MAAcI,SAASA,CAAC9B,KAAqC,EAA8B;IACzF,MAAMY,KAAuC,GAAG,MAAMxC,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACmB,IAAI,CAAC;MAC1FC,MAAM,EAAE,CAAC,IAAI,CAACjC,gBAAgB,CAACC,KAAK,CAAC,CAAC;MACtCiC,MAAM,EAAE;IACV,CAAC,CAAC;IAEF,OAAOrB,KAAK,CAACA,KAAK;EACpB;EAEQsB,gCAAgCA,CACtChC,IAAY,EACZU,KAAwB,EACxBF,QAAgB,EAChByB,iBAAgC,EAChC;IACA,IAAIC,aAAgC;IACpC,IAAID,iBAAiB,EAAE;MACrBC,aAAa,GAAGxB,KAAK,CAAClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAIK,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;IACjG,CAAC,MAAM;MACLC,aAAa,GAAGxB,KAAK,CAAClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAI,CAACE,KAAK,CAACW,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKN,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;IAC1G;IAEA,IAAIY,aAAa,CAACtC,MAAM,IAAI,CAAC,EAAE;IAE/B,IAAI1B,oBAAoB,CAACG,wBAAwB,EAAE;MACjD,MAAM,IAAIY,0BAAiB,CACxB,mDAAkDe,IAAK,KAAIkC,aAAa,CAACE,GAAG,CAAEvB,CAAC,IAAKA,CAAC,CAACM,EAAE,CAAC,CAACkB,IAAI,CAAC,IAAI,CAAE,EAAC,EACvGnD,6BAAqB,CAACoD,wBAAwB,CAC/C;IACH,CAAC,MAAM;MACL,IAAI,CAAC/D,4BAA4B,CAACgE,OAAO,CAAE9C,CAAC,IAAKA,CAAC,CAAC;QAAEO,IAAI;QAAEwC,OAAO,EAAEN,aAAa,CAACE,GAAG,CAAEvB,CAAC,IAAKA,CAAC,CAACM,EAAE;MAAE,CAAC,CAAC,CAAC;IACxG;EACF;EAEA,MAAcsB,SAASA,CACrBzC,IAAY,EACZF,KAAqC,EAEpB;IAAA,IADjB4C,gBAAgB,GAAAC,SAAA,CAAA/C,MAAA,QAAA+C,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IAEvB,IAAI;MACF,MAAMjC,KAAK,GAAG,MAAM,IAAI,CAACkB,SAAS,CAAC9B,KAAK,CAAC;MACzC,MAAM;QAAEM,WAAW;QAAEI;MAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;MACrE,MAAMiC,iBAAiB,GAAG,IAAI,CAACxB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;MACxE,IAAIyC,IAAiC;MACrC,IAAIZ,iBAAiB,KAAK,IAAI,EAAE;QAC9B,IAAI,CAACD,gCAAgC,CAAChC,IAAI,EAAEU,KAAK,EAAEF,QAAQ,EAAE,IAAI,CAAC;QAClE;AACR;QACQqC,IAAI,GAAGnC,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAI,CAACE,KAAK,CAACW,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKN,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;MAC/F,CAAC,MAAM;QACL,IAAI,CAACU,gCAAgC,CAAChC,IAAI,EAAEU,KAAK,EAAEF,QAAQ,EAAEyB,iBAAiB,CAAC;QAC/EY,IAAI,GAAGnC,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAIK,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;MACtF;MACA,IAAI,CAACY,IAAI,EAAE,MAAM,IAAI5D,0BAAiB,CAAE,gBAAe,EAAEC,6BAAqB,CAAC4D,cAAc,CAAC;MAC9F,IAAID,IAAI,CAAC/B,QAAQ,KAAKC,6CAAS,CAACC,MAAM,IAAI0B,gBAAgB,EAAE;QAC1D,MAAM,IAAIzD,0BAAiB,CAAE,QAAOe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6D,iBAAiB,CAAC;MACrG;MACA,OAAOF,IAAI,CAAC1B,EAAE;IAChB,CAAC,CAAC,OAAO6B,CAAU,EAAE;MAAA,IAAAC,OAAA,EAAAC,aAAA;MACnB,IAAIF,CAAC,YAAYG,6CAAS,IAAI,EAAAF,OAAA,GAAAD,CAAC,CAACI,IAAI,cAAAH,OAAA,wBAAAC,aAAA,GAAND,OAAA,CAAQI,KAAK,cAAAH,aAAA,uBAAbA,aAAA,CAAeI,MAAM,MAAK,iBAAiB,EAAE;QACzE,MAAM,IAAIrE,0BAAiB,CACxB,0CAAyC,EAC1CC,6BAAqB,CAACqE,qBAAqB,EAC3CP,CAAC,CAACI,IAAI,CACP;MACH,CAAC,MAAM;QACL,IAAIJ,CAAC,YAAY/D,0BAAiB,EAAE,MAAM+D,CAAC;QAC3C,MAAM,IAAI/D,0BAAiB,CAAE,kCAAiCe,IAAK,EAAC,EAAEd,6BAAqB,CAACsE,OAAO,EAAER,CAAC,CAAC;MACzG;IACF;EACF;EAEA,MAAMS,UAAUA,CAACzD,IAAY,EAAEF,KAAqC,EAAoB;IACtF,IAAI;MACF,MAAM,IAAI,CAAC2C,SAAS,CAACzC,IAAI,EAAEF,KAAK,EAAE,KAAK,CAAC;MACxC,OAAO,IAAI;IACb,CAAC,CAAC,OAAOkD,CAAM,EAAE;MACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE,OAAO,KAAK,CAAC,KAC/F,MAAME,CAAC;IACd;EACF;EAEA,MAAMW,UAAUA,CACd3D,IAAY,EACZ4D,IAAY,EACZ9D,KAAqC,EACrC+D,SAAkB,EACH;IACf,IAAIC,MAA0B;IAC9B,IAAID,SAAS,EAAE;MACb,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;MAC5C,CAAC,CAAC,OAAOkD,CAAM,EAAE;QACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE;UACrF;QAAA,CACD,MAAM;UACL,MAAME,CAAC;QACT;MACF;IACF,CAAC,MAAM;MACL,IAAI;QACF,MAAM,IAAI,CAACP,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;QACjC,MAAM,IAAIb,0BAAiB,CAAE,QAAOe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6E,mBAAmB,CAAC;MACvG,CAAC,CAAC,OAAOf,CAAM,EAAE;QACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE;UACrF;QAAA,CACD,MAAM;UACL,MAAME,CAAC;QACT;MACF;IACF;IAEA,MAAMgB,QAAQ,GAAG9F,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACuD,oBAAoB,EAAE,CAACC,OAAO,CAACN,IAAI,EAAE7C,6CAAS,CAACoD,IAAI,CAAC;IACtG,IAAIL,MAAM,EAAEE,QAAQ,CAACI,mBAAmB,CAACN,MAAM,CAAC,CAAC,KAC5C;MACH,MAAMpD,KAAK,GAAG,MAAM,IAAI,CAACkB,SAAS,CAAC9B,KAAK,CAAC;MACzC,MAAM;QAAEM,WAAW;QAAEI;MAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;MACrE,MAAMiC,iBAAiB,GAAG,IAAI,CAACxB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;MACxE4D,QAAQ,CAACK,cAAc,CAAC;QACtBpD,IAAI,EAAET,QAAQ;QACdc,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBnC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9B8C;MACN,CAAC,CAAC;IACJ;IACA,MAAMoB,QAAQ,CAACM,OAAO,EAAE;EAC1B;EAEA,MAAMC,eAAeA,CAACvE,IAAY,EAAEF,KAAqC,EAAiB;IACxF,IAAI;MACF,MAAM,IAAI,CAAC2C,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;MACjC,MAAM,IAAIb,0BAAiB,CAAE,QAAOe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6E,mBAAmB,CAAC;IACvG,CAAC,CAAC,OAAOf,CAAM,EAAE;MACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE;QACrF;MAAA,CACD,MAAM,IAAIE,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC6D,iBAAiB,EAAE;QAC/F,MAAM,IAAI9D,0BAAiB,CAAE,aAAYe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6E,mBAAmB,CAAC;MAC5G,CAAC,MAAM;QACL,MAAMf,CAAC;MACT;IACF;IAEA,MAAMgB,QAAQ,GAAG9F,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAAC8D,uBAAuB,EAAE;IAC3E,MAAM9D,KAAK,GAAG,MAAM,IAAI,CAACkB,SAAS,CAAC9B,KAAK,CAAC;IACzC,MAAM;MAAEM,WAAW;MAAEI;IAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;IACrE,MAAMiC,iBAAiB,GAAG,IAAI,CAACxB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;IACxE4D,QAAQ,CAACK,cAAc,CAAC;MACtBpD,IAAI,EAAET,QAAQ;MACdM,QAAQ,EAAEC,6CAAS,CAACC,MAAM;MAC1BM,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBnC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9B8C;IACN,CAAC,CAAC;IACF,MAAMoB,QAAQ,CAACM,OAAO,EAAE;EAC1B;EAEA,MAAMG,QAAQA,CAACzE,IAAY,EAAEF,KAAqC,EAAmB;IACnF,MAAMgE,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAM4E,OAAO,GAAG,MAAMxG,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACiE,OAAO,CAACb,MAAM,CAAC;IACtE,OAAOY,OAAO;EAChB;EAEA,MAAME,UAAUA,CAAC5E,IAAY,EAAEF,KAAqC,EAAiB;IACnF,MAAMgE,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAM5B,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACmE,MAAM,CAACf,MAAM,CAAC;EACvD;EAEA,MAAMgB,QAAQA,CAAC9E,IAAY,EAAEF,KAAqC,EAA8C;IAC9G,MAAMgE,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,EAAE,KAAK,CAAC;IACvD,MAAM+C,IAA6B,GAAG,MAAM,CAC1C,MAAM3E,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAAChC,GAAG,CAACoF,MAAM,EAAG;MAClD/B,MAAM,EAAE;IACV,CAAC,CAAC,EACFqB,IAAI,EAAE;IAER,OAAO;MACL2B,IAAI,EAAElC,IAAI,CAACkC,IAAI,IAAI,CAAC;MACpBC,WAAW,EAAE,IAAIC,IAAI,CAACpC,IAAI,CAACqC,WAAW,CAAE,CAACC,OAAO,EAAE;MAClDC,OAAO,EAAE,IAAIH,IAAI,CAACpC,IAAI,CAACwC,YAAY,CAAE,CAACF,OAAO,EAAE;MAC/CG,WAAW,EAAEzC,IAAI,CAAC/B,QAAQ,KAAKC,6CAAS,CAACC,MAAM;MAC/CuE,MAAM,EAAE1C,IAAI,CAAC/B,QAAQ,KAAKC,6CAAS,CAACC;IACtC,CAAC;EACH;AACF;AAACwE,OAAA,CAAAvH,OAAA,GAAAC,oBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["_RNCloudStorage","_interopRequireDefault","require","_native","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useCloudFile","_useIsCloudAvailable","_CloudStorageError","obj","__esModule","default","_default","RNCloudStorage"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAf,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,oBAAA,GAAAhB,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAY,oBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,oBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,oBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,kBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAA0D,SAAAD,uBAAAmB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAI3CC,uBAAc;AAAAX,OAAA,CAAAS,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"names":["_RNCloudStorage","_interopRequireDefault","require","_native","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useCloudFile","_useIsCloudAvailable","_CloudStorageError","obj","__esModule","default","_default","RNCloudStorage"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAf,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,oBAAA,GAAAhB,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAY,oBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,oBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,oBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,kBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAA0D,SAAAD,uBAAAmB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAG3CC,uBAAc;AAAAX,OAAA,CAAAS,OAAA,GAAAC,QAAA"}
@@ -6,8 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.CloudStorageErrorCode = void 0;
7
7
  let CloudStorageErrorCode = /*#__PURE__*/function (CloudStorageErrorCode) {
8
8
  CloudStorageErrorCode["FILE_NOT_FOUND"] = "ERR_FILE_NOT_FOUND";
9
+ CloudStorageErrorCode["PATH_IS_DIRECTORY"] = "ERR_PATH_IS_DIRECTORY";
9
10
  CloudStorageErrorCode["DIRECTORY_NOT_FOUND"] = "ERR_NO_DIRECTORY_FOUND";
10
11
  CloudStorageErrorCode["FILE_ALREADY_EXISTS"] = "ERR_FILE_EXISTS";
12
+ CloudStorageErrorCode["MULTIPLE_FILES_SAME_NAME"] = "ERR_MULTIPLE_FILES_SAME_NAME";
13
+ CloudStorageErrorCode["AUTHENTICATION_FAILED"] = "ERR_AUTHENTICATION_FAILED";
11
14
  CloudStorageErrorCode["WRITE_ERROR"] = "ERR_WRITE_ERROR";
12
15
  CloudStorageErrorCode["READ_ERROR"] = "ERR_READ_ERROR";
13
16
  CloudStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
@@ -1 +1 @@
1
- {"version":3,"names":["CloudStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAAAC,OAAA,CAAAD,qBAAA,GAAAA,qBAAA"}
1
+ {"version":3,"names":["CloudStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAAAC,OAAA,CAAAD,qBAAA,GAAAA,qBAAA"}
@@ -1,9 +1,19 @@
1
1
  import createRNCloudStorage from './createRNCloudStorage';
2
2
  import GoogleDriveApiClient from './google-drive';
3
+ import { Platform } from 'react-native';
3
4
  const nativeInstance = createRNCloudStorage();
4
5
  const RNCloudStorage = {
5
6
  getGoogleDriveAccessToken: () => GoogleDriveApiClient.accessToken,
6
7
  setGoogleDriveAccessToken: accessToken => GoogleDriveApiClient.accessToken = accessToken,
8
+ setThrowOnFilesWithSameName: enable => GoogleDriveApiClient.throwOnFilesWithSameName = enable,
9
+ /* eslint-disable @typescript-eslint/no-unused-vars */
10
+ subscribeToFilesWithSameName: Platform.OS === 'ios' ?
11
+ // @ts-expect-error - subscriber is undefined; just a mock
12
+ subscriber => ({
13
+ remove: () => {}
14
+ }) : nativeInstance.subscribeToFilesWithSameName.bind(nativeInstance),
15
+ /* eslint-enable @typescript-eslint/no-unused-vars */
16
+
7
17
  /**
8
18
  * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
9
19
  * unavailable right after app launch or if the user is not logged in.
@@ -31,6 +41,15 @@ const RNCloudStorage = {
31
41
  writeFile: (path, data, scope) => {
32
42
  return nativeInstance.createFile(path, data, scope, true);
33
43
  },
44
+ /**
45
+ * Creates a new directory at the given path.
46
+ * @param path The directory to create.
47
+ * @param scope The directory scope the path is in.
48
+ * @returns A promise that resolves when the directory has been created.
49
+ */
50
+ mkdir: (path, scope) => {
51
+ return nativeInstance.createDirectory(path, scope);
52
+ },
34
53
  /**
35
54
  * Reads the contents of the file at the given path.
36
55
  * @param path The file to read.
@@ -1 +1 @@
1
- {"version":3,"names":["createRNCloudStorage","GoogleDriveApiClient","nativeInstance","RNCloudStorage","getGoogleDriveAccessToken","accessToken","setGoogleDriveAccessToken","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,oBAAoB,MAAM,gBAAgB;AAGjD,MAAMC,cAAc,GAAGF,oBAAoB,EAAE;AAC7C,MAAMG,cAAc,GAAG;EACrBC,yBAAyB,EAAEA,CAAA,KAAMH,oBAAoB,CAACI,WAAW;EACjEC,yBAAyB,EAAGD,WAAmB,IAAMJ,oBAAoB,CAACI,WAAW,GAAGA,WAAY;EAEpG;AACF;AACA;AACA;AACA;EACEE,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOL,cAAc,CAACK,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAwB,KAAuB;IACpE,OAAOR,cAAc,CAACS,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAwB,KAAoB;IAClF,OAAOR,cAAc,CAACY,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQ,EAAEA,CAACN,IAAY,EAAEC,KAAwB,KAAsB;IACrE,OAAOR,cAAc,CAACa,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAwB,KAAoB;IACjE,OAAOR,cAAc,CAACe,UAAU,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,IAAI,EAAE,MAAAA,CAAOT,IAAY,EAAEC,KAAwB,KAAoC;IACrF,MAAMS,MAAM,GAAG,MAAMjB,cAAc,CAACkB,QAAQ,CAACX,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGS,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAED,eAAexB,cAAc"}
1
+ {"version":3,"names":["createRNCloudStorage","GoogleDriveApiClient","Platform","nativeInstance","RNCloudStorage","getGoogleDriveAccessToken","accessToken","setGoogleDriveAccessToken","setThrowOnFilesWithSameName","enable","throwOnFilesWithSameName","subscribeToFilesWithSameName","OS","subscriber","remove","bind","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","mkdir","createDirectory","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,oBAAoB,MAAM,gBAAgB;AAEjD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,MAAMC,cAAc,GAAGH,oBAAoB,EAAE;AAE7C,MAAMI,cAAc,GAAG;EACrBC,yBAAyB,EAAEA,CAAA,KAAMJ,oBAAoB,CAACK,WAAW;EACjEC,yBAAyB,EAAGD,WAAmB,IAAML,oBAAoB,CAACK,WAAW,GAAGA,WAAY;EACpGE,2BAA2B,EAAGC,MAAe,IAAMR,oBAAoB,CAACS,wBAAwB,GAAGD,MAAO;EAC1G;EACAE,4BAA4B,EAC1BT,QAAQ,CAACU,EAAE,KAAK,KAAK;EACjB;EACCC,UAA4E,KAAM;IAAEC,MAAM,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAC,CAAC,GACvGX,cAAc,CAA0BQ,4BAA4B,CAACI,IAAI,CAACZ,cAAc,CAAC;EAChG;;EAEA;AACF;AACA;AACA;AACA;EACEa,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOb,cAAc,CAACa,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAwB,KAAuB;IACpE,OAAOhB,cAAc,CAACiB,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAwB,KAAoB;IAClF,OAAOhB,cAAc,CAACoB,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,KAAK,EAAEA,CAACN,IAAY,EAAEC,KAAwB,KAAoB;IAChE,OAAOhB,cAAc,CAACsB,eAAe,CAACP,IAAI,EAAEC,KAAK,CAAC;EACpD,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEO,QAAQ,EAAEA,CAACR,IAAY,EAAEC,KAAwB,KAAsB;IACrE,OAAOhB,cAAc,CAACuB,QAAQ,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,MAAM,EAAEA,CAACT,IAAY,EAAEC,KAAwB,KAAoB;IACjE,OAAOhB,cAAc,CAACyB,UAAU,CAACV,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEU,IAAI,EAAE,MAAAA,CAAOX,IAAY,EAAEC,KAAwB,KAAoC;IACrF,MAAMW,MAAM,GAAG,MAAM3B,cAAc,CAAC4B,QAAQ,CAACb,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGW,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAED,eAAelC,cAAc"}
@@ -1,14 +1,17 @@
1
- import { GDrive, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
1
+ import { GDrive, HttpError, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
2
2
  import { CloudStorageErrorCode } from '../types/native';
3
3
  import CloudStorageError from '../utils/CloudStorageError';
4
- class GoogleDriveApiClient {
4
+ export default class GoogleDriveApiClient {
5
5
  static drive = new GDrive();
6
+ static throwOnFilesWithSameName = false;
6
7
  constructor() {
8
+ this.filesWithSameNameSubscribers = [];
7
9
  GoogleDriveApiClient.drive.fetchTimeout = 3000;
8
10
  return new Proxy(this, {
9
11
  // before calling any function, check if the access token is set
10
12
  get(target, prop) {
11
- if (typeof target[prop] === 'function' && prop !== 'isCloudAvailable') {
13
+ const allowedFunctions = ['isCloudAvailable', 'subscribeToFilesWithSameName'];
14
+ if (typeof target[prop] === 'function' && !allowedFunctions.includes(prop.toString())) {
12
15
  if (!GoogleDriveApiClient.drive.accessToken) {
13
16
  throw new CloudStorageError(`Google Drive access token is not set, cannot call function ${prop.toString()}`, CloudStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
14
17
  }
@@ -25,6 +28,14 @@ class GoogleDriveApiClient {
25
28
  static get accessToken() {
26
29
  return GoogleDriveApiClient.drive.accessToken;
27
30
  }
31
+ subscribeToFilesWithSameName(subscriber) {
32
+ this.filesWithSameNameSubscribers.push(subscriber);
33
+ return {
34
+ remove: () => {
35
+ this.filesWithSameNameSubscribers = this.filesWithSameNameSubscribers.filter(s => s !== subscriber);
36
+ }
37
+ };
38
+ }
28
39
  isCloudAvailable = async () => {
29
40
  var _GoogleDriveApiClient;
30
41
  return !!((_GoogleDriveApiClient = GoogleDriveApiClient.accessToken) !== null && _GoogleDriveApiClient !== void 0 && _GoogleDriveApiClient.length);
@@ -85,27 +96,60 @@ class GoogleDriveApiClient {
85
96
  });
86
97
  return files.files;
87
98
  }
88
- async getFileId(path, scope) {
89
- const files = await this.listFiles(scope);
90
- const {
91
- directories,
92
- filename
93
- } = this.resolvePathToDirectories(path);
94
- const parentDirectoryId = this.findParentDirectoryId(files, directories);
95
- let file;
96
- if (parentDirectoryId === null) {
97
- /* when the file is supposes to be in the root directory, we need to get the file where the name is the filename
98
- and the first parent has an id which does not exist in the files array */
99
- file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
99
+ checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId) {
100
+ let possibleFiles;
101
+ if (parentDirectoryId) {
102
+ possibleFiles = files.filter(f => f.name === filename && f.parents[0] === parentDirectoryId);
103
+ } else {
104
+ possibleFiles = files.filter(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
105
+ }
106
+ if (possibleFiles.length <= 1) return;
107
+ if (GoogleDriveApiClient.throwOnFilesWithSameName) {
108
+ throw new CloudStorageError(`Multiple files with the same name found at path ${path}: ${possibleFiles.map(f => f.id).join(', ')}`, CloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME);
100
109
  } else {
101
- file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
110
+ this.filesWithSameNameSubscribers.forEach(s => s({
111
+ path,
112
+ fileIds: possibleFiles.map(f => f.id)
113
+ }));
114
+ }
115
+ }
116
+ async getFileId(path, scope) {
117
+ let throwIfDirectory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
118
+ try {
119
+ const files = await this.listFiles(scope);
120
+ const {
121
+ directories,
122
+ filename
123
+ } = this.resolvePathToDirectories(path);
124
+ const parentDirectoryId = this.findParentDirectoryId(files, directories);
125
+ let file;
126
+ if (parentDirectoryId === null) {
127
+ this.checkIfMultipleFilesWithSameName(path, files, filename, null);
128
+ /* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
129
+ and the first parent has an id which does not exist in the files array */
130
+ file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
131
+ } else {
132
+ this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
133
+ file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
134
+ }
135
+ if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
136
+ if (file.mimeType === MimeTypes.FOLDER && throwIfDirectory) {
137
+ throw new CloudStorageError(`Path ${path} is a directory`, CloudStorageErrorCode.PATH_IS_DIRECTORY);
138
+ }
139
+ return file.id;
140
+ } catch (e) {
141
+ var _e$json, _e$json$error;
142
+ if (e instanceof HttpError && ((_e$json = e.json) === null || _e$json === void 0 ? void 0 : (_e$json$error = _e$json.error) === null || _e$json$error === void 0 ? void 0 : _e$json$error.status) === 'UNAUTHENTICATED') {
143
+ throw new CloudStorageError(`Could not authenticate with Google Drive`, CloudStorageErrorCode.AUTHENTICATION_FAILED, e.json);
144
+ } else {
145
+ if (e instanceof CloudStorageError) throw e;
146
+ throw new CloudStorageError(`Could not get file id for path ${path}`, CloudStorageErrorCode.UNKNOWN, e);
147
+ }
102
148
  }
103
- if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
104
- return file.id;
105
149
  }
106
150
  async fileExists(path, scope) {
107
151
  try {
108
- await this.getFileId(path, scope);
152
+ await this.getFileId(path, scope, false);
109
153
  return true;
110
154
  } catch (e) {
111
155
  if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) return false;else throw e;
@@ -117,7 +161,22 @@ class GoogleDriveApiClient {
117
161
  try {
118
162
  fileId = await this.getFileId(path, scope);
119
163
  } catch (e) {
120
- /* do nothing, simply create the file */
164
+ if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
165
+ /* do nothing, simply create the file */
166
+ } else {
167
+ throw e;
168
+ }
169
+ }
170
+ } else {
171
+ try {
172
+ await this.getFileId(path, scope);
173
+ throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
174
+ } catch (e) {
175
+ if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
176
+ /* do nothing, simply create the file */
177
+ } else {
178
+ throw e;
179
+ }
121
180
  }
122
181
  }
123
182
  const uploader = GoogleDriveApiClient.drive.files.newMultipartUploader().setData(data, MimeTypes.TEXT);
@@ -135,6 +194,33 @@ class GoogleDriveApiClient {
135
194
  }
136
195
  await uploader.execute();
137
196
  }
197
+ async createDirectory(path, scope) {
198
+ try {
199
+ await this.getFileId(path, scope);
200
+ throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
201
+ } catch (e) {
202
+ if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
203
+ /* do nothing, simply create the file */
204
+ } else if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.PATH_IS_DIRECTORY) {
205
+ throw new CloudStorageError(`Directory ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
206
+ } else {
207
+ throw e;
208
+ }
209
+ }
210
+ const uploader = GoogleDriveApiClient.drive.files.newMetadataOnlyUploader();
211
+ const files = await this.listFiles(scope);
212
+ const {
213
+ directories,
214
+ filename
215
+ } = this.resolvePathToDirectories(path);
216
+ const parentDirectoryId = this.findParentDirectoryId(files, directories);
217
+ uploader.setRequestBody({
218
+ name: filename,
219
+ mimeType: MimeTypes.FOLDER,
220
+ parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
221
+ });
222
+ await uploader.execute();
223
+ }
138
224
  async readFile(path, scope) {
139
225
  const fileId = await this.getFileId(path, scope);
140
226
  const content = await GoogleDriveApiClient.drive.files.getText(fileId);
@@ -145,10 +231,10 @@ class GoogleDriveApiClient {
145
231
  await GoogleDriveApiClient.drive.files.delete(fileId);
146
232
  }
147
233
  async statFile(path, scope) {
148
- const fileId = await this.getFileId(path, scope);
149
- const file = await GoogleDriveApiClient.drive.files.get(fileId, {
234
+ const fileId = await this.getFileId(path, scope, false);
235
+ const file = await (await GoogleDriveApiClient.drive.files.get(fileId, {
150
236
  fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime'
151
- });
237
+ })).json();
152
238
  return {
153
239
  size: file.size ?? 0,
154
240
  birthtimeMs: new Date(file.createdTime).getTime(),
@@ -158,5 +244,4 @@ class GoogleDriveApiClient {
158
244
  };
159
245
  }
160
246
  }
161
- export default GoogleDriveApiClient;
162
247
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GDrive","MimeTypes","CloudStorageErrorCode","CloudStorageError","GoogleDriveApiClient","drive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","toString","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","FOLDER","name","topDirectoryId","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","getFileId","parentDirectoryId","file","f2","FILE_NOT_FOUND","fileExists","e","code","createFile","data","overwrite","fileId","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","undefined","execute","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"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"}
1
+ {"version":3,"names":["GDrive","HttpError","MimeTypes","CloudStorageErrorCode","CloudStorageError","GoogleDriveApiClient","drive","throwOnFilesWithSameName","constructor","filesWithSameNameSubscribers","fetchTimeout","Proxy","get","target","prop","allowedFunctions","includes","toString","accessToken","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","subscribeToFilesWithSameName","subscriber","push","remove","filter","s","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","f","mimeType","FOLDER","name","topDirectoryId","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","checkIfMultipleFilesWithSameName","parentDirectoryId","possibleFiles","f2","map","join","MULTIPLE_FILES_SAME_NAME","forEach","fileIds","getFileId","throwIfDirectory","arguments","undefined","file","FILE_NOT_FOUND","PATH_IS_DIRECTORY","e","_e$json","_e$json$error","json","error","status","AUTHENTICATION_FAILED","UNKNOWN","fileExists","code","createFile","data","overwrite","fileId","FILE_ALREADY_EXISTS","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","execute","createDirectory","newMetadataOnlyUploader","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"AAAA,SAASA,MAAM,EAAEC,SAAS,EAAEC,SAAS,QAAQ,0CAA0C;AAEvF,SACEC,qBAAqB,QAGhB,iBAAiB;AAExB,OAAOC,iBAAiB,MAAM,4BAA4B;AAE1D,eAAe,MAAMC,oBAAoB,CAAiC;EACxE,OAAeC,KAAK,GAAW,IAAIN,MAAM,EAAE;EAC3C,OAAcO,wBAAwB,GAAG,KAAK;EAG9CC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,4BAA4B,GAAG,EAAE;IACtCJ,oBAAoB,CAACC,KAAK,CAACI,YAAY,GAAG,IAAI;IAC9C,OAAO,IAAIC,KAAK,CAAC,IAAI,EAAE;MACrB;MACAC,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;QAClE,MAAMC,gBAAgB,GAAG,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;QAC7E,IAAI,OAAOF,MAAM,CAACC,IAAI,CAAC,KAAK,UAAU,IAAI,CAACC,gBAAgB,CAACC,QAAQ,CAACF,IAAI,CAACG,QAAQ,EAAE,CAAC,EAAE;UACrF,IAAI,CAACZ,oBAAoB,CAACC,KAAK,CAACY,WAAW,EAAE;YAC3C,MAAM,IAAId,iBAAiB,CACxB,8DAA6DU,IAAI,CAACG,QAAQ,EAAG,EAAC,EAC/Ed,qBAAqB,CAACgB,iCAAiC,CACxD;UACH;QACF;QAEA,OAAON,MAAM,CAACC,IAAI,CAAC;MACrB;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,WAAkBI,WAAWA,CAACA,WAA+B,EAAE;IAC7Db,oBAAoB,CAACC,KAAK,CAACY,WAAW,GAAGA,WAAW;EACtD;EAEA,WAAkBA,WAAWA,CAAA,EAAuB;IAClD,OAAOb,oBAAoB,CAACC,KAAK,CAACY,WAAW;EAC/C;EAEOE,4BAA4BA,CAACC,UAA4E,EAE9G;IACA,IAAI,CAACZ,4BAA4B,CAACa,IAAI,CAACD,UAAU,CAAC;IAElD,OAAO;MACLE,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAACd,4BAA4B,GAAG,IAAI,CAACA,4BAA4B,CAACe,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKJ,UAAU,CAAC;MACvG;IACF,CAAC;EACH;EAEOK,gBAAgB,GAA2B,MAAAA,CAAA;IAAA,IAAAC,qBAAA;IAAA,OAAY,CAAC,GAAAA,qBAAA,GAACtB,oBAAoB,CAACa,WAAW,cAAAS,qBAAA,eAAhCA,qBAAA,CAAkCC,MAAM;EAAA;EAEhGC,gBAAgBA,CAACC,KAAqC,EAA6B;IACzF,QAAQA,KAAK;MACX,KAAK,WAAW;QACd,OAAO,OAAO;MAChB,KAAK,UAAU;QACb,OAAO,eAAe;IAAC;EAE7B;EAEQC,wBAAwBA,CAACC,IAAY,EAA+C;IAC1F,IAAIA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAED,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAIF,IAAI,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAEH,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAME,WAAW,GAAGJ,IAAI,CAACK,KAAK,CAAC,GAAG,CAAC;IACnC,MAAMC,cAAc,GAAGF,WAAW,CAACG,GAAG,EAAE,IAAI,EAAE;IAC9C,OAAO;MAAEH,WAAW;MAAEI,QAAQ,EAAEF;IAAe,CAAC;EAClD;EAEQG,qBAAqBA,CAACC,KAAwB,EAAEC,aAAuB,EAAiB;IAC9F,MAAMC,sBAAsB,GAAGF,KAAK,CACjClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACC,QAAQ,KAAK5C,SAAS,CAAC6C,MAAM,CAAC,CAC9CvB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKL,aAAa,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAIM,cAAkC;IACtC,IAAIL,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAChD,IAAIgB,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE;MAC5CqB,cAAc,GAAGL,sBAAsB,CAAC,CAAC,CAAC,CAAEM,EAAE;IAChD,CAAC,MAAM;MACL;AACN;AACA;MACM,KAAK,MAAMC,oBAAoB,IAAIP,sBAAsB,EAAE;QACzD,IAAI,CAACF,KAAK,CAACU,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACK,EAAE,KAAKC,oBAAoB,CAAEE,OAAO,CAAE,CAAC,CAAC,IAAIR,CAAC,CAACC,QAAQ,KAAK5C,SAAS,CAAC6C,MAAM,CAAC,EAAE;UACrGE,cAAc,GAAGE,oBAAoB,CAAED,EAAE;UACzC;QACF;MACF;IACF;IAEA,IAAI,CAACD,cAAc,EAAE;MACnB,MAAM,IAAI7C,iBAAiB,CACxB,0CAAyCuC,aAAa,CAAC,CAAC,CAAE,EAAC,EAC5DxC,qBAAqB,CAACmD,mBAAmB,CAC1C;IACH;;IAEA;IACA,IAAIC,kBAAkB,GAAGN,cAAc;IACvC,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,aAAa,CAACf,MAAM,EAAE4B,CAAC,EAAE,EAAE;MAC7C,MAAMC,gBAAgB,GAAGf,KAAK,CAACU,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACK,EAAE,KAAKK,kBAAkB,CAAC;MACvE,IAAI,CAACE,gBAAgB,EACnB,MAAM,IAAIrD,iBAAiB,CACxB,oCAAmCmD,kBAAmB,EAAC,EACxDpD,qBAAqB,CAACmD,mBAAmB,CAC1C;MACH,MAAMI,aAAa,GAAGhB,KAAK,CAACU,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKL,aAAa,CAACa,CAAC,CAAC,IAAIX,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,KAAKE,kBAAkB,CAAC;MAC5G,IAAI,CAACG,aAAa,EAChB,MAAM,IAAItD,iBAAiB,CACxB,sCAAqCuC,aAAa,CAACa,CAAC,CAAE,EAAC,EACxDrD,qBAAqB,CAACmD,mBAAmB,CAC1C;MACHC,kBAAkB,GAAGG,aAAa,CAACR,EAAE;IACvC;IAEA,OAAOK,kBAAkB;EAC3B;EAEA,MAAcI,SAASA,CAAC7B,KAAqC,EAA8B;IACzF,MAAMY,KAAuC,GAAG,MAAMrC,oBAAoB,CAACC,KAAK,CAACoC,KAAK,CAACkB,IAAI,CAAC;MAC1FC,MAAM,EAAE,CAAC,IAAI,CAAChC,gBAAgB,CAACC,KAAK,CAAC,CAAC;MACtCgC,MAAM,EAAE;IACV,CAAC,CAAC;IAEF,OAAOpB,KAAK,CAACA,KAAK;EACpB;EAEQqB,gCAAgCA,CACtC/B,IAAY,EACZU,KAAwB,EACxBF,QAAgB,EAChBwB,iBAAgC,EAChC;IACA,IAAIC,aAAgC;IACpC,IAAID,iBAAiB,EAAE;MACrBC,aAAa,GAAGvB,KAAK,CAAClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKR,QAAQ,IAAIK,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;IACjG,CAAC,MAAM;MACLC,aAAa,GAAGvB,KAAK,CAAClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKR,QAAQ,IAAI,CAACE,KAAK,CAACU,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKL,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;IAC1G;IAEA,IAAIY,aAAa,CAACrC,MAAM,IAAI,CAAC,EAAE;IAE/B,IAAIvB,oBAAoB,CAACE,wBAAwB,EAAE;MACjD,MAAM,IAAIH,iBAAiB,CACxB,mDAAkD4B,IAAK,KAAIiC,aAAa,CAACE,GAAG,CAAEtB,CAAC,IAAKA,CAAC,CAACK,EAAE,CAAC,CAACkB,IAAI,CAAC,IAAI,CAAE,EAAC,EACvGjE,qBAAqB,CAACkE,wBAAwB,CAC/C;IACH,CAAC,MAAM;MACL,IAAI,CAAC5D,4BAA4B,CAAC6D,OAAO,CAAE7C,CAAC,IAAKA,CAAC,CAAC;QAAEO,IAAI;QAAEuC,OAAO,EAAEN,aAAa,CAACE,GAAG,CAAEtB,CAAC,IAAKA,CAAC,CAACK,EAAE;MAAE,CAAC,CAAC,CAAC;IACxG;EACF;EAEA,MAAcsB,SAASA,CACrBxC,IAAY,EACZF,KAAqC,EAEpB;IAAA,IADjB2C,gBAAgB,GAAAC,SAAA,CAAA9C,MAAA,QAAA8C,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IAEvB,IAAI;MACF,MAAMhC,KAAK,GAAG,MAAM,IAAI,CAACiB,SAAS,CAAC7B,KAAK,CAAC;MACzC,MAAM;QAAEM,WAAW;QAAEI;MAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;MACrE,MAAMgC,iBAAiB,GAAG,IAAI,CAACvB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;MACxE,IAAIwC,IAAiC;MACrC,IAAIZ,iBAAiB,KAAK,IAAI,EAAE;QAC9B,IAAI,CAACD,gCAAgC,CAAC/B,IAAI,EAAEU,KAAK,EAAEF,QAAQ,EAAE,IAAI,CAAC;QAClE;AACR;QACQoC,IAAI,GAAGlC,KAAK,CAACU,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKR,QAAQ,IAAI,CAACE,KAAK,CAACU,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKL,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;MAC/F,CAAC,MAAM;QACL,IAAI,CAACU,gCAAgC,CAAC/B,IAAI,EAAEU,KAAK,EAAEF,QAAQ,EAAEwB,iBAAiB,CAAC;QAC/EY,IAAI,GAAGlC,KAAK,CAACU,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKR,QAAQ,IAAIK,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;MACtF;MACA,IAAI,CAACY,IAAI,EAAE,MAAM,IAAIxE,iBAAiB,CAAE,gBAAe,EAAED,qBAAqB,CAAC0E,cAAc,CAAC;MAC9F,IAAID,IAAI,CAAC9B,QAAQ,KAAK5C,SAAS,CAAC6C,MAAM,IAAI0B,gBAAgB,EAAE;QAC1D,MAAM,IAAIrE,iBAAiB,CAAE,QAAO4B,IAAK,iBAAgB,EAAE7B,qBAAqB,CAAC2E,iBAAiB,CAAC;MACrG;MACA,OAAOF,IAAI,CAAC1B,EAAE;IAChB,CAAC,CAAC,OAAO6B,CAAU,EAAE;MAAA,IAAAC,OAAA,EAAAC,aAAA;MACnB,IAAIF,CAAC,YAAY9E,SAAS,IAAI,EAAA+E,OAAA,GAAAD,CAAC,CAACG,IAAI,cAAAF,OAAA,wBAAAC,aAAA,GAAND,OAAA,CAAQG,KAAK,cAAAF,aAAA,uBAAbA,aAAA,CAAeG,MAAM,MAAK,iBAAiB,EAAE;QACzE,MAAM,IAAIhF,iBAAiB,CACxB,0CAAyC,EAC1CD,qBAAqB,CAACkF,qBAAqB,EAC3CN,CAAC,CAACG,IAAI,CACP;MACH,CAAC,MAAM;QACL,IAAIH,CAAC,YAAY3E,iBAAiB,EAAE,MAAM2E,CAAC;QAC3C,MAAM,IAAI3E,iBAAiB,CAAE,kCAAiC4B,IAAK,EAAC,EAAE7B,qBAAqB,CAACmF,OAAO,EAAEP,CAAC,CAAC;MACzG;IACF;EACF;EAEA,MAAMQ,UAAUA,CAACvD,IAAY,EAAEF,KAAqC,EAAoB;IACtF,IAAI;MACF,MAAM,IAAI,CAAC0C,SAAS,CAACxC,IAAI,EAAEF,KAAK,EAAE,KAAK,CAAC;MACxC,OAAO,IAAI;IACb,CAAC,CAAC,OAAOiD,CAAM,EAAE;MACf,IAAIA,CAAC,YAAY3E,iBAAiB,IAAI2E,CAAC,CAACS,IAAI,KAAKrF,qBAAqB,CAAC0E,cAAc,EAAE,OAAO,KAAK,CAAC,KAC/F,MAAME,CAAC;IACd;EACF;EAEA,MAAMU,UAAUA,CACdzD,IAAY,EACZ0D,IAAY,EACZ5D,KAAqC,EACrC6D,SAAkB,EACH;IACf,IAAIC,MAA0B;IAC9B,IAAID,SAAS,EAAE;MACb,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACpB,SAAS,CAACxC,IAAI,EAAEF,KAAK,CAAC;MAC5C,CAAC,CAAC,OAAOiD,CAAM,EAAE;QACf,IAAIA,CAAC,YAAY3E,iBAAiB,IAAI2E,CAAC,CAACS,IAAI,KAAKrF,qBAAqB,CAAC0E,cAAc,EAAE;UACrF;QAAA,CACD,MAAM;UACL,MAAME,CAAC;QACT;MACF;IACF,CAAC,MAAM;MACL,IAAI;QACF,MAAM,IAAI,CAACP,SAAS,CAACxC,IAAI,EAAEF,KAAK,CAAC;QACjC,MAAM,IAAI1B,iBAAiB,CAAE,QAAO4B,IAAK,iBAAgB,EAAE7B,qBAAqB,CAAC0F,mBAAmB,CAAC;MACvG,CAAC,CAAC,OAAOd,CAAM,EAAE;QACf,IAAIA,CAAC,YAAY3E,iBAAiB,IAAI2E,CAAC,CAACS,IAAI,KAAKrF,qBAAqB,CAAC0E,cAAc,EAAE;UACrF;QAAA,CACD,MAAM;UACL,MAAME,CAAC;QACT;MACF;IACF;IAEA,MAAMe,QAAQ,GAAGzF,oBAAoB,CAACC,KAAK,CAACoC,KAAK,CAACqD,oBAAoB,EAAE,CAACC,OAAO,CAACN,IAAI,EAAExF,SAAS,CAAC+F,IAAI,CAAC;IACtG,IAAIL,MAAM,EAAEE,QAAQ,CAACI,mBAAmB,CAACN,MAAM,CAAC,CAAC,KAC5C;MACH,MAAMlD,KAAK,GAAG,MAAM,IAAI,CAACiB,SAAS,CAAC7B,KAAK,CAAC;MACzC,MAAM;QAAEM,WAAW;QAAEI;MAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;MACrE,MAAMgC,iBAAiB,GAAG,IAAI,CAACvB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;MACxE0D,QAAQ,CAACK,cAAc,CAAC;QACtBnD,IAAI,EAAER,QAAQ;QACda,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBlC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9B6C;MACN,CAAC,CAAC;IACJ;IACA,MAAMmB,QAAQ,CAACM,OAAO,EAAE;EAC1B;EAEA,MAAMC,eAAeA,CAACrE,IAAY,EAAEF,KAAqC,EAAiB;IACxF,IAAI;MACF,MAAM,IAAI,CAAC0C,SAAS,CAACxC,IAAI,EAAEF,KAAK,CAAC;MACjC,MAAM,IAAI1B,iBAAiB,CAAE,QAAO4B,IAAK,iBAAgB,EAAE7B,qBAAqB,CAAC0F,mBAAmB,CAAC;IACvG,CAAC,CAAC,OAAOd,CAAM,EAAE;MACf,IAAIA,CAAC,YAAY3E,iBAAiB,IAAI2E,CAAC,CAACS,IAAI,KAAKrF,qBAAqB,CAAC0E,cAAc,EAAE;QACrF;MAAA,CACD,MAAM,IAAIE,CAAC,YAAY3E,iBAAiB,IAAI2E,CAAC,CAACS,IAAI,KAAKrF,qBAAqB,CAAC2E,iBAAiB,EAAE;QAC/F,MAAM,IAAI1E,iBAAiB,CAAE,aAAY4B,IAAK,iBAAgB,EAAE7B,qBAAqB,CAAC0F,mBAAmB,CAAC;MAC5G,CAAC,MAAM;QACL,MAAMd,CAAC;MACT;IACF;IAEA,MAAMe,QAAQ,GAAGzF,oBAAoB,CAACC,KAAK,CAACoC,KAAK,CAAC4D,uBAAuB,EAAE;IAC3E,MAAM5D,KAAK,GAAG,MAAM,IAAI,CAACiB,SAAS,CAAC7B,KAAK,CAAC;IACzC,MAAM;MAAEM,WAAW;MAAEI;IAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;IACrE,MAAMgC,iBAAiB,GAAG,IAAI,CAACvB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;IACxE0D,QAAQ,CAACK,cAAc,CAAC;MACtBnD,IAAI,EAAER,QAAQ;MACdM,QAAQ,EAAE5C,SAAS,CAAC6C,MAAM;MAC1BM,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBlC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9B6C;IACN,CAAC,CAAC;IACF,MAAMmB,QAAQ,CAACM,OAAO,EAAE;EAC1B;EAEA,MAAMG,QAAQA,CAACvE,IAAY,EAAEF,KAAqC,EAAmB;IACnF,MAAM8D,MAAM,GAAG,MAAM,IAAI,CAACpB,SAAS,CAACxC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAM0E,OAAO,GAAG,MAAMnG,oBAAoB,CAACC,KAAK,CAACoC,KAAK,CAAC+D,OAAO,CAACb,MAAM,CAAC;IACtE,OAAOY,OAAO;EAChB;EAEA,MAAME,UAAUA,CAAC1E,IAAY,EAAEF,KAAqC,EAAiB;IACnF,MAAM8D,MAAM,GAAG,MAAM,IAAI,CAACpB,SAAS,CAACxC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMzB,oBAAoB,CAACC,KAAK,CAACoC,KAAK,CAACiE,MAAM,CAACf,MAAM,CAAC;EACvD;EAEA,MAAMgB,QAAQA,CAAC5E,IAAY,EAAEF,KAAqC,EAA8C;IAC9G,MAAM8D,MAAM,GAAG,MAAM,IAAI,CAACpB,SAAS,CAACxC,IAAI,EAAEF,KAAK,EAAE,KAAK,CAAC;IACvD,MAAM8C,IAA6B,GAAG,MAAM,CAC1C,MAAMvE,oBAAoB,CAACC,KAAK,CAACoC,KAAK,CAAC9B,GAAG,CAACgF,MAAM,EAAG;MAClD9B,MAAM,EAAE;IACV,CAAC,CAAC,EACFoB,IAAI,EAAE;IAER,OAAO;MACL2B,IAAI,EAAEjC,IAAI,CAACiC,IAAI,IAAI,CAAC;MACpBC,WAAW,EAAE,IAAIC,IAAI,CAACnC,IAAI,CAACoC,WAAW,CAAE,CAACC,OAAO,EAAE;MAClDC,OAAO,EAAE,IAAIH,IAAI,CAACnC,IAAI,CAACuC,YAAY,CAAE,CAACF,OAAO,EAAE;MAC/CG,WAAW,EAAExC,IAAI,CAAC9B,QAAQ,KAAK5C,SAAS,CAAC6C,MAAM;MAC/CsE,MAAM,EAAEzC,IAAI,CAAC9B,QAAQ,KAAK5C,SAAS,CAAC6C;IACtC,CAAC;EACH;AACF"}
@@ -4,7 +4,6 @@ export * from './types/main';
4
4
  export * from './hooks/useCloudFile';
5
5
  export * from './hooks/useIsCloudAvailable';
6
6
  import CloudStorageError from './utils/CloudStorageError';
7
- export { CloudStorageError };
8
- export { CloudStorageErrorCode };
7
+ export { CloudStorageError, CloudStorageErrorCode };
9
8
  export default RNCloudStorage;
10
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RNCloudStorage","CloudStorageErrorCode","CloudStorageError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,cAAc,cAAc;AAC5B,cAAc,sBAAsB;AACpC,cAAc,6BAA6B;AAC3C,OAAOC,iBAAiB,MAAM,2BAA2B;AAEzD,SAASA,iBAAiB;AAC1B,SAASD,qBAAqB;AAC9B,eAAeD,cAAc"}
1
+ {"version":3,"names":["RNCloudStorage","CloudStorageErrorCode","CloudStorageError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,cAAc,cAAc;AAC5B,cAAc,sBAAsB;AACpC,cAAc,6BAA6B;AAC3C,OAAOC,iBAAiB,MAAM,2BAA2B;AAEzD,SAASA,iBAAiB,EAAED,qBAAqB;AACjD,eAAeD,cAAc"}
@@ -1,7 +1,10 @@
1
1
  export let CloudStorageErrorCode = /*#__PURE__*/function (CloudStorageErrorCode) {
2
2
  CloudStorageErrorCode["FILE_NOT_FOUND"] = "ERR_FILE_NOT_FOUND";
3
+ CloudStorageErrorCode["PATH_IS_DIRECTORY"] = "ERR_PATH_IS_DIRECTORY";
3
4
  CloudStorageErrorCode["DIRECTORY_NOT_FOUND"] = "ERR_NO_DIRECTORY_FOUND";
4
5
  CloudStorageErrorCode["FILE_ALREADY_EXISTS"] = "ERR_FILE_EXISTS";
6
+ CloudStorageErrorCode["MULTIPLE_FILES_SAME_NAME"] = "ERR_MULTIPLE_FILES_SAME_NAME";
7
+ CloudStorageErrorCode["AUTHENTICATION_FAILED"] = "ERR_AUTHENTICATION_FAILED";
5
8
  CloudStorageErrorCode["WRITE_ERROR"] = "ERR_WRITE_ERROR";
6
9
  CloudStorageErrorCode["READ_ERROR"] = "ERR_READ_ERROR";
7
10
  CloudStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
@@ -1 +1 @@
1
- {"version":3,"names":["CloudStorageErrorCode"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":"AAUA,WAAYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA"}
1
+ {"version":3,"names":["CloudStorageErrorCode"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":"AAUA,WAAYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA"}
@@ -2,6 +2,13 @@ import type { CloudStorageFileStat, CloudStorageScope } from './types/main';
2
2
  declare const RNCloudStorage: {
3
3
  getGoogleDriveAccessToken: () => string | undefined;
4
4
  setGoogleDriveAccessToken: (accessToken: string) => string;
5
+ setThrowOnFilesWithSameName: (enable: boolean) => boolean;
6
+ subscribeToFilesWithSameName: (subscriber: ({ path, fileIds }: {
7
+ path: string;
8
+ fileIds: string[];
9
+ }) => void) => {
10
+ remove: () => void;
11
+ };
5
12
  /**
6
13
  * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
7
14
  * unavailable right after app launch or if the user is not logged in.
@@ -23,6 +30,13 @@ declare const RNCloudStorage: {
23
30
  * @returns A promise that resolves when the file has been written.
24
31
  */
25
32
  writeFile: (path: string, data: string, scope: CloudStorageScope) => Promise<void>;
33
+ /**
34
+ * Creates a new directory at the given path.
35
+ * @param path The directory to create.
36
+ * @param scope The directory scope the path is in.
37
+ * @returns A promise that resolves when the directory has been created.
38
+ */
39
+ mkdir: (path: string, scope: CloudStorageScope) => Promise<void>;
26
40
  /**
27
41
  * Reads the contents of the file at the given path.
28
42
  * @param path The file to read.
@@ -1 +1 @@
1
- {"version":3,"file":"RNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/RNCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG5E,QAAA,MAAM,cAAc;;6CAEuB,MAAM;IAE/C;;;;OAIG;4BACyB,QAAQ,OAAO,CAAC;IAI5C;;;;;OAKG;mBACY,MAAM,SAAS,iBAAiB,KAAG,QAAQ,OAAO,CAAC;IAIlE;;;;;;OAMG;sBACe,MAAM,QAAQ,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAIhF;;;;;OAKG;qBACc,MAAM,SAAS,iBAAiB,KAAG,QAAQ,MAAM,CAAC;IAInE;;;;;OAKG;mBACY,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAI/D;;;;;OAKG;iBACgB,MAAM,SAAS,iBAAiB,KAAG,QAAQ,oBAAoB,CAAC;CAWpF,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/RNCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAK5E,QAAA,MAAM,cAAc;;6CAEuB,MAAM;0CACT,OAAO;;;;;;;IAS7C;;;;OAIG;4BACyB,QAAQ,OAAO,CAAC;IAI5C;;;;;OAKG;mBACY,MAAM,SAAS,iBAAiB,KAAG,QAAQ,OAAO,CAAC;IAIlE;;;;;;OAMG;sBACe,MAAM,QAAQ,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAIhF;;;;;OAKG;kBACW,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAI9D;;;;;OAKG;qBACc,MAAM,SAAS,iBAAiB,KAAG,QAAQ,MAAM,CAAC;IAInE;;;;;OAKG;mBACY,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAI/D;;;;;OAKG;iBACgB,MAAM,SAAS,iBAAiB,KAAG,QAAQ,oBAAoB,CAAC;CAWpF,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,21 +1,33 @@
1
1
  import type NativeRNCloudStorage from '../types/native';
2
2
  import { type NativeRNCloudCloudStorageFileStat, type NativeRNCloudCloudStorageScope } from '../types/native';
3
- declare class GoogleDriveApiClient implements NativeRNCloudStorage {
3
+ export default class GoogleDriveApiClient implements NativeRNCloudStorage {
4
4
  private static drive;
5
+ static throwOnFilesWithSameName: boolean;
6
+ filesWithSameNameSubscribers: (({ path, fileIds }: {
7
+ path: string;
8
+ fileIds: string[];
9
+ }) => void)[];
5
10
  constructor();
6
11
  static set accessToken(accessToken: string | undefined);
7
12
  static get accessToken(): string | undefined;
13
+ subscribeToFilesWithSameName(subscriber: ({ path, fileIds }: {
14
+ path: string;
15
+ fileIds: string[];
16
+ }) => void): {
17
+ remove: () => void;
18
+ };
8
19
  isCloudAvailable: () => Promise<boolean>;
9
20
  private getRootDirectory;
10
21
  private resolvePathToDirectories;
11
22
  private findParentDirectoryId;
12
23
  private listFiles;
24
+ private checkIfMultipleFilesWithSameName;
13
25
  private getFileId;
14
26
  fileExists(path: string, scope: NativeRNCloudCloudStorageScope): Promise<boolean>;
15
27
  createFile(path: string, data: string, scope: NativeRNCloudCloudStorageScope, overwrite: boolean): Promise<void>;
28
+ createDirectory(path: string, scope: NativeRNCloudCloudStorageScope): Promise<void>;
16
29
  readFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<string>;
17
30
  deleteFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<void>;
18
31
  statFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<NativeRNCloudCloudStorageFileStat>;
19
32
  }
20
- export default GoogleDriveApiClient;
21
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/google-drive/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAEL,KAAK,iCAAiC,EACtC,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AAIzB,cAAM,oBAAqB,YAAW,oBAAoB;IACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwB;;IAsB5C,WAAkB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAE5D;IAED,WAAkB,WAAW,IAAI,MAAM,GAAG,SAAS,CAElD;IAEM,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAA0D;IAEzG,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,qBAAqB;YAiDf,SAAS;YAST,SAAS;IAgBjB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAUjF,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,8BAA8B,EACrC,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC;IA2BV,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,iCAAiC,CAAC;CAahH;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/google-drive/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAEL,KAAK,iCAAiC,EACtC,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AAIzB,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,oBAAoB;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwB;IAC5C,OAAc,wBAAwB,UAAS;IACxC,4BAA4B,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC,EAAE,CAAC;;IAwB1G,WAAkB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAE5D;IAED,WAAkB,WAAW,IAAI,MAAM,GAAG,SAAS,CAElD;IAEM,4BAA4B,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,GAAG;QACjH,MAAM,EAAE,MAAM,IAAI,CAAC;KACpB;IAUM,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAA0D;IAEzG,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,qBAAqB;YAiDf,SAAS;IASvB,OAAO,CAAC,gCAAgC;YAyB1B,SAAS;IAsCjB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAUjF,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,8BAA8B,EACrC,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC;IA2CV,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,iCAAiC,CAAC;CAgBhH"}
@@ -4,7 +4,6 @@ export * from './types/main';
4
4
  export * from './hooks/useCloudFile';
5
5
  export * from './hooks/useIsCloudAvailable';
6
6
  import CloudStorageError from './utils/CloudStorageError';
7
- export { CloudStorageError };
8
- export { CloudStorageErrorCode };
7
+ export { CloudStorageError, CloudStorageErrorCode };
9
8
  export default RNCloudStorage;
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AACpD,eAAe,cAAc,CAAC"}
@@ -8,8 +8,11 @@ export interface NativeRNCloudCloudStorageFileStat {
8
8
  }
9
9
  export declare enum CloudStorageErrorCode {
10
10
  FILE_NOT_FOUND = "ERR_FILE_NOT_FOUND",
11
+ PATH_IS_DIRECTORY = "ERR_PATH_IS_DIRECTORY",
11
12
  DIRECTORY_NOT_FOUND = "ERR_NO_DIRECTORY_FOUND",
12
13
  FILE_ALREADY_EXISTS = "ERR_FILE_EXISTS",
14
+ MULTIPLE_FILES_SAME_NAME = "ERR_MULTIPLE_FILES_SAME_NAME",
15
+ AUTHENTICATION_FAILED = "ERR_AUTHENTICATION_FAILED",
13
16
  WRITE_ERROR = "ERR_WRITE_ERROR",
14
17
  READ_ERROR = "ERR_READ_ERROR",
15
18
  DELETE_ERROR = "ERR_DELETE_ERROR",
@@ -20,6 +23,7 @@ export declare enum CloudStorageErrorCode {
20
23
  export default interface NativeRNCloudStorage {
21
24
  fileExists: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<boolean>;
22
25
  createFile: (path: string, data: string, scope: NativeRNCloudCloudStorageScope, overwrite: boolean) => Promise<void>;
26
+ createDirectory: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
23
27
  readFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<string>;
24
28
  deleteFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
25
29
  statFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<NativeRNCloudCloudStorageFileStat>;
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/types/native.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iCAAiC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oBAAY,qBAAqB;IAC/B,cAAc,uBAAuB;IACrC,mBAAmB,2BAA2B;IAC9C,mBAAmB,oBAAoB;IACvC,WAAW,oBAAoB;IAC/B,UAAU,mBAAmB;IAC7B,YAAY,qBAAqB;IACjC,UAAU,mBAAmB;IAC7B,OAAO,gBAAgB;IACvB,iCAAiC,0CAA0C;CAC5E;AAED,MAAM,CAAC,OAAO,WAAW,oBAAoB;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC9G,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/types/native.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iCAAiC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oBAAY,qBAAqB;IAC/B,cAAc,uBAAuB;IACrC,iBAAiB,0BAA0B;IAC3C,mBAAmB,2BAA2B;IAC9C,mBAAmB,oBAAoB;IACvC,wBAAwB,iCAAiC;IACzD,qBAAqB,8BAA8B;IACnD,WAAW,oBAAoB;IAC/B,UAAU,mBAAmB;IAC7B,YAAY,qBAAqB;IACjC,UAAU,mBAAmB;IAC7B,OAAO,gBAAgB;IACvB,iCAAiC,0CAA0C;CAC5E;AAED,MAAM,CAAC,OAAO,WAAW,oBAAoB;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC9G,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-cloud-storage",
3
- "version": "0.4.2",
3
+ "version": "0.6.0",
4
4
  "description": "Save to & read from iCloud and Google Drive using React Native",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -1,11 +1,21 @@
1
1
  import createRNCloudStorage from './createRNCloudStorage';
2
2
  import GoogleDriveApiClient from './google-drive';
3
3
  import type { CloudStorageFileStat, CloudStorageScope } from './types/main';
4
+ import { Platform } from 'react-native';
4
5
 
5
6
  const nativeInstance = createRNCloudStorage();
7
+
6
8
  const RNCloudStorage = {
7
9
  getGoogleDriveAccessToken: () => GoogleDriveApiClient.accessToken,
8
10
  setGoogleDriveAccessToken: (accessToken: string) => (GoogleDriveApiClient.accessToken = accessToken),
11
+ setThrowOnFilesWithSameName: (enable: boolean) => (GoogleDriveApiClient.throwOnFilesWithSameName = enable),
12
+ /* eslint-disable @typescript-eslint/no-unused-vars */
13
+ subscribeToFilesWithSameName:
14
+ Platform.OS === 'ios'
15
+ ? // @ts-expect-error - subscriber is undefined; just a mock
16
+ (subscriber: ({ path, fileIds }: { path: string; fileIds: string[] }) => void) => ({ remove: () => {} })
17
+ : (nativeInstance as GoogleDriveApiClient).subscribeToFilesWithSameName.bind(nativeInstance),
18
+ /* eslint-enable @typescript-eslint/no-unused-vars */
9
19
 
10
20
  /**
11
21
  * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
@@ -37,6 +47,16 @@ const RNCloudStorage = {
37
47
  return nativeInstance.createFile(path, data, scope, true);
38
48
  },
39
49
 
50
+ /**
51
+ * Creates a new directory at the given path.
52
+ * @param path The directory to create.
53
+ * @param scope The directory scope the path is in.
54
+ * @returns A promise that resolves when the directory has been created.
55
+ */
56
+ mkdir: (path: string, scope: CloudStorageScope): Promise<void> => {
57
+ return nativeInstance.createDirectory(path, scope);
58
+ },
59
+
40
60
  /**
41
61
  * Reads the contents of the file at the given path.
42
62
  * @param path The file to read.
@@ -1,4 +1,4 @@
1
- import { GDrive, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
1
+ import { GDrive, HttpError, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
2
2
  import type NativeRNCloudStorage from '../types/native';
3
3
  import {
4
4
  CloudStorageErrorCode,
@@ -8,15 +8,19 @@ import {
8
8
  import type { GoogleDriveDetailedFile, GoogleDriveFile, GoogleDriveListOperationResponse } from './types';
9
9
  import CloudStorageError from '../utils/CloudStorageError';
10
10
 
11
- class GoogleDriveApiClient implements NativeRNCloudStorage {
11
+ export default class GoogleDriveApiClient implements NativeRNCloudStorage {
12
12
  private static drive: GDrive = new GDrive();
13
+ public static throwOnFilesWithSameName = false;
14
+ public filesWithSameNameSubscribers: (({ path, fileIds }: { path: string; fileIds: string[] }) => void)[];
13
15
 
14
16
  constructor() {
17
+ this.filesWithSameNameSubscribers = [];
15
18
  GoogleDriveApiClient.drive.fetchTimeout = 3000;
16
19
  return new Proxy(this, {
17
20
  // before calling any function, check if the access token is set
18
21
  get(target: GoogleDriveApiClient, prop: keyof GoogleDriveApiClient) {
19
- if (typeof target[prop] === 'function' && prop !== 'isCloudAvailable') {
22
+ const allowedFunctions = ['isCloudAvailable', 'subscribeToFilesWithSameName'];
23
+ if (typeof target[prop] === 'function' && !allowedFunctions.includes(prop.toString())) {
20
24
  if (!GoogleDriveApiClient.drive.accessToken) {
21
25
  throw new CloudStorageError(
22
26
  `Google Drive access token is not set, cannot call function ${prop.toString()}`,
@@ -39,6 +43,18 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
39
43
  return GoogleDriveApiClient.drive.accessToken;
40
44
  }
41
45
 
46
+ public subscribeToFilesWithSameName(subscriber: ({ path, fileIds }: { path: string; fileIds: string[] }) => void): {
47
+ remove: () => void;
48
+ } {
49
+ this.filesWithSameNameSubscribers.push(subscriber);
50
+
51
+ return {
52
+ remove: () => {
53
+ this.filesWithSameNameSubscribers = this.filesWithSameNameSubscribers.filter((s) => s !== subscriber);
54
+ },
55
+ };
56
+ }
57
+
42
58
  public isCloudAvailable: () => Promise<boolean> = async () => !!GoogleDriveApiClient.accessToken?.length;
43
59
 
44
60
  private getRootDirectory(scope: NativeRNCloudCloudStorageScope): 'drive' | 'appDataFolder' {
@@ -116,25 +132,72 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
116
132
  return files.files;
117
133
  }
118
134
 
119
- private async getFileId(path: string, scope: NativeRNCloudCloudStorageScope): Promise<string> {
120
- const files = await this.listFiles(scope);
121
- const { directories, filename } = this.resolvePathToDirectories(path);
122
- const parentDirectoryId = this.findParentDirectoryId(files, directories);
123
- let file: GoogleDriveFile | undefined;
124
- if (parentDirectoryId === null) {
125
- /* when the file is supposes to be in the root directory, we need to get the file where the name is the filename
126
- and the first parent has an id which does not exist in the files array */
127
- file = files.find((f) => f.name === filename && !files.find((f2) => f2.id === f.parents![0]));
135
+ private checkIfMultipleFilesWithSameName(
136
+ path: string,
137
+ files: GoogleDriveFile[],
138
+ filename: string,
139
+ parentDirectoryId: string | null
140
+ ) {
141
+ let possibleFiles: GoogleDriveFile[];
142
+ if (parentDirectoryId) {
143
+ possibleFiles = files.filter((f) => f.name === filename && f.parents![0] === parentDirectoryId);
128
144
  } else {
129
- file = files.find((f) => f.name === filename && f.parents![0] === parentDirectoryId);
145
+ possibleFiles = files.filter((f) => f.name === filename && !files.find((f2) => f2.id === f.parents![0]));
146
+ }
147
+
148
+ if (possibleFiles.length <= 1) return;
149
+
150
+ if (GoogleDriveApiClient.throwOnFilesWithSameName) {
151
+ throw new CloudStorageError(
152
+ `Multiple files with the same name found at path ${path}: ${possibleFiles.map((f) => f.id).join(', ')}`,
153
+ CloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME
154
+ );
155
+ } else {
156
+ this.filesWithSameNameSubscribers.forEach((s) => s({ path, fileIds: possibleFiles.map((f) => f.id) }));
157
+ }
158
+ }
159
+
160
+ private async getFileId(
161
+ path: string,
162
+ scope: NativeRNCloudCloudStorageScope,
163
+ throwIfDirectory = true
164
+ ): Promise<string> {
165
+ try {
166
+ const files = await this.listFiles(scope);
167
+ const { directories, filename } = this.resolvePathToDirectories(path);
168
+ const parentDirectoryId = this.findParentDirectoryId(files, directories);
169
+ let file: GoogleDriveFile | undefined;
170
+ if (parentDirectoryId === null) {
171
+ this.checkIfMultipleFilesWithSameName(path, files, filename, null);
172
+ /* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
173
+ and the first parent has an id which does not exist in the files array */
174
+ file = files.find((f) => f.name === filename && !files.find((f2) => f2.id === f.parents![0]));
175
+ } else {
176
+ this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
177
+ file = files.find((f) => f.name === filename && f.parents![0] === parentDirectoryId);
178
+ }
179
+ if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
180
+ if (file.mimeType === MimeTypes.FOLDER && throwIfDirectory) {
181
+ throw new CloudStorageError(`Path ${path} is a directory`, CloudStorageErrorCode.PATH_IS_DIRECTORY);
182
+ }
183
+ return file.id;
184
+ } catch (e: unknown) {
185
+ if (e instanceof HttpError && e.json?.error?.status === 'UNAUTHENTICATED') {
186
+ throw new CloudStorageError(
187
+ `Could not authenticate with Google Drive`,
188
+ CloudStorageErrorCode.AUTHENTICATION_FAILED,
189
+ e.json
190
+ );
191
+ } else {
192
+ if (e instanceof CloudStorageError) throw e;
193
+ throw new CloudStorageError(`Could not get file id for path ${path}`, CloudStorageErrorCode.UNKNOWN, e);
194
+ }
130
195
  }
131
- if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
132
- return file.id;
133
196
  }
134
197
 
135
198
  async fileExists(path: string, scope: NativeRNCloudCloudStorageScope): Promise<boolean> {
136
199
  try {
137
- await this.getFileId(path, scope);
200
+ await this.getFileId(path, scope, false);
138
201
  return true;
139
202
  } catch (e: any) {
140
203
  if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) return false;
@@ -153,9 +216,25 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
153
216
  try {
154
217
  fileId = await this.getFileId(path, scope);
155
218
  } catch (e: any) {
156
- /* do nothing, simply create the file */
219
+ if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
220
+ /* do nothing, simply create the file */
221
+ } else {
222
+ throw e;
223
+ }
224
+ }
225
+ } else {
226
+ try {
227
+ await this.getFileId(path, scope);
228
+ throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
229
+ } catch (e: any) {
230
+ if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
231
+ /* do nothing, simply create the file */
232
+ } else {
233
+ throw e;
234
+ }
157
235
  }
158
236
  }
237
+
159
238
  const uploader = GoogleDriveApiClient.drive.files.newMultipartUploader().setData(data, MimeTypes.TEXT);
160
239
  if (fileId) uploader.setIdOfFileToUpdate(fileId);
161
240
  else {
@@ -174,6 +253,36 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
174
253
  await uploader.execute();
175
254
  }
176
255
 
256
+ async createDirectory(path: string, scope: NativeRNCloudCloudStorageScope): Promise<void> {
257
+ try {
258
+ await this.getFileId(path, scope);
259
+ throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
260
+ } catch (e: any) {
261
+ if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
262
+ /* do nothing, simply create the file */
263
+ } else if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.PATH_IS_DIRECTORY) {
264
+ throw new CloudStorageError(`Directory ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
265
+ } else {
266
+ throw e;
267
+ }
268
+ }
269
+
270
+ const uploader = GoogleDriveApiClient.drive.files.newMetadataOnlyUploader();
271
+ const files = await this.listFiles(scope);
272
+ const { directories, filename } = this.resolvePathToDirectories(path);
273
+ const parentDirectoryId = this.findParentDirectoryId(files, directories);
274
+ uploader.setRequestBody({
275
+ name: filename,
276
+ mimeType: MimeTypes.FOLDER,
277
+ parents: parentDirectoryId
278
+ ? [parentDirectoryId]
279
+ : scope === 'app_data'
280
+ ? [this.getRootDirectory(scope)]
281
+ : undefined,
282
+ });
283
+ await uploader.execute();
284
+ }
285
+
177
286
  async readFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<string> {
178
287
  const fileId = await this.getFileId(path, scope);
179
288
  const content = await GoogleDriveApiClient.drive.files.getText(fileId);
@@ -186,10 +295,13 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
186
295
  }
187
296
 
188
297
  async statFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<NativeRNCloudCloudStorageFileStat> {
189
- const fileId = await this.getFileId(path, scope);
190
- const file: GoogleDriveDetailedFile = await GoogleDriveApiClient.drive.files.get(fileId, {
191
- fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime',
192
- });
298
+ const fileId = await this.getFileId(path, scope, false);
299
+ const file: GoogleDriveDetailedFile = await (
300
+ await GoogleDriveApiClient.drive.files.get(fileId!, {
301
+ fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime',
302
+ })
303
+ ).json();
304
+
193
305
  return {
194
306
  size: file.size ?? 0,
195
307
  birthtimeMs: new Date(file.createdTime!).getTime(),
@@ -199,5 +311,3 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
199
311
  };
200
312
  }
201
313
  }
202
-
203
- export default GoogleDriveApiClient;
package/src/index.ts CHANGED
@@ -5,6 +5,5 @@ export * from './hooks/useCloudFile';
5
5
  export * from './hooks/useIsCloudAvailable';
6
6
  import CloudStorageError from './utils/CloudStorageError';
7
7
 
8
- export { CloudStorageError };
9
- export { CloudStorageErrorCode };
8
+ export { CloudStorageError, CloudStorageErrorCode };
10
9
  export default RNCloudStorage;
@@ -10,8 +10,11 @@ export interface NativeRNCloudCloudStorageFileStat {
10
10
 
11
11
  export enum CloudStorageErrorCode {
12
12
  FILE_NOT_FOUND = 'ERR_FILE_NOT_FOUND',
13
+ PATH_IS_DIRECTORY = 'ERR_PATH_IS_DIRECTORY',
13
14
  DIRECTORY_NOT_FOUND = 'ERR_NO_DIRECTORY_FOUND',
14
15
  FILE_ALREADY_EXISTS = 'ERR_FILE_EXISTS',
16
+ MULTIPLE_FILES_SAME_NAME = 'ERR_MULTIPLE_FILES_SAME_NAME',
17
+ AUTHENTICATION_FAILED = 'ERR_AUTHENTICATION_FAILED',
15
18
  WRITE_ERROR = 'ERR_WRITE_ERROR',
16
19
  READ_ERROR = 'ERR_READ_ERROR',
17
20
  DELETE_ERROR = 'ERR_DELETE_ERROR',
@@ -23,6 +26,7 @@ export enum CloudStorageErrorCode {
23
26
  export default interface NativeRNCloudStorage {
24
27
  fileExists: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<boolean>;
25
28
  createFile: (path: string, data: string, scope: NativeRNCloudCloudStorageScope, overwrite: boolean) => Promise<void>;
29
+ createDirectory: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
26
30
  readFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<string>;
27
31
  deleteFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
28
32
  statFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<NativeRNCloudCloudStorageFileStat>;