@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.
- 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/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 +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +11 -4
|
@@ -1,12 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { CreatePreAuthUploadUrlPayload, FileStorageBase, StorageListResult, StorageObjectMetadata } from '../generic/FileStorageBase';
|
|
2
3
|
export declare class AWSFileStorage extends FileStorageBase {
|
|
4
|
+
protected readonly providerName = "AWS S3";
|
|
3
5
|
private _bucket;
|
|
4
6
|
private _keyPrefix;
|
|
5
7
|
private _client;
|
|
6
8
|
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Normalizes the object name by ensuring it has the proper key prefix
|
|
11
|
+
*
|
|
12
|
+
* @param objectName The object name to normalize
|
|
13
|
+
* @returns The normalized object name with the proper prefix
|
|
14
|
+
*/
|
|
15
|
+
private _normalizeKey;
|
|
16
|
+
/**
|
|
17
|
+
* Removes the prefix from a key to get the relative object name
|
|
18
|
+
*
|
|
19
|
+
* @param key The full key including the prefix
|
|
20
|
+
* @returns The object name without the prefix
|
|
21
|
+
*/
|
|
22
|
+
private _removePrefix;
|
|
7
23
|
CreatePreAuthUploadUrl(objectName: string): Promise<CreatePreAuthUploadUrlPayload>;
|
|
8
24
|
CreatePreAuthDownloadUrl(objectName: string): Promise<string>;
|
|
9
25
|
MoveObject(oldObjectName: string, newObjectName: string): Promise<boolean>;
|
|
10
26
|
DeleteObject(objectName: string): Promise<boolean>;
|
|
27
|
+
ListObjects(prefix: string, delimiter?: string): Promise<StorageListResult>;
|
|
28
|
+
CreateDirectory(directoryPath: string): Promise<boolean>;
|
|
29
|
+
DeleteDirectory(directoryPath: string, recursive?: boolean): Promise<boolean>;
|
|
30
|
+
GetObjectMetadata(objectName: string): Promise<StorageObjectMetadata>;
|
|
31
|
+
GetObject(objectName: string): Promise<Buffer>;
|
|
32
|
+
PutObject(objectName: string, data: Buffer, contentType?: string, metadata?: Record<string, string>): Promise<boolean>;
|
|
33
|
+
CopyObject(sourceObjectName: string, destinationObjectName: string): Promise<boolean>;
|
|
34
|
+
ObjectExists(objectName: string): Promise<boolean>;
|
|
35
|
+
DirectoryExists(directoryPath: string): Promise<boolean>;
|
|
11
36
|
}
|
|
12
37
|
//# sourceMappingURL=AWSFileStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/AWSFileStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/AWSFileStorage.ts"],"names":[],"mappings":";AAcA,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,qBACa,cAAe,SAAQ,eAAe;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,YAAY;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAW;;IAmB1B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAOR,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAgBxF,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1E,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAalD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2DxE,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBxD,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAiD3E,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkCrE,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB9C,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;IAwBN,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBrF,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBlD,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA6BtE"}
|
|
@@ -37,10 +37,12 @@ const client_s3_1 = require("@aws-sdk/client-s3");
|
|
|
37
37
|
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
38
38
|
const global_1 = require("@memberjunction/global");
|
|
39
39
|
const env = __importStar(require("env-var"));
|
|
40
|
+
const mime = __importStar(require("mime-types"));
|
|
40
41
|
const FileStorageBase_1 = require("../generic/FileStorageBase");
|
|
41
42
|
let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageBase {
|
|
42
43
|
constructor() {
|
|
43
44
|
super();
|
|
45
|
+
this.providerName = 'AWS S3';
|
|
44
46
|
const region = env.get('STORAGE_AWS_REGION').required().asString();
|
|
45
47
|
this._bucket = env.get('STORAGE_AWS_BUCKET_NAME').required().asString();
|
|
46
48
|
const keyPrefix = env.get('STORAGE_AWS_KEY_PREFIX').default('/').asString();
|
|
@@ -51,44 +53,316 @@ let AWSFileStorage = class AWSFileStorage extends FileStorageBase_1.FileStorageB
|
|
|
51
53
|
};
|
|
52
54
|
this._client = new client_s3_1.S3Client({ region, credentials });
|
|
53
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Normalizes the object name by ensuring it has the proper key prefix
|
|
58
|
+
*
|
|
59
|
+
* @param objectName The object name to normalize
|
|
60
|
+
* @returns The normalized object name with the proper prefix
|
|
61
|
+
*/
|
|
62
|
+
_normalizeKey(objectName) {
|
|
63
|
+
if (objectName.startsWith(this._keyPrefix)) {
|
|
64
|
+
return objectName;
|
|
65
|
+
}
|
|
66
|
+
// Remove any leading slash from the object name to avoid double slashes
|
|
67
|
+
const cleanObjectName = objectName.startsWith('/') ? objectName.substring(1) : objectName;
|
|
68
|
+
return `${this._keyPrefix}${cleanObjectName}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Removes the prefix from a key to get the relative object name
|
|
72
|
+
*
|
|
73
|
+
* @param key The full key including the prefix
|
|
74
|
+
* @returns The object name without the prefix
|
|
75
|
+
*/
|
|
76
|
+
_removePrefix(key) {
|
|
77
|
+
if (key.startsWith(this._keyPrefix)) {
|
|
78
|
+
return key.substring(this._keyPrefix.length);
|
|
79
|
+
}
|
|
80
|
+
return key;
|
|
81
|
+
}
|
|
54
82
|
async CreatePreAuthUploadUrl(objectName) {
|
|
55
|
-
const key =
|
|
56
|
-
|
|
83
|
+
const key = this._normalizeKey(objectName);
|
|
84
|
+
// Determine content type based on file extension
|
|
85
|
+
const contentType = mime.lookup(objectName) || 'application/octet-stream';
|
|
86
|
+
const command = new client_s3_1.PutObjectCommand({
|
|
87
|
+
Bucket: this._bucket,
|
|
88
|
+
Key: key,
|
|
89
|
+
ContentType: contentType
|
|
90
|
+
});
|
|
57
91
|
const UploadUrl = await (0, s3_request_presigner_1.getSignedUrl)(this._client, command, { expiresIn: 10 * 60 }); // 10 minutes
|
|
58
92
|
return Promise.resolve({ UploadUrl });
|
|
59
93
|
}
|
|
60
94
|
CreatePreAuthDownloadUrl(objectName) {
|
|
61
|
-
const key =
|
|
95
|
+
const key = this._normalizeKey(objectName);
|
|
62
96
|
const command = new client_s3_1.GetObjectCommand({ Bucket: this._bucket, Key: key });
|
|
63
97
|
return (0, s3_request_presigner_1.getSignedUrl)(this._client, command, { expiresIn: 10 * 60 }); // 10 minutes
|
|
64
98
|
}
|
|
65
99
|
async MoveObject(oldObjectName, newObjectName) {
|
|
66
|
-
|
|
67
|
-
|
|
100
|
+
return this.CopyObject(oldObjectName, newObjectName)
|
|
101
|
+
.then(copied => {
|
|
102
|
+
if (copied) {
|
|
103
|
+
return this.DeleteObject(oldObjectName);
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
async DeleteObject(objectName) {
|
|
109
|
+
const key = this._normalizeKey(objectName);
|
|
110
|
+
const command = new client_s3_1.DeleteObjectCommand({ Bucket: this._bucket, Key: key });
|
|
111
|
+
try {
|
|
112
|
+
await this._client.send(command);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
console.error('Error deleting object from S3 storage', { key, bucket: this._bucket });
|
|
117
|
+
console.error(e);
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async ListObjects(prefix, delimiter = '/') {
|
|
122
|
+
const normalizedPrefix = this._normalizeKey(prefix);
|
|
123
|
+
const command = new client_s3_1.ListObjectsV2Command({
|
|
124
|
+
Bucket: this._bucket,
|
|
125
|
+
Prefix: normalizedPrefix,
|
|
126
|
+
Delimiter: delimiter
|
|
127
|
+
});
|
|
128
|
+
try {
|
|
129
|
+
const response = await this._client.send(command);
|
|
130
|
+
const objects = [];
|
|
131
|
+
const prefixes = [];
|
|
132
|
+
// Process regular objects
|
|
133
|
+
if (response.Contents) {
|
|
134
|
+
for (const item of response.Contents) {
|
|
135
|
+
if (!item.Key)
|
|
136
|
+
continue;
|
|
137
|
+
// Skip the directory placeholder object itself
|
|
138
|
+
if (item.Key === normalizedPrefix)
|
|
139
|
+
continue;
|
|
140
|
+
const relativePath = this._removePrefix(item.Key);
|
|
141
|
+
const pathParts = relativePath.split('/');
|
|
142
|
+
const name = pathParts[pathParts.length - 1];
|
|
143
|
+
const path = pathParts.slice(0, -1).join('/');
|
|
144
|
+
objects.push({
|
|
145
|
+
name,
|
|
146
|
+
path,
|
|
147
|
+
fullPath: relativePath,
|
|
148
|
+
size: item.Size || 0,
|
|
149
|
+
contentType: mime.lookup(item.Key) || 'application/octet-stream',
|
|
150
|
+
lastModified: item.LastModified || new Date(),
|
|
151
|
+
isDirectory: item.Key.endsWith('/'),
|
|
152
|
+
etag: item.ETag
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Process prefixes (directories)
|
|
157
|
+
if (response.CommonPrefixes) {
|
|
158
|
+
for (const item of response.CommonPrefixes) {
|
|
159
|
+
if (item.Prefix) {
|
|
160
|
+
const relativePrefix = this._removePrefix(item.Prefix);
|
|
161
|
+
prefixes.push(relativePrefix);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return { objects, prefixes };
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
console.error('Error listing objects in S3 storage', { prefix: normalizedPrefix, bucket: this._bucket });
|
|
169
|
+
console.error(e);
|
|
170
|
+
return { objects: [], prefixes: [] };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async CreateDirectory(directoryPath) {
|
|
174
|
+
// S3 doesn't have real directories, so we create a zero-byte object with a trailing slash
|
|
175
|
+
if (!directoryPath.endsWith('/')) {
|
|
176
|
+
directoryPath = `${directoryPath}/`;
|
|
177
|
+
}
|
|
178
|
+
const key = this._normalizeKey(directoryPath);
|
|
179
|
+
const command = new client_s3_1.PutObjectCommand({
|
|
180
|
+
Bucket: this._bucket,
|
|
181
|
+
Key: key,
|
|
182
|
+
Body: '',
|
|
183
|
+
ContentType: 'application/x-directory'
|
|
184
|
+
});
|
|
185
|
+
try {
|
|
186
|
+
await this._client.send(command);
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
console.error('Error creating directory in S3 storage', { key, bucket: this._bucket });
|
|
191
|
+
console.error(e);
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async DeleteDirectory(directoryPath, recursive = false) {
|
|
196
|
+
if (!directoryPath.endsWith('/')) {
|
|
197
|
+
directoryPath = `${directoryPath}/`;
|
|
198
|
+
}
|
|
199
|
+
const key = this._normalizeKey(directoryPath);
|
|
200
|
+
if (!recursive) {
|
|
201
|
+
// Just delete the directory placeholder
|
|
202
|
+
return this.DeleteObject(directoryPath);
|
|
203
|
+
}
|
|
204
|
+
// For recursive delete, we need to list all objects under this prefix and delete them
|
|
205
|
+
try {
|
|
206
|
+
const command = new client_s3_1.ListObjectsV2Command({
|
|
207
|
+
Bucket: this._bucket,
|
|
208
|
+
Prefix: key
|
|
209
|
+
});
|
|
210
|
+
const response = await this._client.send(command);
|
|
211
|
+
if (!response.Contents || response.Contents.length === 0) {
|
|
212
|
+
// Empty directory, just delete the directory placeholder
|
|
213
|
+
return this.DeleteObject(directoryPath);
|
|
214
|
+
}
|
|
215
|
+
// Delete up to 1000 objects at a time (S3 limit)
|
|
216
|
+
const deleteObjectsCommand = new client_s3_1.DeleteObjectsCommand({
|
|
217
|
+
Bucket: this._bucket,
|
|
218
|
+
Delete: {
|
|
219
|
+
Objects: response.Contents
|
|
220
|
+
.filter(item => item.Key)
|
|
221
|
+
.map(item => ({ Key: item.Key }))
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
await this._client.send(deleteObjectsCommand);
|
|
225
|
+
// If we have more than 1000 objects, we'll need pagination, but that's beyond this implementation
|
|
226
|
+
// For a real-world implementation, you'd want to handle pagination for directories with more than 1000 objects
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
catch (e) {
|
|
230
|
+
console.error('Error deleting directory recursively from S3 storage', { key, bucket: this._bucket });
|
|
231
|
+
console.error(e);
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
async GetObjectMetadata(objectName) {
|
|
236
|
+
const key = this._normalizeKey(objectName);
|
|
237
|
+
const command = new client_s3_1.HeadObjectCommand({
|
|
238
|
+
Bucket: this._bucket,
|
|
239
|
+
Key: key
|
|
240
|
+
});
|
|
241
|
+
try {
|
|
242
|
+
const response = await this._client.send(command);
|
|
243
|
+
const relativePath = this._removePrefix(key);
|
|
244
|
+
const pathParts = relativePath.split('/');
|
|
245
|
+
const name = pathParts[pathParts.length - 1];
|
|
246
|
+
const path = pathParts.slice(0, -1).join('/');
|
|
247
|
+
return {
|
|
248
|
+
name,
|
|
249
|
+
path,
|
|
250
|
+
fullPath: relativePath,
|
|
251
|
+
size: response.ContentLength || 0,
|
|
252
|
+
contentType: response.ContentType || 'application/octet-stream',
|
|
253
|
+
lastModified: response.LastModified || new Date(),
|
|
254
|
+
isDirectory: key.endsWith('/'),
|
|
255
|
+
etag: response.ETag,
|
|
256
|
+
cacheControl: response.CacheControl,
|
|
257
|
+
customMetadata: response.Metadata
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
console.error('Error getting object metadata from S3 storage', { key, bucket: this._bucket });
|
|
262
|
+
console.error(e);
|
|
263
|
+
throw new Error(`Object not found: ${objectName}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async GetObject(objectName) {
|
|
267
|
+
const key = this._normalizeKey(objectName);
|
|
268
|
+
const command = new client_s3_1.GetObjectCommand({
|
|
269
|
+
Bucket: this._bucket,
|
|
270
|
+
Key: key
|
|
271
|
+
});
|
|
272
|
+
try {
|
|
273
|
+
const response = await this._client.send(command);
|
|
274
|
+
if (!response.Body) {
|
|
275
|
+
throw new Error(`Empty response body for object: ${objectName}`);
|
|
276
|
+
}
|
|
277
|
+
// Convert readable stream to buffer
|
|
278
|
+
return Buffer.from(await response.Body.transformToByteArray());
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
console.error('Error getting object from S3 storage', { key, bucket: this._bucket });
|
|
282
|
+
console.error(e);
|
|
283
|
+
throw new Error(`Failed to get object: ${objectName}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
async PutObject(objectName, data, contentType, metadata) {
|
|
287
|
+
const key = this._normalizeKey(objectName);
|
|
288
|
+
// Determine content type based on file extension if not provided
|
|
289
|
+
const effectiveContentType = contentType || mime.lookup(objectName) || 'application/octet-stream';
|
|
290
|
+
const command = new client_s3_1.PutObjectCommand({
|
|
291
|
+
Bucket: this._bucket,
|
|
292
|
+
Key: key,
|
|
293
|
+
Body: data,
|
|
294
|
+
ContentType: effectiveContentType,
|
|
295
|
+
Metadata: metadata
|
|
296
|
+
});
|
|
297
|
+
try {
|
|
298
|
+
await this._client.send(command);
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
catch (e) {
|
|
302
|
+
console.error('Error putting object to S3 storage', { key, bucket: this._bucket });
|
|
303
|
+
console.error(e);
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
async CopyObject(sourceObjectName, destinationObjectName) {
|
|
308
|
+
const sourceKey = this._normalizeKey(sourceObjectName);
|
|
309
|
+
const destinationKey = this._normalizeKey(destinationObjectName);
|
|
68
310
|
const copyCommand = new client_s3_1.CopyObjectCommand({
|
|
69
311
|
Bucket: this._bucket,
|
|
70
|
-
CopySource: `/${this._bucket}/${
|
|
71
|
-
Key:
|
|
312
|
+
CopySource: `/${this._bucket}/${sourceKey}`,
|
|
313
|
+
Key: destinationKey,
|
|
72
314
|
});
|
|
73
315
|
try {
|
|
74
316
|
await this._client.send(copyCommand);
|
|
317
|
+
return true;
|
|
75
318
|
}
|
|
76
319
|
catch (e) {
|
|
77
|
-
console.error('Error copying object in S3 storage', {
|
|
320
|
+
console.error('Error copying object in S3 storage', {
|
|
321
|
+
sourceKey,
|
|
322
|
+
destinationKey,
|
|
323
|
+
bucket: this._bucket
|
|
324
|
+
});
|
|
78
325
|
console.error(e);
|
|
79
326
|
return false;
|
|
80
327
|
}
|
|
81
|
-
return this.DeleteObject(oldObjectName);
|
|
82
328
|
}
|
|
83
|
-
async
|
|
84
|
-
const key =
|
|
85
|
-
const command = new client_s3_1.
|
|
329
|
+
async ObjectExists(objectName) {
|
|
330
|
+
const key = this._normalizeKey(objectName);
|
|
331
|
+
const command = new client_s3_1.HeadObjectCommand({
|
|
332
|
+
Bucket: this._bucket,
|
|
333
|
+
Key: key
|
|
334
|
+
});
|
|
86
335
|
try {
|
|
87
336
|
await this._client.send(command);
|
|
88
337
|
return true;
|
|
89
338
|
}
|
|
90
339
|
catch (e) {
|
|
91
|
-
|
|
340
|
+
// If the object doesn't exist, HeadObject will throw an error
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
async DirectoryExists(directoryPath) {
|
|
345
|
+
if (!directoryPath.endsWith('/')) {
|
|
346
|
+
directoryPath = `${directoryPath}/`;
|
|
347
|
+
}
|
|
348
|
+
const key = this._normalizeKey(directoryPath);
|
|
349
|
+
// Method 1: Check if the directory placeholder exists
|
|
350
|
+
const placeholderExists = await this.ObjectExists(directoryPath);
|
|
351
|
+
if (placeholderExists) {
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
// Method 2: Check if any objects exist with this prefix
|
|
355
|
+
const command = new client_s3_1.ListObjectsV2Command({
|
|
356
|
+
Bucket: this._bucket,
|
|
357
|
+
Prefix: key,
|
|
358
|
+
MaxKeys: 1
|
|
359
|
+
});
|
|
360
|
+
try {
|
|
361
|
+
const response = await this._client.send(command);
|
|
362
|
+
return !!(response.Contents && response.Contents.length > 0);
|
|
363
|
+
}
|
|
364
|
+
catch (e) {
|
|
365
|
+
console.error('Error checking if directory exists in S3 storage', { key, bucket: this._bucket });
|
|
92
366
|
console.error(e);
|
|
93
367
|
return false;
|
|
94
368
|
}
|
|
@@ -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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"}
|
|
@@ -1,12 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { CreatePreAuthUploadUrlPayload, FileStorageBase, StorageListResult, StorageObjectMetadata } from '../generic/FileStorageBase';
|
|
2
3
|
export declare class AzureFileStorage extends FileStorageBase {
|
|
4
|
+
protected readonly providerName = "Azure Blob Storage";
|
|
3
5
|
private _sharedKeyCredential;
|
|
4
6
|
private _container;
|
|
5
7
|
private _accountName;
|
|
8
|
+
private _containerClient;
|
|
9
|
+
private _blobServiceClient;
|
|
6
10
|
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Creates a BlobClient for the specified object
|
|
13
|
+
*/
|
|
14
|
+
private _getBlobClient;
|
|
15
|
+
/**
|
|
16
|
+
* Normalize directory path to ensure it ends with a slash
|
|
17
|
+
*/
|
|
18
|
+
private _normalizeDirectoryPath;
|
|
7
19
|
CreatePreAuthUploadUrl(objectName: string): Promise<CreatePreAuthUploadUrlPayload>;
|
|
8
20
|
CreatePreAuthDownloadUrl(objectName: string): Promise<string>;
|
|
9
21
|
MoveObject(oldObjectName: string, newObjectName: string): Promise<boolean>;
|
|
10
22
|
DeleteObject(objectName: string): Promise<boolean>;
|
|
23
|
+
ListObjects(prefix: string, delimiter?: string): Promise<StorageListResult>;
|
|
24
|
+
CreateDirectory(directoryPath: string): Promise<boolean>;
|
|
25
|
+
DeleteDirectory(directoryPath: string, recursive?: boolean): Promise<boolean>;
|
|
26
|
+
GetObjectMetadata(objectName: string): Promise<StorageObjectMetadata>;
|
|
27
|
+
GetObject(objectName: string): Promise<Buffer>;
|
|
28
|
+
PutObject(objectName: string, data: Buffer, contentType?: string, metadata?: Record<string, string>): Promise<boolean>;
|
|
29
|
+
CopyObject(sourceObjectName: string, destinationObjectName: string): Promise<boolean>;
|
|
30
|
+
ObjectExists(objectName: string): Promise<boolean>;
|
|
31
|
+
DirectoryExists(directoryPath: string): Promise<boolean>;
|
|
11
32
|
}
|
|
12
33
|
//# sourceMappingURL=AzureFileStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/AzureFileStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AzureFileStorage.d.ts","sourceRoot":"","sources":["../../src/drivers/AzureFileStorage.ts"],"names":[],"mappings":";AAiBA,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,qBACa,gBAAiB,SAAQ,eAAe;IACnD,SAAS,CAAC,QAAQ,CAAC,YAAY,wBAAwB;IACvD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;;IAoB9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAIxB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAoBlF,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvD,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1E,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6DxE,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBxD,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAiC3E,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA4BrE,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB9C,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;IAwBN,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBrF,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlD,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA2BtE"}
|