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.
Files changed (48) hide show
  1. package/README.md +519 -348
  2. package/dist/drivers/azure.driver.d.ts +88 -0
  3. package/dist/drivers/azure.driver.d.ts.map +1 -0
  4. package/dist/drivers/azure.driver.js +367 -0
  5. package/dist/drivers/azure.driver.js.map +1 -0
  6. package/dist/drivers/base.driver.d.ts +125 -24
  7. package/dist/drivers/base.driver.d.ts.map +1 -1
  8. package/dist/drivers/base.driver.js +248 -62
  9. package/dist/drivers/base.driver.js.map +1 -1
  10. package/dist/drivers/gcs.driver.d.ts +60 -13
  11. package/dist/drivers/gcs.driver.d.ts.map +1 -1
  12. package/dist/drivers/gcs.driver.js +242 -41
  13. package/dist/drivers/gcs.driver.js.map +1 -1
  14. package/dist/drivers/local.driver.d.ts +89 -12
  15. package/dist/drivers/local.driver.d.ts.map +1 -1
  16. package/dist/drivers/local.driver.js +533 -45
  17. package/dist/drivers/local.driver.js.map +1 -1
  18. package/dist/drivers/s3.driver.d.ts +64 -13
  19. package/dist/drivers/s3.driver.d.ts.map +1 -1
  20. package/dist/drivers/s3.driver.js +269 -41
  21. package/dist/drivers/s3.driver.js.map +1 -1
  22. package/dist/factory/driver.factory.d.ts +35 -29
  23. package/dist/factory/driver.factory.d.ts.map +1 -1
  24. package/dist/factory/driver.factory.js +119 -59
  25. package/dist/factory/driver.factory.js.map +1 -1
  26. package/dist/index.d.ts +23 -22
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +26 -46
  29. package/dist/index.js.map +1 -1
  30. package/dist/storage-manager.d.ts +205 -52
  31. package/dist/storage-manager.d.ts.map +1 -1
  32. package/dist/storage-manager.js +644 -73
  33. package/dist/storage-manager.js.map +1 -1
  34. package/dist/types/storage.types.d.ts +243 -18
  35. package/dist/types/storage.types.d.ts.map +1 -1
  36. package/dist/utils/config.utils.d.ts +28 -4
  37. package/dist/utils/config.utils.d.ts.map +1 -1
  38. package/dist/utils/config.utils.js +121 -47
  39. package/dist/utils/config.utils.js.map +1 -1
  40. package/dist/utils/file.utils.d.ts +111 -14
  41. package/dist/utils/file.utils.d.ts.map +1 -1
  42. package/dist/utils/file.utils.js +215 -32
  43. package/dist/utils/file.utils.js.map +1 -1
  44. package/package.json +51 -27
  45. package/dist/drivers/oci.driver.d.ts +0 -37
  46. package/dist/drivers/oci.driver.d.ts.map +0 -1
  47. package/dist/drivers/oci.driver.js +0 -84
  48. 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":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEzG;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,iBAAiB;IAGvD,YAAY,MAAW;QACrB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,wBAAwB,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAyB;QACpC,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE1D,oCAAoC;YACpC,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE5C,0BAA0B;YAC1B,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAEnC,wBAAwB;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAElD,qBAAqB;YACrB,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAExC,wBAAwB;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEjD,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,OAAO,IAAI,CAAC,0BAA0B,CACpC,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,0BAA0B,CACpC,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YAED,cAAc;YACd,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,QAAgB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oCAAoC;QACpC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAiB,EAAE;YACvD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,oCAAoC;oBACpC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAC1C,IAAI,KAAK;wBAAE,OAAO,KAAK,CAAC;gBAC1B,CAAC;qBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CAGF"}
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
- * AWS S3 storage driver
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: any);
17
+ constructor(config: StorageConfig);
11
18
  /**
12
- * Upload file to S3
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
- * Generate presigned upload URL
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
- generateUploadUrl(fileName: string): Promise<PresignedUrlResult>;
33
+ private uploadWithStream;
19
34
  /**
20
- * Generate presigned view URL
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
- * Delete file from S3
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
- * AWS S3 presigned storage driver
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: any);
75
+ constructor(config: StorageConfig);
33
76
  /**
34
- * Override upload to return presigned URL instead of direct upload
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":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEjF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,GAAG;IAevB;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkClE;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBtE;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmBpE;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAajD;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,eAAe;gBAC/C,MAAM,EAAE,GAAG;IAIvB;;OAEG;IACY,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAyB5E"}
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
- * AWS S3 storage driver
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
- this.s3Client = new S3Client({
20
+ const s3Options = {
13
21
  region: this.region,
14
- credentials: {
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
- * Upload file to S3
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
- // Create S3 upload command
33
- const uploadCommand = new PutObjectCommand({
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: fileName,
36
- Body: file.buffer,
37
- ContentType: file.mimetype,
38
- ContentLength: file.size,
39
- });
40
- // Upload to S3
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
- // Generate file URL
43
- const fileUrl = `https://${this.bucketName}.s3.${this.region}.amazonaws.com/${fileName}`;
44
- return this.createSuccessResult(fileName, fileUrl);
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
- * Generate presigned upload URL
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 uploadCommand = new PutObjectCommand({
138
+ const resolvedContentType = contentType || 'application/octet-stream';
139
+ const commandInput = {
56
140
  Bucket: this.bucketName,
57
141
  Key: fileName,
58
- ContentType: 'application/octet-stream',
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
- * Generate presigned view URL
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
- * Delete file from S3
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
- const deleteCommand = new DeleteObjectCommand({
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: fileName,
222
+ Key: reference,
95
223
  });
96
- await this.s3Client.send(deleteCommand);
97
- return true;
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
- return false;
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
- * AWS S3 presigned storage driver
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
- * Override upload to return presigned URL instead of direct upload
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
- // Generate presigned upload URL
124
- const presignedResult = await this.generateUploadUrl(fileName);
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(fileName, presignedResult.uploadUrl);
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChJ,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAKpD,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAW,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAU,CAAC;QAEhC,MAAM,SAAS,GAAuF;YACpG,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,8EAA8E;QAC9E,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/C,SAAS,CAAC,WAAW,GAAG;gBACtB,WAAW,EAAE,MAAM,CAAC,YAAY;gBAChC,eAAe,EAAE,MAAM,CAAC,YAAY;aACrC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,IAAyB,EAAE,OAAuB;QAC7D,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAExC,8DAA8D;YAC9D,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;YAED,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,YAAY,GASd;gBACF,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,QAAQ;gBAClD,aAAa,EAAE,WAAW,CAAC,MAAM;aAClC,CAAC;YAEF,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC1B,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACnD,CAAC;YACD,IAAI,OAAO,EAAE,kBAAkB,EAAE,CAAC;gBAChC,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC/D,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC3C,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAExC,4CAA4C;YAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,WAAW,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,MAAM,kBAAkB,UAAU,EAAE,CAAC;YAE3F,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,gBAAgB,CAC5B,IAAyB,EACzB,OAAe,EACf,QAAgB,EAChB,OAAuB;QAEvB,MAAM,UAAU,GAAa,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,YAAY,GASd;YACF,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,QAAQ;SACnD,CAAC;QAEF,iEAAiE;QACjE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,YAAY,CAAC,aAAa,GAAG,QAAQ,CAAC;QACxC,CAAC;QAED,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACnD,CAAC;QACD,IAAI,OAAO,EAAE,kBAAkB,EAAE,CAAC;YAChC,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,MAAM,EAAE,YAAY;YACpB,uDAAuD;YACvD,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;YAC1B,oCAAoC;YACpC,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpB,4CAA4C;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5F,MAAM,OAAO,GAAG,WAAW,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,MAAM,kBAAkB,UAAU,EAAE,CAAC;QAE3F,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,WAAoB,EAAE,QAAiB;QAC/E,wEAAwE;QACxE,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,0BAA0B,CAAC,4DAA4D,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,WAAW,IAAI,0BAA0B,CAAC;YAEtE,MAAM,YAAY,GAKd;gBACF,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,QAAQ;gBACb,WAAW,EAAE,mBAAmB;aACjC,CAAC;YAEF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,YAAY,CAAC,aAAa,GAAG,QAAQ,CAAC;YACxC,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEzD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;gBACjE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE;gBACvC,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;aAC7D,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,0BAA0B,CACpC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,wCAAwC;QACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,0BAA0B,CAAC,4DAA4D,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC;gBACtC,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,QAAQ;aACd,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;gBAC5D,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE;aACxC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,0BAA0B,CACpC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,wCAAwC;QACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAI,KAA2B,EAAE,IAAI,CAAC;YACrD,MAAM,cAAc,GAAI,KAAqD,EAAE,SAAS,EAAE,cAAc,CAAC;YAEzG,IAAI,cAAc,KAAK,GAAG,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBACpF,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC;YAC5C,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACM,KAAK,CAAC,wBAAwB,CACrC,SAAiB,EACjB,OAA+B;QAE/B,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,KAAK,KAAK,CAAC;QAE3D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;gBACxC,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEzD,MAAM,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC;YACjD,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC;YAEhD,oCAAoC;YACpC,IAAI,OAAO,EAAE,mBAAmB,IAAI,iBAAiB,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBACtF,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM,WAAW,GAAyB;oBACxC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,oCAAoC,OAAO,CAAC,mBAAmB,WAAW,iBAAiB,IAAI,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,6BAA6B,EAAE;iBAC5K,CAAC;gBACF,IAAI,iBAAiB;oBAAE,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;gBACzE,IAAI,cAAc,KAAK,SAAS;oBAAE,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;gBAC9E,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,iCAAiC;YACjC,IAAI,OAAO,EAAE,gBAAgB,KAAK,SAAS,IAAI,cAAc,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC3F,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM,WAAW,GAAyB;oBACxC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,gCAAgC,OAAO,CAAC,gBAAgB,eAAe,cAAc,SAAS,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,6BAA6B,EAAE;iBAC3K,CAAC;gBACF,IAAI,iBAAiB;oBAAE,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;gBACzE,IAAI,cAAc,KAAK,SAAS;oBAAE,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;gBAC9E,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAyB;gBACnC,OAAO,EAAE,IAAI;gBACb,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE;aACxC,CAAC;YAEF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACtC,CAAC;YACD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC/C,CAAC;YACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;YACzC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC;YAChG,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CACb,MAAe,EACf,aAAqB,IAAI,EACzB,iBAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CACzD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAC5C,IAAI,CACL,CAAC,CAAC,CAAC;YAEJ,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;gBACvC,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,MAAM,EAAE,MAAM,IAAI,SAAS;gBAC3B,OAAO,EAAE,mBAAmB;gBAC5B,iBAAiB,EAAE,iBAAiB,IAAI,SAAS;aAClD,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,KAAK,GAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC7D,MAAM,QAAQ,GAAa,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;gBACpD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvD,IAAI,IAAI,CAAC,YAAY;oBAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACjE,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAoB;gBAC9B,OAAO,EAAE,IAAI;gBACb,KAAK;aACN,CAAC;YAEF,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBACnC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,qBAAqB,CAAC;YACpD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;aACvE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;;;;;;;;;OAUG;IACM,KAAK,CAAC,MAAM,CAAC,IAAyB,EAAE,QAAwB;QACvE,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE9C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAClD,QAAQ,EACR,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,CACV,CAAC;YAEF,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,IAAI,kCAAkC,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,iBAAiB,CAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}