@memberjunction/storage 2.31.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.
Files changed (37) 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/BoxFileStorage.d.ts +73 -0
  10. package/dist/drivers/BoxFileStorage.d.ts.map +1 -0
  11. package/dist/drivers/BoxFileStorage.js +517 -0
  12. package/dist/drivers/BoxFileStorage.js.map +1 -0
  13. package/dist/drivers/DropboxFileStorage.d.ts +73 -0
  14. package/dist/drivers/DropboxFileStorage.d.ts.map +1 -0
  15. package/dist/drivers/DropboxFileStorage.js +463 -0
  16. package/dist/drivers/DropboxFileStorage.js.map +1 -0
  17. package/dist/drivers/GoogleDriveFileStorage.d.ts +73 -0
  18. package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -0
  19. package/dist/drivers/GoogleDriveFileStorage.js +542 -0
  20. package/dist/drivers/GoogleDriveFileStorage.js.map +1 -0
  21. package/dist/drivers/GoogleFileStorage.d.ts +20 -1
  22. package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
  23. package/dist/drivers/GoogleFileStorage.js +215 -2
  24. package/dist/drivers/GoogleFileStorage.js.map +1 -1
  25. package/dist/drivers/SharePointFileStorage.d.ts +81 -0
  26. package/dist/drivers/SharePointFileStorage.d.ts.map +1 -0
  27. package/dist/drivers/SharePointFileStorage.js +490 -0
  28. package/dist/drivers/SharePointFileStorage.js.map +1 -0
  29. package/dist/generic/FileStorageBase.d.ts +119 -0
  30. package/dist/generic/FileStorageBase.d.ts.map +1 -1
  31. package/dist/generic/FileStorageBase.js +18 -1
  32. package/dist/generic/FileStorageBase.js.map +1 -1
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -0
  36. package/dist/index.js.map +1 -1
  37. package/package.json +12 -4
@@ -36,20 +36,41 @@ exports.GoogleFileStorage = void 0;
36
36
  const storage_1 = require("@google-cloud/storage");
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 GoogleFileStorage = class GoogleFileStorage extends FileStorageBase_1.FileStorageBase {
41
42
  constructor() {
42
43
  super();
44
+ this.providerName = 'Google Cloud Storage';
43
45
  const credentials = env.get('STORAGE_GOOGLE_KEY_JSON').required().asJsonObject();
44
46
  this._client = new storage_1.Storage({ credentials });
45
47
  this._bucket = env.get('STORAGE_GOOGLE_BUCKET_NAME').required().asString();
46
48
  }
49
+ /**
50
+ * Normalizes directory paths to ensure they end with a slash
51
+ */
52
+ _normalizeDirectoryPath(path) {
53
+ return path.endsWith('/') ? path : path + '/';
54
+ }
55
+ /**
56
+ * Converts metadata to a string map for consistent handling
57
+ */
58
+ _convertMetadataToStringMap(metadata) {
59
+ if (!metadata)
60
+ return {};
61
+ const result = {};
62
+ for (const key in metadata) {
63
+ result[key] = String(metadata[key]);
64
+ }
65
+ return result;
66
+ }
47
67
  async CreatePreAuthUploadUrl(objectName) {
48
68
  const file = this._client.bucket(this._bucket).file(objectName);
49
69
  const options = {
50
70
  version: 'v4',
51
71
  action: 'write',
52
72
  expires: Date.now() + 10 * 60 * 1000, // 10 mins
73
+ contentType: mime.lookup(objectName) || 'application/octet-stream'
53
74
  };
54
75
  const [UploadUrl] = await file.getSignedUrl(options);
55
76
  return { UploadUrl };
@@ -77,8 +98,8 @@ let GoogleFileStorage = class GoogleFileStorage extends FileStorageBase_1.FileSt
77
98
  }
78
99
  async DeleteObject(objectName) {
79
100
  try {
80
- const [response] = await this._client.bucket(this._bucket).file(objectName).delete();
81
- return /^2\d{2}/.test(String(response.statusCode));
101
+ await this._client.bucket(this._bucket).file(objectName).delete({ ignoreNotFound: true });
102
+ return true; // ignoreNotFound ensures this returns true even if the file doesn't exist
82
103
  }
83
104
  catch (e) {
84
105
  console.error('Error deleting object from Google storage', { file: objectName, bucket: this._bucket });
@@ -86,6 +107,198 @@ let GoogleFileStorage = class GoogleFileStorage extends FileStorageBase_1.FileSt
86
107
  return false;
87
108
  }
88
109
  }
110
+ async ListObjects(prefix, delimiter = '/') {
111
+ try {
112
+ const options = {
113
+ prefix: prefix,
114
+ delimiter: delimiter
115
+ };
116
+ const [files, , apiResponse] = await this._client.bucket(this._bucket).getFiles(options);
117
+ const objects = [];
118
+ let prefixes = [];
119
+ // Process files (objects)
120
+ for (const file of files) {
121
+ const [metadata] = await file.getMetadata();
122
+ // Skip directory placeholders when listing their contents
123
+ if (file.name === prefix)
124
+ continue;
125
+ const pathParts = file.name.split('/');
126
+ const name = pathParts[pathParts.length - 1];
127
+ const path = pathParts.slice(0, -1).join('/');
128
+ objects.push({
129
+ name,
130
+ path,
131
+ fullPath: file.name,
132
+ size: parseInt(String(metadata.size)) || 0,
133
+ contentType: metadata.contentType || mime.lookup(file.name) || 'application/octet-stream',
134
+ lastModified: new Date(metadata.updated),
135
+ isDirectory: file.name.endsWith('/'),
136
+ etag: String(metadata.etag),
137
+ cacheControl: String(metadata.cacheControl || ''),
138
+ customMetadata: this._convertMetadataToStringMap(metadata.metadata)
139
+ });
140
+ }
141
+ // Extract directory prefixes
142
+ if (apiResponse && apiResponse.prefixes) {
143
+ prefixes = apiResponse.prefixes;
144
+ }
145
+ return { objects, prefixes };
146
+ }
147
+ catch (e) {
148
+ console.error('Error listing objects in Google storage', { prefix, bucket: this._bucket });
149
+ console.error(e);
150
+ return { objects: [], prefixes: [] };
151
+ }
152
+ }
153
+ async CreateDirectory(directoryPath) {
154
+ try {
155
+ directoryPath = this._normalizeDirectoryPath(directoryPath);
156
+ // GCS doesn't have real directories, so we create a zero-byte file with the directory name
157
+ const file = this._client.bucket(this._bucket).file(directoryPath);
158
+ await file.save('', {
159
+ metadata: {
160
+ contentType: 'application/x-directory'
161
+ }
162
+ });
163
+ return true;
164
+ }
165
+ catch (e) {
166
+ console.error('Error creating directory in Google storage', { directoryPath, bucket: this._bucket });
167
+ console.error(e);
168
+ return false;
169
+ }
170
+ }
171
+ async DeleteDirectory(directoryPath, recursive = false) {
172
+ try {
173
+ directoryPath = this._normalizeDirectoryPath(directoryPath);
174
+ if (!recursive) {
175
+ // Just delete the directory placeholder
176
+ return this.DeleteObject(directoryPath);
177
+ }
178
+ // For recursive delete, list all files under this prefix and delete them
179
+ const options = {
180
+ prefix: directoryPath
181
+ };
182
+ const [files] = await this._client.bucket(this._bucket).getFiles(options);
183
+ // Delete all files concurrently
184
+ const deletePromises = files.map(file => file.delete());
185
+ await Promise.all(deletePromises);
186
+ return true;
187
+ }
188
+ catch (e) {
189
+ console.error('Error deleting directory from Google storage', { directoryPath, recursive, bucket: this._bucket });
190
+ console.error(e);
191
+ return false;
192
+ }
193
+ }
194
+ async GetObjectMetadata(objectName) {
195
+ try {
196
+ const file = this._client.bucket(this._bucket).file(objectName);
197
+ const [metadata] = await file.getMetadata();
198
+ const pathParts = objectName.split('/');
199
+ const name = pathParts[pathParts.length - 1];
200
+ const path = pathParts.slice(0, -1).join('/');
201
+ return {
202
+ name,
203
+ path,
204
+ fullPath: objectName,
205
+ size: parseInt(String(metadata.size)) || 0,
206
+ contentType: metadata.contentType || mime.lookup(objectName) || 'application/octet-stream',
207
+ lastModified: new Date(metadata.updated),
208
+ isDirectory: objectName.endsWith('/'),
209
+ etag: String(metadata.etag || ''),
210
+ cacheControl: String(metadata.cacheControl || ''),
211
+ customMetadata: this._convertMetadataToStringMap(metadata.metadata)
212
+ };
213
+ }
214
+ catch (e) {
215
+ console.error('Error getting object metadata from Google storage', { objectName, bucket: this._bucket });
216
+ console.error(e);
217
+ throw new Error(`Object not found: ${objectName}`);
218
+ }
219
+ }
220
+ async GetObject(objectName) {
221
+ try {
222
+ const file = this._client.bucket(this._bucket).file(objectName);
223
+ const [bufferContent] = await file.download();
224
+ return bufferContent;
225
+ }
226
+ catch (e) {
227
+ console.error('Error getting object from Google storage', { objectName, bucket: this._bucket });
228
+ console.error(e);
229
+ throw new Error(`Failed to get object: ${objectName}`);
230
+ }
231
+ }
232
+ async PutObject(objectName, data, contentType, metadata) {
233
+ try {
234
+ const file = this._client.bucket(this._bucket).file(objectName);
235
+ // Determine content type based on file extension if not provided
236
+ const effectiveContentType = contentType || mime.lookup(objectName) || 'application/octet-stream';
237
+ await file.save(data, {
238
+ metadata: {
239
+ contentType: effectiveContentType,
240
+ metadata
241
+ }
242
+ });
243
+ return true;
244
+ }
245
+ catch (e) {
246
+ console.error('Error putting object to Google storage', { objectName, bucket: this._bucket });
247
+ console.error(e);
248
+ return false;
249
+ }
250
+ }
251
+ async CopyObject(sourceObjectName, destinationObjectName) {
252
+ try {
253
+ const sourceFile = this._client.bucket(this._bucket).file(sourceObjectName);
254
+ const destinationFile = this._client.bucket(this._bucket).file(destinationObjectName);
255
+ await sourceFile.copy(destinationFile);
256
+ return true;
257
+ }
258
+ catch (e) {
259
+ console.error('Error copying object in Google storage', {
260
+ sourceObjectName,
261
+ destinationObjectName,
262
+ bucket: this._bucket
263
+ });
264
+ console.error(e);
265
+ return false;
266
+ }
267
+ }
268
+ async ObjectExists(objectName) {
269
+ try {
270
+ const file = this._client.bucket(this._bucket).file(objectName);
271
+ const [exists] = await file.exists();
272
+ return exists;
273
+ }
274
+ catch (e) {
275
+ console.error('Error checking if object exists in Google storage', { objectName, bucket: this._bucket });
276
+ console.error(e);
277
+ return false;
278
+ }
279
+ }
280
+ async DirectoryExists(directoryPath) {
281
+ try {
282
+ directoryPath = this._normalizeDirectoryPath(directoryPath);
283
+ // Method 1: Check if directory placeholder exists
284
+ const placeholderExists = await this.ObjectExists(directoryPath);
285
+ if (placeholderExists) {
286
+ return true;
287
+ }
288
+ // Method 2: Check if any objects with this prefix exist
289
+ const options = {
290
+ prefix: directoryPath,
291
+ maxResults: 1
292
+ };
293
+ const [files] = await this._client.bucket(this._bucket).getFiles(options);
294
+ return files.length > 0;
295
+ }
296
+ catch (e) {
297
+ console.error('Error checking if directory exists in Google storage', { directoryPath, bucket: this._bucket });
298
+ console.error(e);
299
+ return false;
300
+ }
301
+ }
89
302
  };
90
303
  exports.GoogleFileStorage = GoogleFileStorage;
91
304
  exports.GoogleFileStorage = GoogleFileStorage = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleFileStorage.js","sourceRoot":"","sources":["../../src/drivers/GoogleFileStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleFileStorage.js","sourceRoot":"","sources":["../../src/drivers/GoogleFileStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /// <reference types="node" />
2
+ import { CreatePreAuthUploadUrlPayload, FileStorageBase, StorageListResult, StorageObjectMetadata } from '../generic/FileStorageBase';
3
+ export declare class SharePointFileStorage extends FileStorageBase {
4
+ protected readonly providerName = "SharePoint";
5
+ private _client;
6
+ private _driveId;
7
+ private _siteId;
8
+ private _rootFolderId?;
9
+ constructor();
10
+ /**
11
+ * Get the parent item ID for a given path
12
+ *
13
+ * @param path The path to get the parent folder for
14
+ * @returns The parent folder ID
15
+ */
16
+ private _getParentFolderIdByPath;
17
+ /**
18
+ * Get an item by path
19
+ *
20
+ * @param path The path of the item
21
+ * @returns The item
22
+ */
23
+ private _getItemByPath;
24
+ /**
25
+ * Convert a SharePoint item to a StorageObjectMetadata object
26
+ */
27
+ private _itemToMetadata;
28
+ /**
29
+ * Create a pre-authenticated upload URL is not directly supported in SharePoint/OneDrive
30
+ */
31
+ CreatePreAuthUploadUrl(objectName: string): Promise<CreatePreAuthUploadUrlPayload>;
32
+ /**
33
+ * Create a pre-authenticated download URL for an object
34
+ */
35
+ CreatePreAuthDownloadUrl(objectName: string): Promise<string>;
36
+ /**
37
+ * Move an object from one location to another
38
+ */
39
+ MoveObject(oldObjectName: string, newObjectName: string): Promise<boolean>;
40
+ /**
41
+ * Delete an object
42
+ */
43
+ DeleteObject(objectName: string): Promise<boolean>;
44
+ /**
45
+ * List objects in a given directory
46
+ */
47
+ ListObjects(prefix: string, delimiter?: string): Promise<StorageListResult>;
48
+ /**
49
+ * Create a directory
50
+ */
51
+ CreateDirectory(directoryPath: string): Promise<boolean>;
52
+ /**
53
+ * Delete a directory and optionally its contents
54
+ */
55
+ DeleteDirectory(directoryPath: string, recursive?: boolean): Promise<boolean>;
56
+ /**
57
+ * Get object metadata
58
+ */
59
+ GetObjectMetadata(objectName: string): Promise<StorageObjectMetadata>;
60
+ /**
61
+ * Get an object's contents
62
+ */
63
+ GetObject(objectName: string): Promise<Buffer>;
64
+ /**
65
+ * Upload an object directly
66
+ */
67
+ PutObject(objectName: string, data: Buffer, contentType?: string, metadata?: Record<string, string>): Promise<boolean>;
68
+ /**
69
+ * Copy an object
70
+ */
71
+ CopyObject(sourceObjectName: string, destinationObjectName: string): Promise<boolean>;
72
+ /**
73
+ * Check if an object exists
74
+ */
75
+ ObjectExists(objectName: string): Promise<boolean>;
76
+ /**
77
+ * Check if a directory exists
78
+ */
79
+ DirectoryExists(directoryPath: string): Promise<boolean>;
80
+ }
81
+ //# sourceMappingURL=SharePointFileStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharePointFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/SharePointFileStorage.ts"],"names":[],"mappings":";AAKA,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AA0DpC,qBACa,qBAAsB,SAAQ,eAAe;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,gBAAgB;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC,CAAS;;IAqB/B;;;;;OAKG;YACW,wBAAwB;IAwBtC;;;;;OAKG;YACW,cAAc;IAsB5B;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;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;IAmB1E;;OAEG;IACU,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BvF;;OAEG;IACU,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgCxF;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BrE;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BxF;;OAEG;IACU,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUlF;;OAEG;IACU,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB3D;;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;IAmDnB;;OAEG;IACU,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BlG;;OAEG;IACU,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc/D;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBtE"}