@memberjunction/storage 2.38.0 → 2.40.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.
Files changed (38) hide show
  1. package/dist/drivers/AWSFileStorage.d.ts +360 -4
  2. package/dist/drivers/AWSFileStorage.d.ts.map +1 -1
  3. package/dist/drivers/AWSFileStorage.js +357 -4
  4. package/dist/drivers/AWSFileStorage.js.map +1 -1
  5. package/dist/drivers/AzureFileStorage.d.ts +362 -2
  6. package/dist/drivers/AzureFileStorage.d.ts.map +1 -1
  7. package/dist/drivers/AzureFileStorage.js +357 -2
  8. package/dist/drivers/AzureFileStorage.js.map +1 -1
  9. package/dist/drivers/BoxFileStorage.d.ts +539 -20
  10. package/dist/drivers/BoxFileStorage.d.ts.map +1 -1
  11. package/dist/drivers/BoxFileStorage.js +521 -20
  12. package/dist/drivers/BoxFileStorage.js.map +1 -1
  13. package/dist/drivers/DropboxFileStorage.d.ts +437 -15
  14. package/dist/drivers/DropboxFileStorage.d.ts.map +1 -1
  15. package/dist/drivers/DropboxFileStorage.js +431 -15
  16. package/dist/drivers/DropboxFileStorage.js.map +1 -1
  17. package/dist/drivers/GoogleDriveFileStorage.d.ts +342 -16
  18. package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -1
  19. package/dist/drivers/GoogleDriveFileStorage.js +340 -16
  20. package/dist/drivers/GoogleDriveFileStorage.js.map +1 -1
  21. package/dist/drivers/GoogleFileStorage.d.ts +358 -2
  22. package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
  23. package/dist/drivers/GoogleFileStorage.js +356 -2
  24. package/dist/drivers/GoogleFileStorage.js.map +1 -1
  25. package/dist/drivers/SharePointFileStorage.d.ts +434 -20
  26. package/dist/drivers/SharePointFileStorage.d.ts.map +1 -1
  27. package/dist/drivers/SharePointFileStorage.js +453 -22
  28. package/dist/drivers/SharePointFileStorage.js.map +1 -1
  29. package/dist/generic/FileStorageBase.d.ts +326 -108
  30. package/dist/generic/FileStorageBase.d.ts.map +1 -1
  31. package/dist/generic/FileStorageBase.js +54 -6
  32. package/dist/generic/FileStorageBase.js.map +1 -1
  33. package/dist/util.d.ts +125 -18
  34. package/dist/util.d.ts.map +1 -1
  35. package/dist/util.js +125 -18
  36. package/dist/util.js.map +1 -1
  37. package/package.json +4 -4
  38. package/readme.md +211 -1
@@ -39,9 +39,45 @@ const global_1 = require("@memberjunction/global");
39
39
  const env = __importStar(require("env-var"));
40
40
  const mime = __importStar(require("mime-types"));
41
41
  const FileStorageBase_1 = require("../generic/FileStorageBase");
42
+ /**
43
+ * AWS S3 implementation of the FileStorageBase interface.
44
+ *
45
+ * This class provides methods for interacting with Amazon S3 as a file storage provider.
46
+ * It implements all the abstract methods defined in FileStorageBase and handles AWS-specific
47
+ * authentication, authorization, and file operations.
48
+ *
49
+ * It requires the following environment variables to be set:
50
+ * - STORAGE_AWS_REGION: The AWS region (e.g., 'us-east-1')
51
+ * - STORAGE_AWS_BUCKET_NAME: The S3 bucket name
52
+ * - STORAGE_AWS_ACCESS_KEY_ID: The AWS access key ID
53
+ * - STORAGE_AWS_SECRET_ACCESS_KEY: The AWS secret access key
54
+ * - STORAGE_AWS_KEY_PREFIX: (Optional) Prefix for all object keys, defaults to '/'
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * // Create an instance of AWSFileStorage
59
+ * const s3Storage = new AWSFileStorage();
60
+ *
61
+ * // Generate a pre-authenticated upload URL
62
+ * const { UploadUrl } = await s3Storage.CreatePreAuthUploadUrl('documents/report.pdf');
63
+ *
64
+ * // Generate a pre-authenticated download URL
65
+ * const downloadUrl = await s3Storage.CreatePreAuthDownloadUrl('documents/report.pdf');
66
+ *
67
+ * // List files in a directory
68
+ * const files = await s3Storage.ListObjects('documents/');
69
+ * ```
70
+ */
42
71
  let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageBase {
72
+ /**
73
+ * Creates a new instance of AWSFileStorage.
74
+ *
75
+ * Initializes the connection to AWS S3 using environment variables.
76
+ * Throws an error if any required environment variables are missing.
77
+ */
43
78
  constructor() {
44
79
  super();
80
+ /** The name of this storage provider, used in error messages */
45
81
  this.providerName = 'AWS S3';
46
82
  const region = env.get('STORAGE_AWS_REGION').required().asString();
47
83
  this._bucket = env.get('STORAGE_AWS_BUCKET_NAME').required().asString();
@@ -54,10 +90,15 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
54
90
  this._client = new client_s3_1.S3Client({ region, credentials });
55
91
  }
56
92
  /**
57
- * Normalizes the object name by ensuring it has the proper key prefix
93
+ * Normalizes the object name by ensuring it has the proper key prefix.
58
94
  *
59
- * @param objectName The object name to normalize
95
+ * This is a helper method used internally to ensure all object keys have
96
+ * the configured prefix. It handles cases where the object name already
97
+ * includes the prefix or has leading slashes.
98
+ *
99
+ * @param objectName - The object name to normalize
60
100
  * @returns The normalized object name with the proper prefix
101
+ * @private
61
102
  */
62
103
  _normalizeKey(objectName) {
63
104
  if (objectName.startsWith(this._keyPrefix)) {
@@ -68,10 +109,15 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
68
109
  return `${this._keyPrefix}${cleanObjectName}`;
69
110
  }
70
111
  /**
71
- * Removes the prefix from a key to get the relative object name
112
+ * Removes the prefix from a key to get the relative object name.
113
+ *
114
+ * This is a helper method used internally to convert a full S3 key
115
+ * (including the prefix) back to the relative object name that
116
+ * clients will recognize.
72
117
  *
73
- * @param key The full key including the prefix
118
+ * @param key - The full key including the prefix
74
119
  * @returns The object name without the prefix
120
+ * @private
75
121
  */
76
122
  _removePrefix(key) {
77
123
  if (key.startsWith(this._keyPrefix)) {
@@ -79,6 +125,25 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
79
125
  }
80
126
  return key;
81
127
  }
128
+ /**
129
+ * Creates a pre-authenticated upload URL for an object in S3.
130
+ *
131
+ * This method generates a pre-signed URL that allows for uploading
132
+ * an object to S3 without needing AWS credentials. The URL is valid
133
+ * for 10 minutes and includes the content type based on the file extension.
134
+ *
135
+ * @param objectName - The name of the object to upload (including any path/directory)
136
+ * @returns A Promise resolving to an object with the upload URL
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * // Generate a pre-authenticated upload URL for a PDF file
141
+ * const { UploadUrl } = await s3Storage.CreatePreAuthUploadUrl('documents/report.pdf');
142
+ *
143
+ * // The URL can be used with fetch or other HTTP clients to upload the file
144
+ * console.log(UploadUrl);
145
+ * ```
146
+ */
82
147
  async CreatePreAuthUploadUrl(objectName) {
83
148
  const key = this._normalizeKey(objectName);
84
149
  // Determine content type based on file extension
@@ -91,11 +156,57 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
91
156
  const UploadUrl = await (0, s3_request_presigner_1.getSignedUrl)(this._client, command, { expiresIn: 10 * 60 }); // 10 minutes
92
157
  return Promise.resolve({ UploadUrl });
93
158
  }
159
+ /**
160
+ * Creates a pre-authenticated download URL for an object in S3.
161
+ *
162
+ * This method generates a pre-signed URL that allows for downloading
163
+ * an object from S3 without needing AWS credentials. The URL is valid
164
+ * for 10 minutes and can be shared with clients.
165
+ *
166
+ * @param objectName - The name of the object to download (including any path/directory)
167
+ * @returns A Promise resolving to the download URL
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * // Generate a pre-authenticated download URL for a PDF file
172
+ * const downloadUrl = await s3Storage.CreatePreAuthDownloadUrl('documents/report.pdf');
173
+ *
174
+ * // The URL can be shared with users or used in applications for direct download
175
+ * console.log(downloadUrl);
176
+ * ```
177
+ */
94
178
  CreatePreAuthDownloadUrl(objectName) {
95
179
  const key = this._normalizeKey(objectName);
96
180
  const command = new client_s3_1.GetObjectCommand({ Bucket: this._bucket, Key: key });
97
181
  return (0, s3_request_presigner_1.getSignedUrl)(this._client, command, { expiresIn: 10 * 60 }); // 10 minutes
98
182
  }
183
+ /**
184
+ * Moves an object from one location to another within S3.
185
+ *
186
+ * Since S3 doesn't provide a native move operation, this method
187
+ * implements move as a copy followed by a delete operation.
188
+ * It first copies the object to the new location, and if successful,
189
+ * deletes the object from the original location.
190
+ *
191
+ * @param oldObjectName - The current name/path of the object
192
+ * @param newObjectName - The new name/path for the object
193
+ * @returns A Promise resolving to a boolean indicating success
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * // Move a file from drafts to published folder
198
+ * const success = await s3Storage.MoveObject(
199
+ * 'drafts/report.docx',
200
+ * 'published/final-report.docx'
201
+ * );
202
+ *
203
+ * if (success) {
204
+ * console.log('File successfully moved');
205
+ * } else {
206
+ * console.log('Failed to move file');
207
+ * }
208
+ * ```
209
+ */
99
210
  async MoveObject(oldObjectName, newObjectName) {
100
211
  return this.CopyObject(oldObjectName, newObjectName)
101
212
  .then(copied => {
@@ -105,6 +216,27 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
105
216
  return false;
106
217
  });
107
218
  }
219
+ /**
220
+ * Deletes an object from S3.
221
+ *
222
+ * This method attempts to delete the specified object. It returns true
223
+ * if the operation was successful, false otherwise.
224
+ *
225
+ * @param objectName - The name of the object to delete (including any path/directory)
226
+ * @returns A Promise resolving to a boolean indicating success
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * // Delete a temporary file
231
+ * const deleted = await s3Storage.DeleteObject('temp/report-draft.pdf');
232
+ *
233
+ * if (deleted) {
234
+ * console.log('File successfully deleted');
235
+ * } else {
236
+ * console.log('Failed to delete file');
237
+ * }
238
+ * ```
239
+ */
108
240
  async DeleteObject(objectName) {
109
241
  const key = this._normalizeKey(objectName);
110
242
  const command = new client_s3_1.DeleteObjectCommand({ Bucket: this._bucket, Key: key });
@@ -118,6 +250,33 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
118
250
  return false;
119
251
  }
120
252
  }
253
+ /**
254
+ * Lists objects with the specified prefix in S3.
255
+ *
256
+ * This method returns a list of objects (files) and common prefixes (directories)
257
+ * under the specified path prefix. It uses the S3 ListObjectsV2 API which supports
258
+ * delimiter-based hierarchy simulation.
259
+ *
260
+ * @param prefix - The path prefix to list objects from (e.g., 'documents/')
261
+ * @param delimiter - The character used to simulate directory structure, defaults to '/'
262
+ * @returns A Promise resolving to a StorageListResult containing objects and prefixes
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * // List all files and directories in the documents folder
267
+ * const result = await s3Storage.ListObjects('documents/');
268
+ *
269
+ * // Process files
270
+ * for (const file of result.objects) {
271
+ * console.log(`File: ${file.name}, Size: ${file.size}, Type: ${file.contentType}`);
272
+ * }
273
+ *
274
+ * // Process subdirectories
275
+ * for (const dir of result.prefixes) {
276
+ * console.log(`Directory: ${dir}`);
277
+ * }
278
+ * ```
279
+ */
121
280
  async ListObjects(prefix, delimiter = '/') {
122
281
  const normalizedPrefix = this._normalizeKey(prefix);
123
282
  const command = new client_s3_1.ListObjectsV2Command({
@@ -170,6 +329,28 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
170
329
  return { objects: [], prefixes: [] };
171
330
  }
172
331
  }
332
+ /**
333
+ * Creates a directory (virtual) in S3.
334
+ *
335
+ * Since S3 doesn't have a native directory concept, this method creates
336
+ * a zero-byte object with a trailing slash to simulate a directory.
337
+ * The object has a special content type to indicate it's a directory.
338
+ *
339
+ * @param directoryPath - The path of the directory to create
340
+ * @returns A Promise resolving to a boolean indicating success
341
+ *
342
+ * @example
343
+ * ```typescript
344
+ * // Create a new directory structure
345
+ * const created = await s3Storage.CreateDirectory('documents/reports/annual/');
346
+ *
347
+ * if (created) {
348
+ * console.log('Directory created successfully');
349
+ * } else {
350
+ * console.log('Failed to create directory');
351
+ * }
352
+ * ```
353
+ */
173
354
  async CreateDirectory(directoryPath) {
174
355
  // S3 doesn't have real directories, so we create a zero-byte object with a trailing slash
175
356
  if (!directoryPath.endsWith('/')) {
@@ -192,6 +373,31 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
192
373
  return false;
193
374
  }
194
375
  }
376
+ /**
377
+ * Deletes a directory (virtual) and optionally its contents from S3.
378
+ *
379
+ * For non-recursive deletion, this method simply deletes the directory
380
+ * placeholder object. For recursive deletion, it lists all objects with
381
+ * the directory path as prefix and deletes them using the DeleteObjects API,
382
+ * which allows for deleting up to 1000 objects in a single request.
383
+ *
384
+ * Note: This implementation doesn't handle pagination for directories with
385
+ * more than 1000 objects. In a production environment, you might want to
386
+ * enhance this to handle such cases.
387
+ *
388
+ * @param directoryPath - The path of the directory to delete
389
+ * @param recursive - If true, deletes all contents recursively (default: false)
390
+ * @returns A Promise resolving to a boolean indicating success
391
+ *
392
+ * @example
393
+ * ```typescript
394
+ * // Delete an empty directory
395
+ * const deleted = await s3Storage.DeleteDirectory('documents/temp/');
396
+ *
397
+ * // Delete a directory and all its contents
398
+ * const recursivelyDeleted = await s3Storage.DeleteDirectory('documents/old_projects/', true);
399
+ * ```
400
+ */
195
401
  async DeleteDirectory(directoryPath, recursive = false) {
196
402
  if (!directoryPath.endsWith('/')) {
197
403
  directoryPath = `${directoryPath}/`;
@@ -232,6 +438,29 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
232
438
  return false;
233
439
  }
234
440
  }
441
+ /**
442
+ * Retrieves metadata for a specific object in S3.
443
+ *
444
+ * This method fetches the properties of an object using the HeadObject API,
445
+ * which doesn't download the object content. This is more efficient for
446
+ * checking file attributes like size, content type, and last modified date.
447
+ *
448
+ * @param objectName - The name of the object to get metadata for
449
+ * @returns A Promise resolving to a StorageObjectMetadata object
450
+ * @throws Error if the object doesn't exist or cannot be accessed
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * try {
455
+ * const metadata = await s3Storage.GetObjectMetadata('documents/report.pdf');
456
+ * console.log(`File: ${metadata.name}`);
457
+ * console.log(`Size: ${metadata.size} bytes`);
458
+ * console.log(`Last modified: ${metadata.lastModified}`);
459
+ * } catch (error) {
460
+ * console.error('File does not exist or cannot be accessed');
461
+ * }
462
+ * ```
463
+ */
235
464
  async GetObjectMetadata(objectName) {
236
465
  const key = this._normalizeKey(objectName);
237
466
  const command = new client_s3_1.HeadObjectCommand({
@@ -263,6 +492,28 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
263
492
  throw new Error(`Object not found: ${objectName}`);
264
493
  }
265
494
  }
495
+ /**
496
+ * Downloads an object's content from S3.
497
+ *
498
+ * This method retrieves the full content of an object using the GetObject API
499
+ * and returns it as a Buffer for processing in memory.
500
+ *
501
+ * @param objectName - The name of the object to download
502
+ * @returns A Promise resolving to a Buffer containing the object's data
503
+ * @throws Error if the object doesn't exist or cannot be downloaded
504
+ *
505
+ * @example
506
+ * ```typescript
507
+ * try {
508
+ * const content = await s3Storage.GetObject('documents/config.json');
509
+ * // Parse the JSON content
510
+ * const config = JSON.parse(content.toString('utf8'));
511
+ * console.log('Configuration loaded:', config);
512
+ * } catch (error) {
513
+ * console.error('Failed to download file:', error.message);
514
+ * }
515
+ * ```
516
+ */
266
517
  async GetObject(objectName) {
267
518
  const key = this._normalizeKey(objectName);
268
519
  const command = new client_s3_1.GetObjectCommand({
@@ -283,6 +534,36 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
283
534
  throw new Error(`Failed to get object: ${objectName}`);
284
535
  }
285
536
  }
537
+ /**
538
+ * Uploads data to an object in S3.
539
+ *
540
+ * This method directly uploads a Buffer of data to an object with the specified name.
541
+ * It's useful for server-side operations where you already have the data in memory.
542
+ *
543
+ * @param objectName - The name to assign to the uploaded object
544
+ * @param data - The Buffer containing the data to upload
545
+ * @param contentType - Optional MIME type for the object (inferred from name if not provided)
546
+ * @param metadata - Optional key-value pairs of custom metadata to associate with the object
547
+ * @returns A Promise resolving to a boolean indicating success
548
+ *
549
+ * @example
550
+ * ```typescript
551
+ * // Upload a text file
552
+ * const content = Buffer.from('Hello, World!', 'utf8');
553
+ * const uploaded = await s3Storage.PutObject(
554
+ * 'documents/hello.txt',
555
+ * content,
556
+ * 'text/plain',
557
+ * { author: 'John Doe', department: 'Engineering' }
558
+ * );
559
+ *
560
+ * if (uploaded) {
561
+ * console.log('File uploaded successfully');
562
+ * } else {
563
+ * console.log('Failed to upload file');
564
+ * }
565
+ * ```
566
+ */
286
567
  async PutObject(objectName, data, contentType, metadata) {
287
568
  const key = this._normalizeKey(objectName);
288
569
  // Determine content type based on file extension if not provided
@@ -304,6 +585,31 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
304
585
  return false;
305
586
  }
306
587
  }
588
+ /**
589
+ * Copies an object within S3.
590
+ *
591
+ * This method creates a copy of an object at a new location without removing the original.
592
+ * It uses the CopyObject API, which allows for copying objects within the same bucket.
593
+ *
594
+ * @param sourceObjectName - The name of the object to copy
595
+ * @param destinationObjectName - The name to assign to the copied object
596
+ * @returns A Promise resolving to a boolean indicating success
597
+ *
598
+ * @example
599
+ * ```typescript
600
+ * // Create a backup copy of an important file
601
+ * const copied = await s3Storage.CopyObject(
602
+ * 'documents/contract.pdf',
603
+ * 'backups/contract_2024-05-16.pdf'
604
+ * );
605
+ *
606
+ * if (copied) {
607
+ * console.log('File copied successfully');
608
+ * } else {
609
+ * console.log('Failed to copy file');
610
+ * }
611
+ * ```
612
+ */
307
613
  async CopyObject(sourceObjectName, destinationObjectName) {
308
614
  const sourceKey = this._normalizeKey(sourceObjectName);
309
615
  const destinationKey = this._normalizeKey(destinationObjectName);
@@ -326,6 +632,29 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
326
632
  return false;
327
633
  }
328
634
  }
635
+ /**
636
+ * Checks if an object exists in S3.
637
+ *
638
+ * This method verifies the existence of an object using the HeadObject API,
639
+ * which doesn't download the object content. This is efficient for validation purposes.
640
+ *
641
+ * @param objectName - The name of the object to check
642
+ * @returns A Promise resolving to a boolean indicating if the object exists
643
+ *
644
+ * @example
645
+ * ```typescript
646
+ * // Check if a file exists before attempting to use it
647
+ * const exists = await s3Storage.ObjectExists('documents/report.pdf');
648
+ *
649
+ * if (exists) {
650
+ * console.log('File exists, proceeding with download');
651
+ * const content = await s3Storage.GetObject('documents/report.pdf');
652
+ * // Process the content...
653
+ * } else {
654
+ * console.log('File does not exist');
655
+ * }
656
+ * ```
657
+ */
329
658
  async ObjectExists(objectName) {
330
659
  const key = this._normalizeKey(objectName);
331
660
  const command = new client_s3_1.HeadObjectCommand({
@@ -341,6 +670,30 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
341
670
  return false;
342
671
  }
343
672
  }
673
+ /**
674
+ * Checks if a directory (virtual) exists in S3.
675
+ *
676
+ * Since S3 doesn't have a native directory concept, this method checks for either:
677
+ * 1. The existence of a directory placeholder object (zero-byte object with trailing slash)
678
+ * 2. The existence of any objects with the directory path as a prefix
679
+ *
680
+ * @param directoryPath - The path of the directory to check
681
+ * @returns A Promise resolving to a boolean indicating if the directory exists
682
+ *
683
+ * @example
684
+ * ```typescript
685
+ * // Check if a directory exists before trying to save files to it
686
+ * const exists = await s3Storage.DirectoryExists('documents/reports/');
687
+ *
688
+ * if (!exists) {
689
+ * console.log('Directory does not exist, creating it first');
690
+ * await s3Storage.CreateDirectory('documents/reports/');
691
+ * }
692
+ *
693
+ * // Now safe to use the directory
694
+ * await s3Storage.PutObject('documents/reports/new-report.pdf', fileData);
695
+ * ```
696
+ */
344
697
  async DirectoryExists(directoryPath) {
345
698
  if (!directoryPath.endsWith('/')) {
346
699
  directoryPath = `${directoryPath}/`;
@@ -1 +1 @@
1
- {"version":3,"file":"AWSFileStorage.js","sourceRoot":"","sources":["../../src/drivers/AWSFileStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AWSFileStorage.js","sourceRoot":"","sources":["../../src/drivers/AWSFileStorage.ts"],"names":[],"mappings":"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"}