@memberjunction/storage 2.30.0 → 2.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/drivers/AWSFileStorage.d.ts +26 -1
- package/dist/drivers/AWSFileStorage.d.ts.map +1 -1
- package/dist/drivers/AWSFileStorage.js +287 -13
- package/dist/drivers/AWSFileStorage.js.map +1 -1
- package/dist/drivers/AzureFileStorage.d.ts +22 -1
- package/dist/drivers/AzureFileStorage.d.ts.map +1 -1
- package/dist/drivers/AzureFileStorage.js +264 -20
- package/dist/drivers/AzureFileStorage.js.map +1 -1
- package/dist/drivers/BoxFileStorage.d.ts +73 -0
- package/dist/drivers/BoxFileStorage.d.ts.map +1 -0
- package/dist/drivers/BoxFileStorage.js +517 -0
- package/dist/drivers/BoxFileStorage.js.map +1 -0
- package/dist/drivers/DropboxFileStorage.d.ts +73 -0
- package/dist/drivers/DropboxFileStorage.d.ts.map +1 -0
- package/dist/drivers/DropboxFileStorage.js +463 -0
- package/dist/drivers/DropboxFileStorage.js.map +1 -0
- package/dist/drivers/GoogleDriveFileStorage.d.ts +73 -0
- package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -0
- package/dist/drivers/GoogleDriveFileStorage.js +542 -0
- package/dist/drivers/GoogleDriveFileStorage.js.map +1 -0
- package/dist/drivers/GoogleFileStorage.d.ts +20 -1
- package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
- package/dist/drivers/GoogleFileStorage.js +215 -2
- package/dist/drivers/GoogleFileStorage.js.map +1 -1
- package/dist/drivers/SharePointFileStorage.d.ts +81 -0
- package/dist/drivers/SharePointFileStorage.d.ts.map +1 -0
- package/dist/drivers/SharePointFileStorage.js +490 -0
- package/dist/drivers/SharePointFileStorage.js.map +1 -0
- package/dist/generic/FileStorageBase.d.ts +119 -0
- package/dist/generic/FileStorageBase.d.ts.map +1 -1
- package/dist/generic/FileStorageBase.js +18 -1
- package/dist/generic/FileStorageBase.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +12 -4
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.DropboxFileStorage = void 0;
|
|
36
|
+
const dropbox_1 = require("dropbox");
|
|
37
|
+
const global_1 = require("@memberjunction/global");
|
|
38
|
+
const env = __importStar(require("env-var"));
|
|
39
|
+
const mime = __importStar(require("mime-types"));
|
|
40
|
+
const FileStorageBase_1 = require("../generic/FileStorageBase");
|
|
41
|
+
let DropboxFileStorage = class DropboxFileStorage extends FileStorageBase_1.FileStorageBase {
|
|
42
|
+
constructor() {
|
|
43
|
+
super();
|
|
44
|
+
this.providerName = 'Dropbox';
|
|
45
|
+
// Dropbox auth can be via access token or refresh token
|
|
46
|
+
const accessToken = env.get('STORAGE_DROPBOX_ACCESS_TOKEN').asString();
|
|
47
|
+
const refreshToken = env.get('STORAGE_DROPBOX_REFRESH_TOKEN').asString();
|
|
48
|
+
const appKey = env.get('STORAGE_DROPBOX_APP_KEY').asString();
|
|
49
|
+
const appSecret = env.get('STORAGE_DROPBOX_APP_SECRET').asString();
|
|
50
|
+
if (accessToken) {
|
|
51
|
+
// Use access token directly
|
|
52
|
+
this._client = new dropbox_1.Dropbox({ accessToken });
|
|
53
|
+
}
|
|
54
|
+
else if (refreshToken && appKey && appSecret) {
|
|
55
|
+
// Use refresh token with app credentials
|
|
56
|
+
this._client = new dropbox_1.Dropbox({
|
|
57
|
+
refreshToken,
|
|
58
|
+
clientId: appKey,
|
|
59
|
+
clientSecret: appSecret
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
throw new Error('Dropbox storage requires either STORAGE_DROPBOX_ACCESS_TOKEN or STORAGE_DROPBOX_REFRESH_TOKEN with APP_KEY and APP_SECRET');
|
|
64
|
+
}
|
|
65
|
+
// Root path, optional (defaults to empty which is root)
|
|
66
|
+
this._rootPath = env.get('STORAGE_DROPBOX_ROOT_PATH').default('').asString();
|
|
67
|
+
// Ensure root path starts with / if not empty
|
|
68
|
+
if (this._rootPath && !this._rootPath.startsWith('/')) {
|
|
69
|
+
this._rootPath = '/' + this._rootPath;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Normalize a path to be compatible with Dropbox API
|
|
74
|
+
*/
|
|
75
|
+
_normalizePath(path) {
|
|
76
|
+
// Combine root path with the given path
|
|
77
|
+
let fullPath = path;
|
|
78
|
+
if (this._rootPath) {
|
|
79
|
+
fullPath = path ?
|
|
80
|
+
(path.startsWith('/') ? this._rootPath + path : this._rootPath + '/' + path) :
|
|
81
|
+
this._rootPath;
|
|
82
|
+
}
|
|
83
|
+
else if (!fullPath.startsWith('/') && fullPath !== '') {
|
|
84
|
+
fullPath = '/' + fullPath;
|
|
85
|
+
}
|
|
86
|
+
// For root, Dropbox uses empty string instead of "/"
|
|
87
|
+
if (fullPath === '/') {
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
return fullPath;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get metadata for a file or folder
|
|
94
|
+
*/
|
|
95
|
+
async _getMetadata(path) {
|
|
96
|
+
const normalizedPath = this._normalizePath(path);
|
|
97
|
+
try {
|
|
98
|
+
const response = await this._client.filesGetMetadata({
|
|
99
|
+
path: normalizedPath,
|
|
100
|
+
include_media_info: false
|
|
101
|
+
});
|
|
102
|
+
return response.result;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
throw new Error(`Item not found: ${path} (${error.message})`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Converts a Dropbox file/folder to StorageObjectMetadata
|
|
110
|
+
*/
|
|
111
|
+
_convertToMetadata(item, parentPath = '') {
|
|
112
|
+
const isDirectory = item['.tag'] === 'folder';
|
|
113
|
+
const name = item.name;
|
|
114
|
+
// Extract path from item.path_display
|
|
115
|
+
let path = '';
|
|
116
|
+
if (item.path_display) {
|
|
117
|
+
// Remove file name from path
|
|
118
|
+
const pathParts = item.path_display.split('/');
|
|
119
|
+
pathParts.pop();
|
|
120
|
+
path = pathParts.join('/');
|
|
121
|
+
// Remove root path if present
|
|
122
|
+
if (this._rootPath && path.startsWith(this._rootPath)) {
|
|
123
|
+
path = path.substring(this._rootPath.length);
|
|
124
|
+
}
|
|
125
|
+
// Remove leading slash
|
|
126
|
+
if (path.startsWith('/')) {
|
|
127
|
+
path = path.substring(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Use parentPath if provided
|
|
131
|
+
if (parentPath) {
|
|
132
|
+
path = parentPath;
|
|
133
|
+
}
|
|
134
|
+
// Construct full path
|
|
135
|
+
const fullPath = path ? `${path}/${name}` : name;
|
|
136
|
+
return {
|
|
137
|
+
name,
|
|
138
|
+
path,
|
|
139
|
+
fullPath,
|
|
140
|
+
size: isDirectory ? 0 : (item.size || 0),
|
|
141
|
+
contentType: isDirectory ?
|
|
142
|
+
'application/x-directory' :
|
|
143
|
+
(mime.lookup(name) || 'application/octet-stream'),
|
|
144
|
+
lastModified: isDirectory ? new Date() : new Date(item.server_modified || Date.now()),
|
|
145
|
+
isDirectory,
|
|
146
|
+
customMetadata: {
|
|
147
|
+
id: item.id,
|
|
148
|
+
rev: item.rev
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Dropbox doesn't support pre-auth upload URLs directly
|
|
154
|
+
*/
|
|
155
|
+
async CreatePreAuthUploadUrl(objectName) {
|
|
156
|
+
// Dropbox doesn't support pre-signed URLs for uploads in the same way as S3
|
|
157
|
+
// Use PutObject method for uploads instead
|
|
158
|
+
this.throwUnsupportedOperationError('CreatePreAuthUploadUrl');
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Create a pre-authenticated download URL
|
|
162
|
+
*/
|
|
163
|
+
async CreatePreAuthDownloadUrl(objectName) {
|
|
164
|
+
try {
|
|
165
|
+
const normalizedPath = this._normalizePath(objectName);
|
|
166
|
+
// Create a temporary download link
|
|
167
|
+
const response = await this._client.filesGetTemporaryLink({
|
|
168
|
+
path: normalizedPath
|
|
169
|
+
});
|
|
170
|
+
return response.result.link;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error('Error creating pre-auth download URL', { objectName, error });
|
|
174
|
+
throw new Error(`Failed to create download URL for: ${objectName}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Move an object
|
|
179
|
+
*/
|
|
180
|
+
async MoveObject(oldObjectName, newObjectName) {
|
|
181
|
+
try {
|
|
182
|
+
const fromPath = this._normalizePath(oldObjectName);
|
|
183
|
+
const toPath = this._normalizePath(newObjectName);
|
|
184
|
+
await this._client.filesMoveV2({
|
|
185
|
+
from_path: fromPath,
|
|
186
|
+
to_path: toPath,
|
|
187
|
+
autorename: false
|
|
188
|
+
});
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
console.error('Error moving object', { oldObjectName, newObjectName, error });
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Delete an object
|
|
198
|
+
*/
|
|
199
|
+
async DeleteObject(objectName) {
|
|
200
|
+
try {
|
|
201
|
+
const normalizedPath = this._normalizePath(objectName);
|
|
202
|
+
await this._client.filesDeleteV2({
|
|
203
|
+
path: normalizedPath
|
|
204
|
+
});
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
// If the path doesn't exist, consider it success for idempotency
|
|
209
|
+
if (error.status === 409 && error.error?.error?.['.tag'] === 'path_lookup') {
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
console.error('Error deleting object', { objectName, error });
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* List objects in a directory
|
|
218
|
+
*/
|
|
219
|
+
async ListObjects(prefix, delimiter = '/') {
|
|
220
|
+
try {
|
|
221
|
+
const normalizedPath = this._normalizePath(prefix);
|
|
222
|
+
const response = await this._client.filesListFolder({
|
|
223
|
+
path: normalizedPath,
|
|
224
|
+
recursive: false,
|
|
225
|
+
include_media_info: false,
|
|
226
|
+
include_deleted: false,
|
|
227
|
+
include_has_explicit_shared_members: false
|
|
228
|
+
});
|
|
229
|
+
const objects = [];
|
|
230
|
+
const prefixes = [];
|
|
231
|
+
// Process entries
|
|
232
|
+
for (const entry of response.result.entries) {
|
|
233
|
+
objects.push(this._convertToMetadata(entry, prefix));
|
|
234
|
+
// If it's a folder, add to prefixes
|
|
235
|
+
if (entry['.tag'] === 'folder') {
|
|
236
|
+
const folderPath = prefix
|
|
237
|
+
? (prefix.endsWith('/') ? `${prefix}${entry.name}` : `${prefix}/${entry.name}`)
|
|
238
|
+
: entry.name;
|
|
239
|
+
prefixes.push(`${folderPath}/`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return { objects, prefixes };
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
console.error('Error listing objects', { prefix, error });
|
|
246
|
+
return { objects: [], prefixes: [] };
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Create a directory
|
|
251
|
+
*/
|
|
252
|
+
async CreateDirectory(directoryPath) {
|
|
253
|
+
try {
|
|
254
|
+
// Remove trailing slash if present
|
|
255
|
+
const normalizedPath = directoryPath.endsWith('/')
|
|
256
|
+
? this._normalizePath(directoryPath.substring(0, directoryPath.length - 1))
|
|
257
|
+
: this._normalizePath(directoryPath);
|
|
258
|
+
await this._client.filesCreateFolderV2({
|
|
259
|
+
path: normalizedPath,
|
|
260
|
+
autorename: false
|
|
261
|
+
});
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
// If folder already exists, consider it success
|
|
266
|
+
if (error.status === 409 && error.error?.error?.['.tag'] === 'path') {
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
console.error('Error creating directory', { directoryPath, error });
|
|
270
|
+
return false;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Delete a directory
|
|
275
|
+
*/
|
|
276
|
+
async DeleteDirectory(directoryPath, recursive = true) {
|
|
277
|
+
try {
|
|
278
|
+
// Remove trailing slash if present
|
|
279
|
+
const normalizedPath = directoryPath.endsWith('/')
|
|
280
|
+
? this._normalizePath(directoryPath.substring(0, directoryPath.length - 1))
|
|
281
|
+
: this._normalizePath(directoryPath);
|
|
282
|
+
// Note: Dropbox API always deletes directories recursively
|
|
283
|
+
// If we want to prevent deleting non-empty dirs, we'd need to check contents first
|
|
284
|
+
if (!recursive) {
|
|
285
|
+
// Check if directory is empty first
|
|
286
|
+
const listing = await this._client.filesListFolder({
|
|
287
|
+
path: normalizedPath,
|
|
288
|
+
recursive: false
|
|
289
|
+
});
|
|
290
|
+
if (listing.result.entries.length > 0) {
|
|
291
|
+
throw new Error('Directory is not empty');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
await this._client.filesDeleteV2({
|
|
295
|
+
path: normalizedPath
|
|
296
|
+
});
|
|
297
|
+
return true;
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
// If the path doesn't exist, consider it success for idempotency
|
|
301
|
+
if (error.status === 409 && error.error?.error?.['.tag'] === 'path_lookup') {
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
console.error('Error deleting directory', { directoryPath, recursive, error });
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Get object metadata
|
|
310
|
+
*/
|
|
311
|
+
async GetObjectMetadata(objectName) {
|
|
312
|
+
try {
|
|
313
|
+
const metadata = await this._getMetadata(objectName);
|
|
314
|
+
// Parse path to get parent path
|
|
315
|
+
const pathParts = objectName.split('/');
|
|
316
|
+
pathParts.pop(); // Remove filename/foldername
|
|
317
|
+
const parentPath = pathParts.join('/');
|
|
318
|
+
return this._convertToMetadata(metadata, parentPath);
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
console.error('Error getting object metadata', { objectName, error });
|
|
322
|
+
throw new Error(`Object not found: ${objectName}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Get an object's contents
|
|
327
|
+
*/
|
|
328
|
+
async GetObject(objectName) {
|
|
329
|
+
try {
|
|
330
|
+
const normalizedPath = this._normalizePath(objectName);
|
|
331
|
+
const response = await this._client.filesDownload({
|
|
332
|
+
path: normalizedPath
|
|
333
|
+
});
|
|
334
|
+
// Extract file content as Buffer
|
|
335
|
+
// Note: In Dropbox SDK, the file content is in response.result.fileBinary
|
|
336
|
+
return Buffer.from(response.result.fileBinary);
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
console.error('Error getting object', { objectName, error });
|
|
340
|
+
throw new Error(`Failed to get object: ${objectName}`);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Upload an object
|
|
345
|
+
*/
|
|
346
|
+
async PutObject(objectName, data, contentType, metadata) {
|
|
347
|
+
try {
|
|
348
|
+
const normalizedPath = this._normalizePath(objectName);
|
|
349
|
+
// For smaller files (<150MB), use simple upload
|
|
350
|
+
if (data.length < 150 * 1024 * 1024) {
|
|
351
|
+
await this._client.filesUpload({
|
|
352
|
+
path: normalizedPath,
|
|
353
|
+
contents: data,
|
|
354
|
+
mode: { '.tag': 'overwrite' },
|
|
355
|
+
autorename: false,
|
|
356
|
+
mute: true
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
// For larger files, use session upload
|
|
361
|
+
const CHUNK_SIZE = 8 * 1024 * 1024; // 8MB chunks
|
|
362
|
+
// Start upload session
|
|
363
|
+
const sessionStart = await this._client.filesUploadSessionStart({
|
|
364
|
+
close: false,
|
|
365
|
+
contents: data.slice(0, CHUNK_SIZE)
|
|
366
|
+
});
|
|
367
|
+
const sessionId = sessionStart.result.session_id;
|
|
368
|
+
let offset = CHUNK_SIZE;
|
|
369
|
+
// Upload the remaining chunks
|
|
370
|
+
while (offset < data.length) {
|
|
371
|
+
const chunk = data.slice(offset, Math.min(offset + CHUNK_SIZE, data.length));
|
|
372
|
+
const isLastChunk = offset + chunk.length >= data.length;
|
|
373
|
+
if (isLastChunk) {
|
|
374
|
+
// Finish the session with the last chunk
|
|
375
|
+
await this._client.filesUploadSessionFinish({
|
|
376
|
+
cursor: {
|
|
377
|
+
session_id: sessionId,
|
|
378
|
+
offset: offset
|
|
379
|
+
},
|
|
380
|
+
commit: {
|
|
381
|
+
path: normalizedPath,
|
|
382
|
+
mode: { '.tag': 'overwrite' },
|
|
383
|
+
autorename: false,
|
|
384
|
+
mute: true
|
|
385
|
+
},
|
|
386
|
+
contents: chunk
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
// Append chunk to session
|
|
391
|
+
await this._client.filesUploadSessionAppendV2({
|
|
392
|
+
cursor: {
|
|
393
|
+
session_id: sessionId,
|
|
394
|
+
offset: offset
|
|
395
|
+
},
|
|
396
|
+
close: false,
|
|
397
|
+
contents: chunk
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
offset += chunk.length;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return true;
|
|
404
|
+
}
|
|
405
|
+
catch (error) {
|
|
406
|
+
console.error('Error putting object', { objectName, error });
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Copy an object
|
|
412
|
+
*/
|
|
413
|
+
async CopyObject(sourceObjectName, destinationObjectName) {
|
|
414
|
+
try {
|
|
415
|
+
const fromPath = this._normalizePath(sourceObjectName);
|
|
416
|
+
const toPath = this._normalizePath(destinationObjectName);
|
|
417
|
+
await this._client.filesCopyV2({
|
|
418
|
+
from_path: fromPath,
|
|
419
|
+
to_path: toPath,
|
|
420
|
+
autorename: false
|
|
421
|
+
});
|
|
422
|
+
return true;
|
|
423
|
+
}
|
|
424
|
+
catch (error) {
|
|
425
|
+
console.error('Error copying object', { sourceObjectName, destinationObjectName, error });
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Check if an object exists
|
|
431
|
+
*/
|
|
432
|
+
async ObjectExists(objectName) {
|
|
433
|
+
try {
|
|
434
|
+
await this._getMetadata(objectName);
|
|
435
|
+
return true;
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
return false;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Check if a directory exists
|
|
443
|
+
*/
|
|
444
|
+
async DirectoryExists(directoryPath) {
|
|
445
|
+
try {
|
|
446
|
+
// Remove trailing slash if present
|
|
447
|
+
const normalizedPath = directoryPath.endsWith('/')
|
|
448
|
+
? directoryPath.substring(0, directoryPath.length - 1)
|
|
449
|
+
: directoryPath;
|
|
450
|
+
const item = await this._getMetadata(normalizedPath);
|
|
451
|
+
return item['.tag'] === 'folder';
|
|
452
|
+
}
|
|
453
|
+
catch (error) {
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
exports.DropboxFileStorage = DropboxFileStorage;
|
|
459
|
+
exports.DropboxFileStorage = DropboxFileStorage = __decorate([
|
|
460
|
+
(0, global_1.RegisterClass)(FileStorageBase_1.FileStorageBase, 'Dropbox Storage'),
|
|
461
|
+
__metadata("design:paramtypes", [])
|
|
462
|
+
], DropboxFileStorage);
|
|
463
|
+
//# sourceMappingURL=DropboxFileStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropboxFileStorage.js","sourceRoot":"","sources":["../../src/drivers/DropboxFileStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { CreatePreAuthUploadUrlPayload, FileStorageBase, StorageListResult, StorageObjectMetadata } from '../generic/FileStorageBase';
|
|
3
|
+
export declare class GoogleDriveFileStorage extends FileStorageBase {
|
|
4
|
+
protected readonly providerName = "Google Drive";
|
|
5
|
+
private _drive;
|
|
6
|
+
private _rootFolderId?;
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* Finds a file or folder by path
|
|
10
|
+
*/
|
|
11
|
+
private _getItemByPath;
|
|
12
|
+
/**
|
|
13
|
+
* Finds a parent folder by path and creates it if it doesn't exist
|
|
14
|
+
*/
|
|
15
|
+
private _getOrCreateParentFolder;
|
|
16
|
+
/**
|
|
17
|
+
* Helper method to convert Google Drive file to StorageObjectMetadata
|
|
18
|
+
*/
|
|
19
|
+
private _fileToMetadata;
|
|
20
|
+
/**
|
|
21
|
+
* PreAuth upload URLs are not directly supported in Google Drive
|
|
22
|
+
*/
|
|
23
|
+
CreatePreAuthUploadUrl(objectName: string): Promise<CreatePreAuthUploadUrlPayload>;
|
|
24
|
+
/**
|
|
25
|
+
* Create a pre-authenticated download URL
|
|
26
|
+
*/
|
|
27
|
+
CreatePreAuthDownloadUrl(objectName: string): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Move an object from one location to another
|
|
30
|
+
*/
|
|
31
|
+
MoveObject(oldObjectName: string, newObjectName: string): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Delete an object
|
|
34
|
+
*/
|
|
35
|
+
DeleteObject(objectName: string): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* List objects in a directory
|
|
38
|
+
*/
|
|
39
|
+
ListObjects(prefix: string, delimiter?: string): Promise<StorageListResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Create a directory
|
|
42
|
+
*/
|
|
43
|
+
CreateDirectory(directoryPath: string): Promise<boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Delete a directory and optionally its contents
|
|
46
|
+
*/
|
|
47
|
+
DeleteDirectory(directoryPath: string, recursive?: boolean): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Get object metadata
|
|
50
|
+
*/
|
|
51
|
+
GetObjectMetadata(objectName: string): Promise<StorageObjectMetadata>;
|
|
52
|
+
/**
|
|
53
|
+
* Get object contents
|
|
54
|
+
*/
|
|
55
|
+
GetObject(objectName: string): Promise<Buffer>;
|
|
56
|
+
/**
|
|
57
|
+
* Upload an object
|
|
58
|
+
*/
|
|
59
|
+
PutObject(objectName: string, data: Buffer, contentType?: string, metadata?: Record<string, string>): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* Copy an object
|
|
62
|
+
*/
|
|
63
|
+
CopyObject(sourceObjectName: string, destinationObjectName: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Check if an object exists
|
|
66
|
+
*/
|
|
67
|
+
ObjectExists(objectName: string): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Check if a directory exists
|
|
70
|
+
*/
|
|
71
|
+
DirectoryExists(directoryPath: string): Promise<boolean>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=GoogleDriveFileStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleDriveFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/GoogleDriveFileStorage.ts"],"names":[],"mappings":";AAIA,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,qBACa,sBAAuB,SAAQ,eAAe;IACzD,SAAS,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IACjD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAS;;IAkC/B;;OAEG;YACW,cAAc;IAgD5B;;OAEG;YACW,wBAAwB;IA6CtC;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACU,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAM/F;;OAEG;IACU,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiC1E;;OAEG;IACU,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCvF;;OAEG;IACU,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B/D;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0CrF;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCrE;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCxF;;OAEG;IACU,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqBlF;;OAEG;IACU,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB3D;;OAEG;IACU,SAAS,CACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC;IAqDnB;;OAEG;IACU,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiClG;;OAEG;IACU,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAatE"}
|