express-storage 1.0.0 → 1.1.2
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/README.md +519 -348
- package/dist/drivers/azure.driver.d.ts +88 -0
- package/dist/drivers/azure.driver.d.ts.map +1 -0
- package/dist/drivers/azure.driver.js +367 -0
- package/dist/drivers/azure.driver.js.map +1 -0
- package/dist/drivers/base.driver.d.ts +125 -24
- package/dist/drivers/base.driver.d.ts.map +1 -1
- package/dist/drivers/base.driver.js +248 -62
- package/dist/drivers/base.driver.js.map +1 -1
- package/dist/drivers/gcs.driver.d.ts +60 -13
- package/dist/drivers/gcs.driver.d.ts.map +1 -1
- package/dist/drivers/gcs.driver.js +242 -41
- package/dist/drivers/gcs.driver.js.map +1 -1
- package/dist/drivers/local.driver.d.ts +89 -12
- package/dist/drivers/local.driver.d.ts.map +1 -1
- package/dist/drivers/local.driver.js +533 -45
- package/dist/drivers/local.driver.js.map +1 -1
- package/dist/drivers/s3.driver.d.ts +64 -13
- package/dist/drivers/s3.driver.d.ts.map +1 -1
- package/dist/drivers/s3.driver.js +269 -41
- package/dist/drivers/s3.driver.js.map +1 -1
- package/dist/factory/driver.factory.d.ts +35 -29
- package/dist/factory/driver.factory.d.ts.map +1 -1
- package/dist/factory/driver.factory.js +119 -59
- package/dist/factory/driver.factory.js.map +1 -1
- package/dist/index.d.ts +23 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -46
- package/dist/index.js.map +1 -1
- package/dist/storage-manager.d.ts +205 -52
- package/dist/storage-manager.d.ts.map +1 -1
- package/dist/storage-manager.js +644 -73
- package/dist/storage-manager.js.map +1 -1
- package/dist/types/storage.types.d.ts +243 -18
- package/dist/types/storage.types.d.ts.map +1 -1
- package/dist/utils/config.utils.d.ts +28 -4
- package/dist/utils/config.utils.d.ts.map +1 -1
- package/dist/utils/config.utils.js +121 -47
- package/dist/utils/config.utils.js.map +1 -1
- package/dist/utils/file.utils.d.ts +111 -14
- package/dist/utils/file.utils.d.ts.map +1 -1
- package/dist/utils/file.utils.js +215 -32
- package/dist/utils/file.utils.js.map +1 -1
- package/package.json +51 -27
- package/dist/drivers/oci.driver.d.ts +0 -37
- package/dist/drivers/oci.driver.d.ts.map +0 -1
- package/dist/drivers/oci.driver.js +0 -84
- package/dist/drivers/oci.driver.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.driver.js","sourceRoot":"","sources":["../../src/drivers/local.driver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local.driver.js","sourceRoot":"","sources":["../../src/drivers/local.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,89 @@
|
|
|
1
1
|
import { BaseStorageDriver } from './base.driver.js';
|
|
2
|
-
import { FileUploadResult, PresignedUrlResult } from '../types/storage.types.js';
|
|
2
|
+
import { FileUploadResult, PresignedUrlResult, StorageConfig, BlobValidationOptions, BlobValidationResult, ListFilesResult, UploadOptions } from '../types/storage.types.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* S3StorageDriver - Handles file operations with Amazon S3.
|
|
5
|
+
*
|
|
6
|
+
* Supports two authentication methods:
|
|
7
|
+
* 1. Explicit credentials (AWS_ACCESS_KEY + AWS_SECRET_KEY)
|
|
8
|
+
* 2. IAM roles (when running on AWS infrastructure)
|
|
9
|
+
*
|
|
10
|
+
* If you don't provide credentials, the AWS SDK automatically uses
|
|
11
|
+
* IAM roles, environment variables, or the shared credentials file.
|
|
5
12
|
*/
|
|
6
13
|
export declare class S3StorageDriver extends BaseStorageDriver {
|
|
7
14
|
private s3Client;
|
|
8
15
|
private bucketName;
|
|
9
16
|
private region;
|
|
10
|
-
constructor(config:
|
|
17
|
+
constructor(config: StorageConfig);
|
|
11
18
|
/**
|
|
12
|
-
*
|
|
19
|
+
* Uploads a file directly to S3.
|
|
20
|
+
* Handles both memory and disk storage from Multer.
|
|
21
|
+
*
|
|
22
|
+
* For large files (>100MB), uses streaming multipart upload to reduce
|
|
23
|
+
* memory usage and improve reliability.
|
|
13
24
|
*/
|
|
14
|
-
upload(file: Express.Multer.File): Promise<FileUploadResult>;
|
|
25
|
+
upload(file: Express.Multer.File, options?: UploadOptions): Promise<FileUploadResult>;
|
|
15
26
|
/**
|
|
16
|
-
*
|
|
27
|
+
* Uploads a large file using streaming multipart upload.
|
|
28
|
+
*
|
|
29
|
+
* This method uses the @aws-sdk/lib-storage Upload class which handles
|
|
30
|
+
* multipart uploads automatically. It's more memory-efficient for large
|
|
31
|
+
* files as it streams data in chunks rather than loading everything into memory.
|
|
17
32
|
*/
|
|
18
|
-
|
|
33
|
+
private uploadWithStream;
|
|
19
34
|
/**
|
|
20
|
-
*
|
|
35
|
+
* Creates a presigned URL for uploading directly to S3.
|
|
36
|
+
*
|
|
37
|
+
* The URL enforces:
|
|
38
|
+
* - Exact content type (baked into the signature)
|
|
39
|
+
* - Exact file size (if provided)
|
|
40
|
+
*
|
|
41
|
+
* Clients that try to upload different content will get a 403.
|
|
42
|
+
*/
|
|
43
|
+
generateUploadUrl(fileName: string, contentType?: string, fileSize?: number): Promise<PresignedUrlResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a presigned URL for downloading/viewing a file.
|
|
21
46
|
*/
|
|
22
47
|
generateViewUrl(fileName: string): Promise<PresignedUrlResult>;
|
|
23
48
|
/**
|
|
24
|
-
*
|
|
49
|
+
* Deletes a file from S3.
|
|
50
|
+
* Returns false if the file doesn't exist, throws on real errors.
|
|
25
51
|
*/
|
|
26
52
|
delete(fileName: string): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Confirms an upload and optionally validates the file.
|
|
55
|
+
*
|
|
56
|
+
* For S3, validation is optional since constraints are enforced at URL level.
|
|
57
|
+
* But you can still use this to verify the file matches expectations.
|
|
58
|
+
*/
|
|
59
|
+
validateAndConfirmUpload(reference: string, options?: BlobValidationOptions): Promise<BlobValidationResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Lists files in the bucket with optional prefix filtering and pagination.
|
|
62
|
+
*
|
|
63
|
+
* Note: S3's list API doesn't return content types. Use validateAndConfirmUpload()
|
|
64
|
+
* if you need content type information for specific files.
|
|
65
|
+
*/
|
|
66
|
+
listFiles(prefix?: string, maxResults?: number, continuationToken?: string): Promise<ListFilesResult>;
|
|
27
67
|
}
|
|
28
68
|
/**
|
|
29
|
-
*
|
|
69
|
+
* S3PresignedStorageDriver - S3 driver that returns presigned URLs from upload().
|
|
70
|
+
*
|
|
71
|
+
* Use this when you want clients to upload directly to S3 without
|
|
72
|
+
* the file passing through your server.
|
|
30
73
|
*/
|
|
31
74
|
export declare class S3PresignedStorageDriver extends S3StorageDriver {
|
|
32
|
-
constructor(config:
|
|
75
|
+
constructor(config: StorageConfig);
|
|
33
76
|
/**
|
|
34
|
-
*
|
|
77
|
+
* Instead of uploading the file, returns a presigned URL for the client to use.
|
|
78
|
+
*
|
|
79
|
+
* The returned fileUrl is the presigned upload URL.
|
|
80
|
+
* After the client uploads, use validateAndConfirmUpload() to get a view URL.
|
|
81
|
+
*
|
|
82
|
+
* Note: The `options` parameter (metadata, cacheControl, etc.) is NOT applied
|
|
83
|
+
* when using presigned uploads. These options must be set by the client when
|
|
84
|
+
* making the actual upload request to S3, or configured via bucket policies.
|
|
85
|
+
* For server-side uploads with full options support, use the regular 's3' driver.
|
|
35
86
|
*/
|
|
36
|
-
upload(file: Express.Multer.File): Promise<FileUploadResult>;
|
|
87
|
+
upload(file: Express.Multer.File, _options?: UploadOptions): Promise<FileUploadResult>;
|
|
37
88
|
}
|
|
38
89
|
//# sourceMappingURL=s3.driver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAY,MAAM,2BAA2B,CAAC;AAGvL;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,aAAa;IAqBjC;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6D3F;;;;;;OAMG;YACW,gBAAgB;IAyD9B;;;;;;;;OAQG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuC/G;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwBpE;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgChD;;;;;OAKG;IACY,wBAAwB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IAqEhC;;;;;OAKG;IACG,SAAS,CACb,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,GAAE,MAAa,EACzB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,eAAe,CAAC;CAwC5B;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,eAAe;gBAC/C,MAAM,EAAE,aAAa;IAIjC;;;;;;;;;;OAUG;IACY,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA2BtG"}
|
|
@@ -1,64 +1,153 @@
|
|
|
1
|
-
import { S3Client, PutObjectCommand, DeleteObjectCommand, GetObjectCommand } from '@aws-sdk/client-s3';
|
|
1
|
+
import { S3Client, PutObjectCommand, DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, ListObjectsV2Command } from '@aws-sdk/client-s3';
|
|
2
|
+
import { Upload } from '@aws-sdk/lib-storage';
|
|
2
3
|
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
3
4
|
import { BaseStorageDriver } from './base.driver.js';
|
|
4
5
|
/**
|
|
5
|
-
*
|
|
6
|
+
* S3StorageDriver - Handles file operations with Amazon S3.
|
|
7
|
+
*
|
|
8
|
+
* Supports two authentication methods:
|
|
9
|
+
* 1. Explicit credentials (AWS_ACCESS_KEY + AWS_SECRET_KEY)
|
|
10
|
+
* 2. IAM roles (when running on AWS infrastructure)
|
|
11
|
+
*
|
|
12
|
+
* If you don't provide credentials, the AWS SDK automatically uses
|
|
13
|
+
* IAM roles, environment variables, or the shared credentials file.
|
|
6
14
|
*/
|
|
7
15
|
export class S3StorageDriver extends BaseStorageDriver {
|
|
8
16
|
constructor(config) {
|
|
9
17
|
super(config);
|
|
10
18
|
this.bucketName = config.bucketName;
|
|
11
19
|
this.region = config.awsRegion;
|
|
12
|
-
|
|
20
|
+
const s3Options = {
|
|
13
21
|
region: this.region,
|
|
14
|
-
|
|
22
|
+
};
|
|
23
|
+
// Only set explicit credentials if provided — otherwise use IAM/default chain
|
|
24
|
+
if (config.awsAccessKey && config.awsSecretKey) {
|
|
25
|
+
s3Options.credentials = {
|
|
15
26
|
accessKeyId: config.awsAccessKey,
|
|
16
27
|
secretAccessKey: config.awsSecretKey,
|
|
17
|
-
}
|
|
18
|
-
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
this.s3Client = new S3Client(s3Options);
|
|
19
31
|
}
|
|
20
32
|
/**
|
|
21
|
-
*
|
|
33
|
+
* Uploads a file directly to S3.
|
|
34
|
+
* Handles both memory and disk storage from Multer.
|
|
35
|
+
*
|
|
36
|
+
* For large files (>100MB), uses streaming multipart upload to reduce
|
|
37
|
+
* memory usage and improve reliability.
|
|
22
38
|
*/
|
|
23
|
-
async upload(file) {
|
|
39
|
+
async upload(file, options) {
|
|
24
40
|
try {
|
|
25
|
-
// Validate file
|
|
26
41
|
const validationErrors = this.validateFile(file);
|
|
27
42
|
if (validationErrors.length > 0) {
|
|
28
43
|
return this.createErrorResult(validationErrors.join(', '));
|
|
29
44
|
}
|
|
30
|
-
// Generate unique filename
|
|
31
45
|
const fileName = this.generateFileName(file.originalname);
|
|
32
|
-
|
|
33
|
-
const
|
|
46
|
+
const fileKey = this.buildFilePath(fileName);
|
|
47
|
+
const fileSize = this.getFileSize(file);
|
|
48
|
+
// Use streaming upload for large files to reduce memory usage
|
|
49
|
+
if (this.shouldUseStreaming(file)) {
|
|
50
|
+
return this.uploadWithStream(file, fileKey, fileSize, options);
|
|
51
|
+
}
|
|
52
|
+
// Standard upload for smaller files
|
|
53
|
+
const fileContent = this.getFileContent(file);
|
|
54
|
+
const commandInput = {
|
|
34
55
|
Bucket: this.bucketName,
|
|
35
|
-
Key:
|
|
36
|
-
Body:
|
|
37
|
-
ContentType: file.mimetype,
|
|
38
|
-
ContentLength:
|
|
39
|
-
}
|
|
40
|
-
|
|
56
|
+
Key: fileKey,
|
|
57
|
+
Body: fileContent,
|
|
58
|
+
ContentType: options?.contentType || file.mimetype,
|
|
59
|
+
ContentLength: fileContent.length,
|
|
60
|
+
};
|
|
61
|
+
if (options?.cacheControl) {
|
|
62
|
+
commandInput.CacheControl = options.cacheControl;
|
|
63
|
+
}
|
|
64
|
+
if (options?.contentDisposition) {
|
|
65
|
+
commandInput.ContentDisposition = options.contentDisposition;
|
|
66
|
+
}
|
|
67
|
+
if (options?.metadata) {
|
|
68
|
+
commandInput.Metadata = options.metadata;
|
|
69
|
+
}
|
|
70
|
+
const uploadCommand = new PutObjectCommand(commandInput);
|
|
41
71
|
await this.s3Client.send(uploadCommand);
|
|
42
|
-
//
|
|
43
|
-
const
|
|
44
|
-
|
|
72
|
+
// Build the public URL with proper encoding
|
|
73
|
+
const encodedKey = fileKey.split('/').map(segment => encodeURIComponent(segment)).join('/');
|
|
74
|
+
const fileUrl = `https://${this.bucketName}.s3.${this.region}.amazonaws.com/${encodedKey}`;
|
|
75
|
+
return this.createSuccessResult(fileKey, fileUrl);
|
|
45
76
|
}
|
|
46
77
|
catch (error) {
|
|
47
78
|
return this.createErrorResult(error instanceof Error ? error.message : 'Failed to upload file to S3');
|
|
48
79
|
}
|
|
49
80
|
}
|
|
50
81
|
/**
|
|
51
|
-
*
|
|
82
|
+
* Uploads a large file using streaming multipart upload.
|
|
83
|
+
*
|
|
84
|
+
* This method uses the @aws-sdk/lib-storage Upload class which handles
|
|
85
|
+
* multipart uploads automatically. It's more memory-efficient for large
|
|
86
|
+
* files as it streams data in chunks rather than loading everything into memory.
|
|
87
|
+
*/
|
|
88
|
+
async uploadWithStream(file, fileKey, fileSize, options) {
|
|
89
|
+
const fileStream = this.getFileStream(file);
|
|
90
|
+
const uploadParams = {
|
|
91
|
+
Bucket: this.bucketName,
|
|
92
|
+
Key: fileKey,
|
|
93
|
+
Body: fileStream,
|
|
94
|
+
ContentType: options?.contentType || file.mimetype,
|
|
95
|
+
};
|
|
96
|
+
// Include content length if known (helps with progress tracking)
|
|
97
|
+
if (fileSize > 0) {
|
|
98
|
+
uploadParams.ContentLength = fileSize;
|
|
99
|
+
}
|
|
100
|
+
if (options?.cacheControl) {
|
|
101
|
+
uploadParams.CacheControl = options.cacheControl;
|
|
102
|
+
}
|
|
103
|
+
if (options?.contentDisposition) {
|
|
104
|
+
uploadParams.ContentDisposition = options.contentDisposition;
|
|
105
|
+
}
|
|
106
|
+
if (options?.metadata) {
|
|
107
|
+
uploadParams.Metadata = options.metadata;
|
|
108
|
+
}
|
|
109
|
+
const upload = new Upload({
|
|
110
|
+
client: this.s3Client,
|
|
111
|
+
params: uploadParams,
|
|
112
|
+
// Use 10MB parts for multipart upload (minimum is 5MB)
|
|
113
|
+
partSize: 10 * 1024 * 1024,
|
|
114
|
+
// Upload up to 4 parts concurrently
|
|
115
|
+
queueSize: 4,
|
|
116
|
+
});
|
|
117
|
+
await upload.done();
|
|
118
|
+
// Build the public URL with proper encoding
|
|
119
|
+
const encodedKey = fileKey.split('/').map(segment => encodeURIComponent(segment)).join('/');
|
|
120
|
+
const fileUrl = `https://${this.bucketName}.s3.${this.region}.amazonaws.com/${encodedKey}`;
|
|
121
|
+
return this.createSuccessResult(fileKey, fileUrl);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates a presigned URL for uploading directly to S3.
|
|
125
|
+
*
|
|
126
|
+
* The URL enforces:
|
|
127
|
+
* - Exact content type (baked into the signature)
|
|
128
|
+
* - Exact file size (if provided)
|
|
129
|
+
*
|
|
130
|
+
* Clients that try to upload different content will get a 403.
|
|
52
131
|
*/
|
|
53
|
-
async generateUploadUrl(fileName) {
|
|
132
|
+
async generateUploadUrl(fileName, contentType, fileSize) {
|
|
133
|
+
// Security: Defense-in-depth validation (StorageManager also validates)
|
|
134
|
+
if (fileName.includes('..') || fileName.includes('\0')) {
|
|
135
|
+
return this.createPresignedErrorResult('Invalid fileName: path traversal sequences are not allowed');
|
|
136
|
+
}
|
|
54
137
|
try {
|
|
55
|
-
const
|
|
138
|
+
const resolvedContentType = contentType || 'application/octet-stream';
|
|
139
|
+
const commandInput = {
|
|
56
140
|
Bucket: this.bucketName,
|
|
57
141
|
Key: fileName,
|
|
58
|
-
ContentType:
|
|
59
|
-
}
|
|
142
|
+
ContentType: resolvedContentType,
|
|
143
|
+
};
|
|
144
|
+
if (fileSize !== undefined) {
|
|
145
|
+
commandInput.ContentLength = fileSize;
|
|
146
|
+
}
|
|
147
|
+
const uploadCommand = new PutObjectCommand(commandInput);
|
|
60
148
|
const uploadUrl = await getSignedUrl(this.s3Client, uploadCommand, {
|
|
61
149
|
expiresIn: this.getPresignedUrlExpiry(),
|
|
150
|
+
signableHeaders: new Set(['content-type', 'content-length']),
|
|
62
151
|
});
|
|
63
152
|
return this.createPresignedSuccessResult(uploadUrl);
|
|
64
153
|
}
|
|
@@ -67,9 +156,13 @@ export class S3StorageDriver extends BaseStorageDriver {
|
|
|
67
156
|
}
|
|
68
157
|
}
|
|
69
158
|
/**
|
|
70
|
-
*
|
|
159
|
+
* Creates a presigned URL for downloading/viewing a file.
|
|
71
160
|
*/
|
|
72
161
|
async generateViewUrl(fileName) {
|
|
162
|
+
// Security: Defense-in-depth validation
|
|
163
|
+
if (fileName.includes('..') || fileName.includes('\0')) {
|
|
164
|
+
return this.createPresignedErrorResult('Invalid fileName: path traversal sequences are not allowed');
|
|
165
|
+
}
|
|
73
166
|
try {
|
|
74
167
|
const getCommand = new GetObjectCommand({
|
|
75
168
|
Bucket: this.bucketName,
|
|
@@ -85,47 +178,182 @@ export class S3StorageDriver extends BaseStorageDriver {
|
|
|
85
178
|
}
|
|
86
179
|
}
|
|
87
180
|
/**
|
|
88
|
-
*
|
|
181
|
+
* Deletes a file from S3.
|
|
182
|
+
* Returns false if the file doesn't exist, throws on real errors.
|
|
89
183
|
*/
|
|
90
184
|
async delete(fileName) {
|
|
185
|
+
// Security: Defense-in-depth validation
|
|
186
|
+
if (fileName.includes('..') || fileName.includes('\0')) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
const headCommand = new HeadObjectCommand({
|
|
190
|
+
Bucket: this.bucketName,
|
|
191
|
+
Key: fileName,
|
|
192
|
+
});
|
|
91
193
|
try {
|
|
92
|
-
|
|
194
|
+
await this.s3Client.send(headCommand);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
const errorName = error?.name;
|
|
198
|
+
const httpStatusCode = error?.$metadata?.httpStatusCode;
|
|
199
|
+
if (httpStatusCode === 404 || errorName === 'NotFound' || errorName === 'NoSuchKey') {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
const deleteCommand = new DeleteObjectCommand({
|
|
205
|
+
Bucket: this.bucketName,
|
|
206
|
+
Key: fileName,
|
|
207
|
+
});
|
|
208
|
+
await this.s3Client.send(deleteCommand);
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Confirms an upload and optionally validates the file.
|
|
213
|
+
*
|
|
214
|
+
* For S3, validation is optional since constraints are enforced at URL level.
|
|
215
|
+
* But you can still use this to verify the file matches expectations.
|
|
216
|
+
*/
|
|
217
|
+
async validateAndConfirmUpload(reference, options) {
|
|
218
|
+
const deleteOnFailure = options?.deleteOnFailure !== false;
|
|
219
|
+
try {
|
|
220
|
+
const headCommand = new HeadObjectCommand({
|
|
93
221
|
Bucket: this.bucketName,
|
|
94
|
-
Key:
|
|
222
|
+
Key: reference,
|
|
95
223
|
});
|
|
96
|
-
await this.s3Client.send(
|
|
97
|
-
|
|
224
|
+
const headResult = await this.s3Client.send(headCommand);
|
|
225
|
+
const actualContentType = headResult.ContentType;
|
|
226
|
+
const actualFileSize = headResult.ContentLength;
|
|
227
|
+
// Validate content type if expected
|
|
228
|
+
if (options?.expectedContentType && actualContentType !== options.expectedContentType) {
|
|
229
|
+
if (deleteOnFailure) {
|
|
230
|
+
await this.delete(reference);
|
|
231
|
+
}
|
|
232
|
+
const errorResult = {
|
|
233
|
+
success: false,
|
|
234
|
+
error: `Content type mismatch: expected '${options.expectedContentType}', got '${actualContentType}'${deleteOnFailure ? ' (file deleted)' : ' (file kept for inspection)'}`,
|
|
235
|
+
};
|
|
236
|
+
if (actualContentType)
|
|
237
|
+
errorResult.actualContentType = actualContentType;
|
|
238
|
+
if (actualFileSize !== undefined)
|
|
239
|
+
errorResult.actualFileSize = actualFileSize;
|
|
240
|
+
return errorResult;
|
|
241
|
+
}
|
|
242
|
+
// Validate file size if expected
|
|
243
|
+
if (options?.expectedFileSize !== undefined && actualFileSize !== options.expectedFileSize) {
|
|
244
|
+
if (deleteOnFailure) {
|
|
245
|
+
await this.delete(reference);
|
|
246
|
+
}
|
|
247
|
+
const errorResult = {
|
|
248
|
+
success: false,
|
|
249
|
+
error: `File size mismatch: expected ${options.expectedFileSize} bytes, got ${actualFileSize} bytes${deleteOnFailure ? ' (file deleted)' : ' (file kept for inspection)'}`,
|
|
250
|
+
};
|
|
251
|
+
if (actualContentType)
|
|
252
|
+
errorResult.actualContentType = actualContentType;
|
|
253
|
+
if (actualFileSize !== undefined)
|
|
254
|
+
errorResult.actualFileSize = actualFileSize;
|
|
255
|
+
return errorResult;
|
|
256
|
+
}
|
|
257
|
+
const viewResult = await this.generateViewUrl(reference);
|
|
258
|
+
const result = {
|
|
259
|
+
success: true,
|
|
260
|
+
reference,
|
|
261
|
+
expiresIn: this.getPresignedUrlExpiry(),
|
|
262
|
+
};
|
|
263
|
+
if (viewResult.viewUrl) {
|
|
264
|
+
result.viewUrl = viewResult.viewUrl;
|
|
265
|
+
}
|
|
266
|
+
if (actualContentType) {
|
|
267
|
+
result.actualContentType = actualContentType;
|
|
268
|
+
}
|
|
269
|
+
if (actualFileSize !== undefined) {
|
|
270
|
+
result.actualFileSize = actualFileSize;
|
|
271
|
+
}
|
|
272
|
+
return result;
|
|
98
273
|
}
|
|
99
274
|
catch (error) {
|
|
100
|
-
|
|
275
|
+
const errorMessage = error instanceof Error ? error.message : 'File not found or access denied';
|
|
276
|
+
return {
|
|
277
|
+
success: false,
|
|
278
|
+
error: errorMessage,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Lists files in the bucket with optional prefix filtering and pagination.
|
|
284
|
+
*
|
|
285
|
+
* Note: S3's list API doesn't return content types. Use validateAndConfirmUpload()
|
|
286
|
+
* if you need content type information for specific files.
|
|
287
|
+
*/
|
|
288
|
+
async listFiles(prefix, maxResults = 1000, continuationToken) {
|
|
289
|
+
try {
|
|
290
|
+
const validatedMaxResults = Math.floor(Math.max(1, Math.min(Number.isNaN(maxResults) ? 1000 : maxResults, 1000)));
|
|
291
|
+
const command = new ListObjectsV2Command({
|
|
292
|
+
Bucket: this.bucketName,
|
|
293
|
+
Prefix: prefix || undefined,
|
|
294
|
+
MaxKeys: validatedMaxResults,
|
|
295
|
+
ContinuationToken: continuationToken || undefined,
|
|
296
|
+
});
|
|
297
|
+
const response = await this.s3Client.send(command);
|
|
298
|
+
const files = (response.Contents || []).map(item => {
|
|
299
|
+
const fileInfo = { name: item.Key || '' };
|
|
300
|
+
if (item.Size !== undefined)
|
|
301
|
+
fileInfo.size = item.Size;
|
|
302
|
+
if (item.LastModified)
|
|
303
|
+
fileInfo.lastModified = item.LastModified;
|
|
304
|
+
return fileInfo;
|
|
305
|
+
});
|
|
306
|
+
const result = {
|
|
307
|
+
success: true,
|
|
308
|
+
files,
|
|
309
|
+
};
|
|
310
|
+
if (response.NextContinuationToken) {
|
|
311
|
+
result.nextToken = response.NextContinuationToken;
|
|
312
|
+
}
|
|
313
|
+
return result;
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
return {
|
|
317
|
+
success: false,
|
|
318
|
+
error: error instanceof Error ? error.message : 'Failed to list files',
|
|
319
|
+
};
|
|
101
320
|
}
|
|
102
321
|
}
|
|
103
322
|
}
|
|
104
323
|
/**
|
|
105
|
-
*
|
|
324
|
+
* S3PresignedStorageDriver - S3 driver that returns presigned URLs from upload().
|
|
325
|
+
*
|
|
326
|
+
* Use this when you want clients to upload directly to S3 without
|
|
327
|
+
* the file passing through your server.
|
|
106
328
|
*/
|
|
107
329
|
export class S3PresignedStorageDriver extends S3StorageDriver {
|
|
108
330
|
constructor(config) {
|
|
109
331
|
super(config);
|
|
110
332
|
}
|
|
111
333
|
/**
|
|
112
|
-
*
|
|
334
|
+
* Instead of uploading the file, returns a presigned URL for the client to use.
|
|
335
|
+
*
|
|
336
|
+
* The returned fileUrl is the presigned upload URL.
|
|
337
|
+
* After the client uploads, use validateAndConfirmUpload() to get a view URL.
|
|
338
|
+
*
|
|
339
|
+
* Note: The `options` parameter (metadata, cacheControl, etc.) is NOT applied
|
|
340
|
+
* when using presigned uploads. These options must be set by the client when
|
|
341
|
+
* making the actual upload request to S3, or configured via bucket policies.
|
|
342
|
+
* For server-side uploads with full options support, use the regular 's3' driver.
|
|
113
343
|
*/
|
|
114
|
-
async upload(file) {
|
|
344
|
+
async upload(file, _options) {
|
|
115
345
|
try {
|
|
116
|
-
// Validate file
|
|
117
346
|
const validationErrors = this.validateFile(file);
|
|
118
347
|
if (validationErrors.length > 0) {
|
|
119
348
|
return this.createErrorResult(validationErrors.join(', '));
|
|
120
349
|
}
|
|
121
|
-
// Generate unique filename
|
|
122
350
|
const fileName = this.generateFileName(file.originalname);
|
|
123
|
-
|
|
124
|
-
const presignedResult = await this.generateUploadUrl(
|
|
351
|
+
const filePath = this.buildFilePath(fileName);
|
|
352
|
+
const presignedResult = await this.generateUploadUrl(filePath, file.mimetype, file.size);
|
|
125
353
|
if (!presignedResult.success) {
|
|
126
354
|
return this.createErrorResult(presignedResult.error || 'Failed to generate presigned URL');
|
|
127
355
|
}
|
|
128
|
-
return this.createSuccessResult(
|
|
356
|
+
return this.createSuccessResult(filePath, presignedResult.uploadUrl);
|
|
129
357
|
}
|
|
130
358
|
catch (error) {
|
|
131
359
|
return this.createErrorResult(error instanceof Error ? error.message : 'Failed to generate presigned URL');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.driver.js","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"s3.driver.js","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"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"}
|