@memberjunction/storage 2.31.0 → 2.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/drivers/AWSFileStorage.d.ts +26 -1
  2. package/dist/drivers/AWSFileStorage.d.ts.map +1 -1
  3. package/dist/drivers/AWSFileStorage.js +287 -13
  4. package/dist/drivers/AWSFileStorage.js.map +1 -1
  5. package/dist/drivers/AzureFileStorage.d.ts +22 -1
  6. package/dist/drivers/AzureFileStorage.d.ts.map +1 -1
  7. package/dist/drivers/AzureFileStorage.js +264 -20
  8. package/dist/drivers/AzureFileStorage.js.map +1 -1
  9. package/dist/drivers/DropboxFileStorage.d.ts +73 -0
  10. package/dist/drivers/DropboxFileStorage.d.ts.map +1 -0
  11. package/dist/drivers/DropboxFileStorage.js +463 -0
  12. package/dist/drivers/DropboxFileStorage.js.map +1 -0
  13. package/dist/drivers/GoogleDriveFileStorage.d.ts +73 -0
  14. package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -0
  15. package/dist/drivers/GoogleDriveFileStorage.js +542 -0
  16. package/dist/drivers/GoogleDriveFileStorage.js.map +1 -0
  17. package/dist/drivers/GoogleFileStorage.d.ts +20 -1
  18. package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
  19. package/dist/drivers/GoogleFileStorage.js +215 -2
  20. package/dist/drivers/GoogleFileStorage.js.map +1 -1
  21. package/dist/drivers/SharePointFileStorage.d.ts +81 -0
  22. package/dist/drivers/SharePointFileStorage.d.ts.map +1 -0
  23. package/dist/drivers/SharePointFileStorage.js +490 -0
  24. package/dist/drivers/SharePointFileStorage.js.map +1 -0
  25. package/dist/generic/FileStorageBase.d.ts +119 -0
  26. package/dist/generic/FileStorageBase.d.ts.map +1 -1
  27. package/dist/generic/FileStorageBase.js +18 -1
  28. package/dist/generic/FileStorageBase.js.map +1 -1
  29. package/dist/index.d.ts +3 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -0
  32. package/dist/index.js.map +1 -1
  33. package/package.json +11 -4
@@ -36,14 +36,31 @@ exports.AzureFileStorage = void 0;
36
36
  const storage_blob_1 = require("@azure/storage-blob");
37
37
  const global_1 = require("@memberjunction/global");
38
38
  const env = __importStar(require("env-var"));
39
+ const mime = __importStar(require("mime-types"));
39
40
  const FileStorageBase_1 = require("../generic/FileStorageBase");
40
41
  let AzureFileStorage = class AzureFileStorage extends FileStorageBase_1.FileStorageBase {
41
42
  constructor() {
42
43
  super();
44
+ this.providerName = 'Azure Blob Storage';
43
45
  this._container = env.get('STORAGE_AZURE_CONTAINER').required().asString();
44
46
  this._accountName = env.get('STORAGE_AZURE_ACCOUNT_NAME').required().asString();
45
47
  const accountKey = env.get('STORAGE_AZURE_ACCOUNT_KEY').required().asString();
46
48
  this._sharedKeyCredential = new storage_blob_1.StorageSharedKeyCredential(this._accountName, accountKey);
49
+ const blobServiceUrl = `https://${this._accountName}.blob.core.windows.net`;
50
+ this._blobServiceClient = new storage_blob_1.BlobServiceClient(blobServiceUrl, this._sharedKeyCredential);
51
+ this._containerClient = this._blobServiceClient.getContainerClient(this._container);
52
+ }
53
+ /**
54
+ * Creates a BlobClient for the specified object
55
+ */
56
+ _getBlobClient(objectName) {
57
+ return this._containerClient.getBlobClient(objectName);
58
+ }
59
+ /**
60
+ * Normalize directory path to ensure it ends with a slash
61
+ */
62
+ _normalizeDirectoryPath(path) {
63
+ return path.endsWith('/') ? path : path + '/';
47
64
  }
48
65
  CreatePreAuthUploadUrl(objectName) {
49
66
  const sasOptions = {
@@ -76,28 +93,255 @@ let AzureFileStorage = class AzureFileStorage extends FileStorageBase_1.FileStor
76
93
  return Promise.resolve(url);
77
94
  }
78
95
  async MoveObject(oldObjectName, newObjectName) {
79
- const sasOptions = {
80
- permissions: storage_blob_1.BlobSASPermissions.parse('r'), // read-only permissions
81
- expiresOn: new Date(new Date().valueOf() + 10 * 60 * 1000), // 10 minutes
82
- protocol: storage_blob_1.SASProtocol.Https,
83
- };
84
- const oldUrl = `https://${this._accountName}.blob.core.windows.net/${this._container}/${oldObjectName}`;
85
- const oldBlobClient = new storage_blob_1.BlobClient(oldUrl, this._sharedKeyCredential);
86
- const sasUrl = await oldBlobClient.generateSasUrl(sasOptions);
87
- const newUrl = `https://${this._accountName}.blob.core.windows.net/${this._container}/${newObjectName}`;
88
- const newBlobClient = new storage_blob_1.BlobClient(newUrl, this._sharedKeyCredential);
89
- const { copyStatus, errorCode } = await newBlobClient.syncCopyFromURL(sasUrl);
90
- if (copyStatus !== 'success') {
91
- throw new Error(`Failed to move the object. Error code: ${errorCode}`);
92
- }
93
- const { succeeded } = await oldBlobClient.deleteIfExists();
94
- return succeeded;
96
+ try {
97
+ // Reuse CopyObject and DeleteObject for moving
98
+ const copied = await this.CopyObject(oldObjectName, newObjectName);
99
+ if (copied) {
100
+ return this.DeleteObject(oldObjectName);
101
+ }
102
+ return false;
103
+ }
104
+ catch (error) {
105
+ console.error('Error moving object in Azure Blob Storage', { oldObjectName, newObjectName });
106
+ console.error(error);
107
+ return false;
108
+ }
95
109
  }
96
110
  async DeleteObject(objectName) {
97
- const url = `https://${this._accountName}.blob.core.windows.net/${this._container}/${objectName}`;
98
- const blobClient = new storage_blob_1.BlobClient(url, this._sharedKeyCredential);
99
- const { succeeded } = await blobClient.deleteIfExists();
100
- return succeeded;
111
+ try {
112
+ const blobClient = this._getBlobClient(objectName);
113
+ const { succeeded } = await blobClient.deleteIfExists();
114
+ return succeeded;
115
+ }
116
+ catch (error) {
117
+ console.error('Error deleting object from Azure Blob Storage', { objectName });
118
+ console.error(error);
119
+ return false;
120
+ }
121
+ }
122
+ async ListObjects(prefix, delimiter = '/') {
123
+ try {
124
+ // Azure doesn't support real directories, so we need to mimic the behavior
125
+ const objects = [];
126
+ const prefixes = new Set();
127
+ // List all blobs under the prefix
128
+ const listOptions = {
129
+ prefix: prefix
130
+ };
131
+ // Get all blobs
132
+ for await (const blob of this._containerClient.listBlobsFlat(listOptions)) {
133
+ const blobName = blob.name;
134
+ // Skip the directory placeholder blob itself
135
+ if (blobName === prefix)
136
+ continue;
137
+ // Extract "directory" from path if using delimiter
138
+ if (delimiter) {
139
+ const pathAfterPrefix = blobName.slice(prefix.length);
140
+ const delimiterIndex = pathAfterPrefix.indexOf(delimiter);
141
+ // If there's a delimiter after the prefix, this is a "directory"
142
+ if (delimiterIndex !== -1) {
143
+ const directoryPath = prefix + pathAfterPrefix.substring(0, delimiterIndex + 1);
144
+ prefixes.add(directoryPath);
145
+ continue; // Skip adding as an object
146
+ }
147
+ }
148
+ // Get the last part of the path as the name
149
+ const pathParts = blobName.split('/');
150
+ const name = pathParts[pathParts.length - 1];
151
+ // Calculate the path
152
+ const path = pathParts.slice(0, -1).join('/');
153
+ objects.push({
154
+ name,
155
+ path,
156
+ fullPath: blobName,
157
+ size: blob.properties.contentLength || 0,
158
+ contentType: blob.properties.contentType || mime.lookup(blobName) || 'application/octet-stream',
159
+ lastModified: blob.properties.lastModified || new Date(),
160
+ isDirectory: blobName.endsWith('/'),
161
+ etag: blob.properties.etag
162
+ });
163
+ }
164
+ return {
165
+ objects,
166
+ prefixes: Array.from(prefixes)
167
+ };
168
+ }
169
+ catch (error) {
170
+ console.error('Error listing objects in Azure Blob Storage', { prefix });
171
+ console.error(error);
172
+ return { objects: [], prefixes: [] };
173
+ }
174
+ }
175
+ async CreateDirectory(directoryPath) {
176
+ try {
177
+ // Azure Blob Storage doesn't have real directories
178
+ // We create a zero-byte blob with a trailing slash to represent a directory
179
+ directoryPath = this._normalizeDirectoryPath(directoryPath);
180
+ const blobClient = this._getBlobClient(directoryPath);
181
+ const blockBlobClient = blobClient.getBlockBlobClient();
182
+ // Using proper typing for Azure's upload method
183
+ await blockBlobClient.upload(Buffer.from('').valueOf(), 0, {
184
+ blobHTTPHeaders: {
185
+ blobContentType: 'application/x-directory'
186
+ }
187
+ });
188
+ return true;
189
+ }
190
+ catch (error) {
191
+ console.error('Error creating directory in Azure Blob Storage', { directoryPath });
192
+ console.error(error);
193
+ return false;
194
+ }
195
+ }
196
+ async DeleteDirectory(directoryPath, recursive = false) {
197
+ try {
198
+ directoryPath = this._normalizeDirectoryPath(directoryPath);
199
+ if (!recursive) {
200
+ // Just delete the directory placeholder
201
+ return this.DeleteObject(directoryPath);
202
+ }
203
+ // For recursive delete, list all blobs under this directory and delete them
204
+ const blobsToDelete = [];
205
+ // List all blobs under the prefix
206
+ const listOptions = {
207
+ prefix: directoryPath
208
+ };
209
+ // Get all blobs to delete
210
+ for await (const blob of this._containerClient.listBlobsFlat(listOptions)) {
211
+ blobsToDelete.push(this._containerClient.getBlobClient(blob.name).delete());
212
+ }
213
+ // Delete all the blobs concurrently
214
+ await Promise.all(blobsToDelete);
215
+ return true;
216
+ }
217
+ catch (error) {
218
+ console.error('Error deleting directory from Azure Blob Storage', { directoryPath, recursive });
219
+ console.error(error);
220
+ return false;
221
+ }
222
+ }
223
+ async GetObjectMetadata(objectName) {
224
+ try {
225
+ const blobClient = this._getBlobClient(objectName);
226
+ const properties = await blobClient.getProperties();
227
+ const pathParts = objectName.split('/');
228
+ const name = pathParts[pathParts.length - 1];
229
+ const path = pathParts.slice(0, -1).join('/');
230
+ return {
231
+ name,
232
+ path,
233
+ fullPath: objectName,
234
+ size: properties.contentLength || 0,
235
+ contentType: properties.contentType || mime.lookup(objectName) || 'application/octet-stream',
236
+ lastModified: properties.lastModified || new Date(),
237
+ isDirectory: objectName.endsWith('/'),
238
+ etag: properties.etag,
239
+ cacheControl: properties.cacheControl,
240
+ customMetadata: properties.metadata
241
+ };
242
+ }
243
+ catch (error) {
244
+ console.error('Error getting object metadata from Azure Blob Storage', { objectName });
245
+ console.error(error);
246
+ throw new Error(`Object not found: ${objectName}`);
247
+ }
248
+ }
249
+ async GetObject(objectName) {
250
+ try {
251
+ const blobClient = this._getBlobClient(objectName);
252
+ const downloadResponse = await blobClient.download();
253
+ if (!downloadResponse.readableStreamBody) {
254
+ throw new Error(`Empty response body for object: ${objectName}`);
255
+ }
256
+ // Read the stream into a buffer
257
+ const chunks = [];
258
+ for await (const chunk of downloadResponse.readableStreamBody) {
259
+ chunks.push(Buffer.from(chunk));
260
+ }
261
+ return Buffer.concat(chunks);
262
+ }
263
+ catch (error) {
264
+ console.error('Error getting object from Azure Blob Storage', { objectName });
265
+ console.error(error);
266
+ throw new Error(`Failed to get object: ${objectName}`);
267
+ }
268
+ }
269
+ async PutObject(objectName, data, contentType, metadata) {
270
+ try {
271
+ const blobClient = this._getBlobClient(objectName);
272
+ const blockBlobClient = blobClient.getBlockBlobClient();
273
+ // Determine content type based on file extension if not provided
274
+ const effectiveContentType = contentType || mime.lookup(objectName) || 'application/octet-stream';
275
+ // Convert buffer to correct type for Azure SDK
276
+ await blockBlobClient.upload(data instanceof Buffer ? data.valueOf() : data, data.length, {
277
+ blobHTTPHeaders: {
278
+ blobContentType: effectiveContentType
279
+ },
280
+ metadata
281
+ });
282
+ return true;
283
+ }
284
+ catch (error) {
285
+ console.error('Error putting object to Azure Blob Storage', { objectName });
286
+ console.error(error);
287
+ return false;
288
+ }
289
+ }
290
+ async CopyObject(sourceObjectName, destinationObjectName) {
291
+ try {
292
+ const sourceBlobClient = this._getBlobClient(sourceObjectName);
293
+ const destinationBlobClient = this._getBlobClient(destinationObjectName);
294
+ // Generate SAS URL for source blob
295
+ const sasOptions = {
296
+ permissions: storage_blob_1.BlobSASPermissions.parse('r'), // read-only permissions
297
+ expiresOn: new Date(new Date().valueOf() + 10 * 60 * 1000), // 10 minutes
298
+ protocol: storage_blob_1.SASProtocol.Https,
299
+ };
300
+ const sasUrl = await sourceBlobClient.generateSasUrl(sasOptions);
301
+ // Copy the blob
302
+ const copyResult = await destinationBlobClient.syncCopyFromURL(sasUrl);
303
+ return copyResult.copyStatus === 'success';
304
+ }
305
+ catch (error) {
306
+ console.error('Error copying object in Azure Blob Storage', { sourceObjectName, destinationObjectName });
307
+ console.error(error);
308
+ return false;
309
+ }
310
+ }
311
+ async ObjectExists(objectName) {
312
+ try {
313
+ const blobClient = this._getBlobClient(objectName);
314
+ return await blobClient.exists();
315
+ }
316
+ catch (error) {
317
+ console.error('Error checking if object exists in Azure Blob Storage', { objectName });
318
+ console.error(error);
319
+ return false;
320
+ }
321
+ }
322
+ async DirectoryExists(directoryPath) {
323
+ try {
324
+ directoryPath = this._normalizeDirectoryPath(directoryPath);
325
+ // Method 1: Check if the directory placeholder exists
326
+ const placeholderExists = await this.ObjectExists(directoryPath);
327
+ if (placeholderExists) {
328
+ return true;
329
+ }
330
+ // Method 2: Check if any objects exist with this prefix
331
+ const listOptions = {
332
+ prefix: directoryPath,
333
+ maxPageSize: 1
334
+ };
335
+ // Get just one blob to check if any exist
336
+ const iterator = this._containerClient.listBlobsFlat(listOptions);
337
+ const response = await iterator.next();
338
+ return !response.done;
339
+ }
340
+ catch (error) {
341
+ console.error('Error checking if directory exists in Azure Blob Storage', { directoryPath });
342
+ console.error(error);
343
+ return false;
344
+ }
101
345
  }
102
346
  };
103
347
  exports.AzureFileStorage = AzureFileStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"AzureFileStorage.js","sourceRoot":"","sources":["../../src/drivers/AzureFileStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AzureFileStorage.js","sourceRoot":"","sources":["../../src/drivers/AzureFileStorage.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 DropboxFileStorage extends FileStorageBase {
4
+ protected readonly providerName = "Dropbox";
5
+ private _client;
6
+ private _rootPath;
7
+ constructor();
8
+ /**
9
+ * Normalize a path to be compatible with Dropbox API
10
+ */
11
+ private _normalizePath;
12
+ /**
13
+ * Get metadata for a file or folder
14
+ */
15
+ private _getMetadata;
16
+ /**
17
+ * Converts a Dropbox file/folder to StorageObjectMetadata
18
+ */
19
+ private _convertToMetadata;
20
+ /**
21
+ * Dropbox doesn't support pre-auth upload URLs directly
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
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
46
+ */
47
+ DeleteDirectory(directoryPath: string, recursive?: boolean): Promise<boolean>;
48
+ /**
49
+ * Get object metadata
50
+ */
51
+ GetObjectMetadata(objectName: string): Promise<StorageObjectMetadata>;
52
+ /**
53
+ * Get an object's 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=DropboxFileStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropboxFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/DropboxFileStorage.ts"],"names":[],"mappings":";AAIA,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,qBACa,kBAAmB,SAAQ,eAAe;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,aAAa;IAC5C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;;IAkC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;YACW,YAAY;IAe1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgD1B;;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;IAgB1E;;OAEG;IACU,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBvF;;OAEG;IACU,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoCrF;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBrE;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCvF;;OAEG;IACU,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgBlF;;OAEG;IACU,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB3D;;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;IAqEnB;;OAEG;IACU,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBlG;;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"}