@plyaz/types 1.15.20 → 1.16.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 (41) hide show
  1. package/dist/api/aws/index.d.ts +5 -0
  2. package/dist/api/aws/signature.d.ts +42 -0
  3. package/dist/api/endpoints/cdn/endpoints.d.ts +57 -0
  4. package/dist/api/endpoints/cdn/index.d.ts +6 -0
  5. package/dist/api/endpoints/cdn/types.d.ts +151 -0
  6. package/dist/api/endpoints/index.d.ts +2 -0
  7. package/dist/api/endpoints/types.d.ts +3 -1
  8. package/dist/api/endpoints/virustotal/endpoints.d.ts +37 -0
  9. package/dist/api/endpoints/virustotal/index.d.ts +6 -0
  10. package/dist/api/endpoints/virustotal/types.d.ts +202 -0
  11. package/dist/api/index.cjs +1317 -1
  12. package/dist/api/index.cjs.map +1 -1
  13. package/dist/api/index.d.ts +3 -0
  14. package/dist/api/index.js +1317 -1
  15. package/dist/api/index.js.map +1 -1
  16. package/dist/core/idempotency.d.ts +48 -0
  17. package/dist/core/index.d.ts +1 -0
  18. package/dist/errors/codes.d.ts +296 -0
  19. package/dist/errors/enums.d.ts +10 -0
  20. package/dist/errors/index.cjs +1482 -1
  21. package/dist/errors/index.cjs.map +1 -1
  22. package/dist/errors/index.d.ts +1 -0
  23. package/dist/errors/index.js +1482 -2
  24. package/dist/errors/index.js.map +1 -1
  25. package/dist/errors/validation.d.ts +71 -0
  26. package/dist/index.cjs +2268 -132
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.ts +11 -0
  29. package/dist/index.js +2227 -133
  30. package/dist/index.js.map +1 -1
  31. package/dist/logger/enums.d.ts +10 -0
  32. package/dist/notifications/types.d.ts +1 -2
  33. package/dist/storage/compliance.d.ts +247 -0
  34. package/dist/storage/enums.d.ts +527 -0
  35. package/dist/storage/event-handler-mapping.d.ts +69 -0
  36. package/dist/storage/index.d.ts +13 -0
  37. package/dist/storage/interfaces.d.ts +2242 -0
  38. package/dist/storage/plugins.d.ts +996 -0
  39. package/dist/storage/schemas.d.ts +224 -0
  40. package/dist/storage/webhooks.d.ts +340 -0
  41. package/package.json +6 -1
@@ -86,6 +86,12 @@ var ERROR_CATEGORY = {
86
86
  Refund: "refund",
87
87
  /** Security-related error (e.g., encryption or signature failure). */
88
88
  Security: "security",
89
+ /** File operation error (e.g., upload, download, delete failure). */
90
+ FileOperation: "file.operation",
91
+ /** Plugin-related error (e.g., plugin initialization or execution failure). */
92
+ Plugin: "plugin",
93
+ /** Quota or storage limit error (e.g., exceeded storage quota). */
94
+ Quota: "quota",
89
95
  /** Unknown or unclassified error. */
90
96
  Unknown: "unknown"
91
97
  };
@@ -151,6 +157,9 @@ var ERROR_CATEGORY_TO_EMITTER_KEY = {
151
157
  [ERROR_CATEGORY.System]: "system",
152
158
  [ERROR_CATEGORY.Refund]: "refund",
153
159
  [ERROR_CATEGORY.Security]: "security",
160
+ [ERROR_CATEGORY.FileOperation]: "fileOperation",
161
+ [ERROR_CATEGORY.Plugin]: "plugin",
162
+ [ERROR_CATEGORY.Quota]: "quota",
154
163
  [ERROR_CATEGORY.Unknown]: "unknown"
155
164
  };
156
165
  var COMMON_OPERATIONS = {
@@ -246,6 +255,7 @@ var ERROR_EXCEPTIONS_NAMESPACES = {
246
255
  API: "api",
247
256
  AUTH: "auth",
248
257
  NOTIFICATIONS: "notifications",
258
+ STORAGE: "storage",
249
259
  DB: "db",
250
260
  VALIDATION: "validation",
251
261
  GENERIC: "generic",
@@ -276,6 +286,10 @@ var HTTP_STATUS = {
276
286
  * 200 OK - The request succeeded
277
287
  */
278
288
  OK: 200,
289
+ /**
290
+ * 202 Accepted - The request has been received but not yet acted upon
291
+ */
292
+ ACCEPTED: 202,
279
293
  // 4xx Client Errors
280
294
  /**
281
295
  * 400 Bad Request - The server cannot process the request due to client error
@@ -301,6 +315,18 @@ var HTTP_STATUS = {
301
315
  * 409 Conflict - The request conflicts with the current state of the server
302
316
  */
303
317
  CONFLICT: 409,
318
+ /**
319
+ * 410 Gone - The requested resource is no longer available and will not be available again
320
+ */
321
+ GONE: 410,
322
+ /**
323
+ * 413 Payload Too Large - The request is larger than the server is willing to process
324
+ */
325
+ PAYLOAD_TOO_LARGE: 413,
326
+ /**
327
+ * 415 Unsupported Media Type - The request entity has a media type not supported by the server
328
+ */
329
+ UNSUPPORTED_MEDIA_TYPE: 415,
304
330
  /**
305
331
  * 422 Unprocessable Entity - The request was well-formed but was unable to be followed due to semantic errors
306
332
  */
@@ -334,6 +360,10 @@ var HTTP_STATUS = {
334
360
  * 504 Gateway Timeout - The server did not get a response in time from the upstream server
335
361
  */
336
362
  GATEWAY_TIMEOUT: 504,
363
+ /**
364
+ * 507 Insufficient Storage - The server is unable to store the representation needed to complete the request
365
+ */
366
+ INSUFFICIENT_STORAGE: 507,
337
367
  /**
338
368
  * 511 Network Authentication Required - The client needs to authenticate to gain network access
339
369
  */
@@ -479,6 +509,168 @@ var ERROR_CODES = {
479
509
  // General Notification
480
510
  NOTIFICATION_UNKNOWN_ERROR: "notification.unknown.error",
481
511
  NOTIFICATION_INITIALIZATION_FAILED: "notification.initialization.failed",
512
+ // ===== Storage Package Errors =====
513
+ // General
514
+ STORAGE_UNKNOWN_ERROR: "storage.unknown.error",
515
+ STORAGE_INITIALIZATION_FAILED: "storage.initialization.failed",
516
+ // Adapter
517
+ STORAGE_ADAPTER_NOT_FOUND: "storage.adapter.not.found",
518
+ STORAGE_ADAPTER_INITIALIZATION_FAILED: "storage.adapter.initialization.failed",
519
+ STORAGE_ADAPTER_CONFIGURATION_INVALID: "storage.adapter.configuration.invalid",
520
+ STORAGE_ADAPTER_ALREADY_REGISTERED: "storage.adapter.already.registered",
521
+ STORAGE_ADAPTER_CONNECTION_FAILED: "storage.adapter.connection.failed",
522
+ STORAGE_ADAPTER_AUTHENTICATION_FAILED: "storage.adapter.authentication.failed",
523
+ STORAGE_ADAPTER_OPERATION_FAILED: "storage.adapter.operation.failed",
524
+ STORAGE_ADAPTER_HEALTH_CHECK_FAILED: "storage.adapter.health.check.failed",
525
+ STORAGE_ADAPTER_UNAVAILABLE: "storage.adapter.unavailable",
526
+ STORAGE_ADAPTER_TIMEOUT: "storage.adapter.timeout",
527
+ STORAGE_ADAPTER_RATE_LIMIT: "storage.adapter.rate.limit",
528
+ STORAGE_ADAPTER_QUOTA_EXCEEDED: "storage.adapter.quota.exceeded",
529
+ STORAGE_ADAPTER_UNSUPPORTED_OPERATION: "storage.adapter.unsupported.operation",
530
+ STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED: "storage.adapter.feature.not.supported",
531
+ STORAGE_NO_HEALTHY_ADAPTERS: "storage.no.healthy.adapters",
532
+ STORAGE_ALL_ADAPTERS_FAILED: "storage.all.adapters.failed",
533
+ // File Validation
534
+ STORAGE_FILE_TOO_LARGE: "storage.file.too.large",
535
+ STORAGE_FILE_TOO_SMALL: "storage.file.too.small",
536
+ STORAGE_FILE_SIZE_INVALID: "storage.file.size.invalid",
537
+ STORAGE_FILE_TYPE_NOT_ALLOWED: "storage.file.type.not.allowed",
538
+ STORAGE_INVALID_MIME_TYPE: "storage.invalid.mime.type",
539
+ STORAGE_INVALID_FILE_EXTENSION: "storage.invalid.file.extension",
540
+ STORAGE_FILE_EXTENSION_INVALID: "storage.file.extension.invalid",
541
+ STORAGE_FILE_EXTENSION_MISMATCH: "storage.file.extension.mismatch",
542
+ STORAGE_EXECUTABLE_NOT_ALLOWED: "storage.executable.not.allowed",
543
+ STORAGE_VALIDATION_FAILED: "storage.validation.failed",
544
+ STORAGE_INVALID_FILE_CONTENT: "storage.invalid.file.content",
545
+ // Security
546
+ STORAGE_SECURITY_VIRUS_DETECTED: "storage.security.virus.detected",
547
+ STORAGE_SECURITY_SCAN_FAILED: "storage.security.scan.failed",
548
+ STORAGE_SECURITY_ACCESS_DENIED: "storage.security.access.denied",
549
+ STORAGE_SECURITY_ENCRYPTION_FAILED: "storage.security.encryption.failed",
550
+ // File Operations
551
+ STORAGE_FILE_UPLOAD_FAILED: "storage.file.upload.failed",
552
+ STORAGE_FILE_DOWNLOAD_FAILED: "storage.file.download.failed",
553
+ STORAGE_FILE_DELETE_FAILED: "storage.file.delete.failed",
554
+ STORAGE_FILE_UPDATE_FAILED: "storage.file.update.failed",
555
+ STORAGE_FILE_NOT_FOUND: "storage.file.not.found",
556
+ STORAGE_FILE_ALREADY_EXISTS: "storage.file.already.exists",
557
+ STORAGE_FILE_MOVE_FAILED: "storage.file.move.failed",
558
+ STORAGE_FILE_COPY_FAILED: "storage.file.copy.failed",
559
+ STORAGE_FILE_READ_FAILED: "storage.file.read.failed",
560
+ STORAGE_FILE_WRITE_FAILED: "storage.file.write.failed",
561
+ STORAGE_FILE_CORRUPTED: "storage.file.corrupted",
562
+ STORAGE_INVALID_OPERATION: "storage.invalid.operation",
563
+ // Metadata
564
+ STORAGE_METADATA_EXTRACTION_FAILED: "storage.metadata.extraction.failed",
565
+ STORAGE_METADATA_INVALID: "storage.metadata.invalid",
566
+ STORAGE_METADATA_UPDATE_FAILED: "storage.metadata.update.failed",
567
+ // Media Processing
568
+ STORAGE_MEDIA_PROCESSING_FAILED: "storage.media.processing.failed",
569
+ STORAGE_MEDIA_RESIZE_FAILED: "storage.media.resize.failed",
570
+ STORAGE_MEDIA_FORMAT_UNSUPPORTED: "storage.media.format.unsupported",
571
+ STORAGE_MEDIA_TRANSCODE_FAILED: "storage.media.transcode.failed",
572
+ STORAGE_MEDIA_THUMBNAIL_FAILED: "storage.media.thumbnail.failed",
573
+ STORAGE_MEDIA_INVALID_DIMENSIONS: "storage.media.invalid.dimensions",
574
+ // Template & PDF
575
+ STORAGE_TEMPLATE_NOT_FOUND: "storage.template.not.found",
576
+ STORAGE_TEMPLATE_RENDER_FAILED: "storage.template.render.failed",
577
+ STORAGE_PDF_GENERATION_FAILED: "storage.pdf.generation.failed",
578
+ STORAGE_PDF_RENDERING_TIMEOUT: "storage.pdf.rendering.timeout",
579
+ // Queue
580
+ STORAGE_QUEUE_FULL: "storage.queue.full",
581
+ STORAGE_QUEUE_PROCESSING_FAILED: "storage.queue.processing.failed",
582
+ STORAGE_QUEUE_ITEM_NOT_FOUND: "storage.queue.item.not.found",
583
+ // Compliance
584
+ STORAGE_COMPLIANCE_VIOLATION: "storage.compliance.violation",
585
+ STORAGE_COMPLIANCE_RETENTION_VIOLATION: "storage.compliance.retention.violation",
586
+ STORAGE_COMPLIANCE_RETENTION_EXPIRED: "storage.compliance.retention.expired",
587
+ STORAGE_COMPLIANCE_IMMUTABLE_FILE: "storage.compliance.immutable.file",
588
+ STORAGE_COMPLIANCE_POLICY_NOT_FOUND: "storage.compliance.policy.not.found",
589
+ STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED: "storage.compliance.soft.delete.required",
590
+ STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE: "storage.compliance.grace.period.active",
591
+ STORAGE_COMPLIANCE_DEFERRED_DELETION: "storage.compliance.deferred.deletion",
592
+ STORAGE_COMPLIANCE_PATTERN_PROTECTED: "storage.compliance.pattern.protected",
593
+ // Share Links
594
+ STORAGE_SHARE_LINK_NOT_FOUND: "storage.share.link.not.found",
595
+ STORAGE_SHARE_LINK_EXPIRED: "storage.share.link.expired",
596
+ STORAGE_SHARE_LINK_MAX_DOWNLOADS: "storage.share.link.max.downloads",
597
+ STORAGE_SHARE_LINK_INVALID_PASSWORD: "storage.share.link.invalid.password",
598
+ // Plugin
599
+ STORAGE_PLUGIN_NOT_FOUND: "storage.plugin.not.found",
600
+ STORAGE_PLUGIN_INITIALIZATION_FAILED: "storage.plugin.initialization.failed",
601
+ STORAGE_PLUGIN_EXECUTION_FAILED: "storage.plugin.execution.failed",
602
+ // VirusTotal Provider (Plugin)
603
+ STORAGE_VIRUSTOTAL_BAD_REQUEST: "storage.virustotal.bad_request",
604
+ STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED: "storage.virustotal.authentication_required",
605
+ STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS: "storage.virustotal.wrong_credentials",
606
+ STORAGE_VIRUSTOTAL_FILE_TOO_LARGE: "storage.virustotal.file_too_large",
607
+ STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED: "storage.virustotal.quota_exceeded",
608
+ STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND: "storage.virustotal.analysis_not_found",
609
+ STORAGE_VIRUSTOTAL_SCAN_TIMEOUT: "storage.virustotal.scan_timeout",
610
+ STORAGE_VIRUSTOTAL_SCAN_FAILED: "storage.virustotal.scan_failed",
611
+ // CDN Provider Errors (Third-party services - cross-package)
612
+ // Cloudflare CDN
613
+ CLOUDFLARE_AUTHENTICATION_FAILED: "cloudflare.authentication.failed",
614
+ CLOUDFLARE_ZONE_NOT_FOUND: "cloudflare.zone.not.found",
615
+ CLOUDFLARE_PURGE_FAILED: "cloudflare.purge.failed",
616
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: "cloudflare.rate.limit.exceeded",
617
+ CLOUDFLARE_INVALID_URL: "cloudflare.invalid.url",
618
+ CLOUDFLARE_API_ERROR: "cloudflare.api.error",
619
+ // AWS CloudFront CDN
620
+ CLOUDFRONT_AUTHENTICATION_FAILED: "cloudfront.authentication.failed",
621
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: "cloudfront.distribution.not.found",
622
+ CLOUDFRONT_INVALIDATION_FAILED: "cloudfront.invalidation.failed",
623
+ CLOUDFRONT_QUOTA_EXCEEDED: "cloudfront.quota.exceeded",
624
+ CLOUDFRONT_INVALID_PATH: "cloudfront.invalid.path",
625
+ CLOUDFRONT_API_ERROR: "cloudfront.api.error",
626
+ // Fastly CDN
627
+ FASTLY_AUTHENTICATION_FAILED: "fastly.authentication.failed",
628
+ FASTLY_SERVICE_NOT_FOUND: "fastly.service.not.found",
629
+ FASTLY_PURGE_FAILED: "fastly.purge.failed",
630
+ FASTLY_RATE_LIMIT_EXCEEDED: "fastly.rate.limit.exceeded",
631
+ FASTLY_INVALID_URL: "fastly.invalid.url",
632
+ FASTLY_API_ERROR: "fastly.api.error",
633
+ // Generic CDN Errors
634
+ CDN_INVALIDATION_FAILED: "cdn.invalidation.failed",
635
+ CDN_CONFIGURATION_INVALID: "cdn.configuration.invalid",
636
+ CDN_PROVIDER_NOT_FOUND: "cdn.provider.not.found",
637
+ // Webhook Errors
638
+ STORAGE_WEBHOOK_SIGNATURE_INVALID: "storage.webhook.signature.invalid",
639
+ STORAGE_WEBHOOK_PAYLOAD_INVALID: "storage.webhook.payload.invalid",
640
+ STORAGE_WEBHOOK_PROCESSING_FAILED: "storage.webhook.processing.failed",
641
+ STORAGE_WEBHOOK_TIMEOUT: "storage.webhook.timeout",
642
+ STORAGE_WEBHOOK_ADAPTER_NOT_FOUND: "storage.webhook.adapter.not.found",
643
+ STORAGE_WEBHOOK_DUPLICATE_DETECTED: "storage.webhook.duplicate.detected",
644
+ STORAGE_WEBHOOK_IDEMPOTENCY_ERROR: "storage.webhook.idempotency.error",
645
+ STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED: "storage.webhook.rate.limit.exceeded",
646
+ // Presigned URLs
647
+ STORAGE_PRESIGNED_URL_GENERATION_FAILED: "storage.presigned.url.generation.failed",
648
+ STORAGE_PRESIGNED_URL_EXPIRED: "storage.presigned.url.expired",
649
+ STORAGE_PRESIGNED_URL_INVALID: "storage.presigned.url.invalid",
650
+ // Chunked Upload
651
+ STORAGE_CHUNKED_UPLOAD_INIT_FAILED: "storage.chunked.upload.init.failed",
652
+ STORAGE_CHUNKED_UPLOAD_PART_FAILED: "storage.chunked.upload.part.failed",
653
+ STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED: "storage.chunked.upload.complete.failed",
654
+ STORAGE_CHUNKED_UPLOAD_ABORT_FAILED: "storage.chunked.upload.abort.failed",
655
+ STORAGE_CHUNKED_UPLOAD_NOT_FOUND: "storage.chunked.upload.not.found",
656
+ // CORS
657
+ STORAGE_CORS_CONFIGURATION_INVALID: "storage.cors.configuration.invalid",
658
+ STORAGE_CORS_ORIGIN_NOT_ALLOWED: "storage.cors.origin.not.allowed",
659
+ // TTL
660
+ STORAGE_TTL_EXPIRED: "storage.ttl.expired",
661
+ STORAGE_TTL_CLEANUP_FAILED: "storage.ttl.cleanup.failed",
662
+ // Audit
663
+ STORAGE_AUDIT_LOG_FAILED: "storage.audit.log.failed",
664
+ // Timeout & Network
665
+ STORAGE_TIMEOUT: "storage.timeout",
666
+ STORAGE_NETWORK_ERROR: "storage.network.error",
667
+ STORAGE_CONNECTION_LOST: "storage.connection.lost",
668
+ // Permission & Quota
669
+ STORAGE_PERMISSION_DENIED: "storage.permission.denied",
670
+ STORAGE_QUOTA_EXCEEDED: "storage.quota.exceeded",
671
+ STORAGE_INSUFFICIENT_SPACE: "storage.insufficient.space",
672
+ // Feature Implementation
673
+ STORAGE_FEATURE_NOT_IMPLEMENTED: "storage.feature.not.implemented",
482
674
  // ===== Errors Package Errors =====
483
675
  ERROR_SYSTEM_NOT_INITIALIZED: "error.system.not.initialized",
484
676
  EVENT_FACTORY_NOT_REGISTERED: "error.event.factory.not.registered",
@@ -768,7 +960,33 @@ var API_ERROR_CODES = {
768
960
  MONITORING_FAILED: ERROR_CODES.MONITORING_FAILED,
769
961
  CONTEXT_OPERATION_FAILED: ERROR_CODES.CONTEXT_OPERATION_FAILED,
770
962
  CLIENT_ERROR: ERROR_CODES.CLIENT_ERROR,
771
- UNKNOWN_ERROR: ERROR_CODES.UNKNOWN_ERROR
963
+ UNKNOWN_ERROR: ERROR_CODES.UNKNOWN_ERROR,
964
+ // CDN Provider Errors (Third-party services)
965
+ // Cloudflare
966
+ CLOUDFLARE_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
967
+ CLOUDFLARE_ZONE_NOT_FOUND: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
968
+ CLOUDFLARE_PURGE_FAILED: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
969
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
970
+ CLOUDFLARE_INVALID_URL: ERROR_CODES.CLOUDFLARE_INVALID_URL,
971
+ CLOUDFLARE_API_ERROR: ERROR_CODES.CLOUDFLARE_API_ERROR,
972
+ // CloudFront
973
+ CLOUDFRONT_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
974
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
975
+ CLOUDFRONT_INVALIDATION_FAILED: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
976
+ CLOUDFRONT_QUOTA_EXCEEDED: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
977
+ CLOUDFRONT_INVALID_PATH: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
978
+ CLOUDFRONT_API_ERROR: ERROR_CODES.CLOUDFRONT_API_ERROR,
979
+ // Fastly
980
+ FASTLY_AUTHENTICATION_FAILED: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
981
+ FASTLY_SERVICE_NOT_FOUND: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
982
+ FASTLY_PURGE_FAILED: ERROR_CODES.FASTLY_PURGE_FAILED,
983
+ FASTLY_RATE_LIMIT_EXCEEDED: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
984
+ FASTLY_INVALID_URL: ERROR_CODES.FASTLY_INVALID_URL,
985
+ FASTLY_API_ERROR: ERROR_CODES.FASTLY_API_ERROR,
986
+ // Generic CDN
987
+ CDN_INVALIDATION_FAILED: ERROR_CODES.CDN_INVALIDATION_FAILED,
988
+ CDN_CONFIGURATION_INVALID: ERROR_CODES.CDN_CONFIGURATION_INVALID,
989
+ CDN_PROVIDER_NOT_FOUND: ERROR_CODES.CDN_PROVIDER_NOT_FOUND
772
990
  };
773
991
  var NOTIFICATION_ERROR_CODES = {
774
992
  PROVIDER_SEND_FAILED: ERROR_CODES.NOTIFICATION_PROVIDER_SEND_FAILED,
@@ -796,6 +1014,169 @@ var NOTIFICATION_ERROR_CODES = {
796
1014
  UNKNOWN_ERROR: ERROR_CODES.NOTIFICATION_UNKNOWN_ERROR,
797
1015
  INITIALIZATION_FAILED: ERROR_CODES.NOTIFICATION_INITIALIZATION_FAILED
798
1016
  };
1017
+ var STORAGE_ERROR_CODES = {
1018
+ // General
1019
+ UNKNOWN_ERROR: ERROR_CODES.STORAGE_UNKNOWN_ERROR,
1020
+ INITIALIZATION_FAILED: ERROR_CODES.STORAGE_INITIALIZATION_FAILED,
1021
+ // Adapter
1022
+ ADAPTER_NOT_FOUND: ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND,
1023
+ ADAPTER_INITIALIZATION_FAILED: ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED,
1024
+ ADAPTER_CONFIGURATION_INVALID: ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID,
1025
+ ADAPTER_ALREADY_REGISTERED: ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED,
1026
+ ADAPTER_CONNECTION_FAILED: ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED,
1027
+ ADAPTER_AUTHENTICATION_FAILED: ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED,
1028
+ ADAPTER_OPERATION_FAILED: ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED,
1029
+ ADAPTER_HEALTH_CHECK_FAILED: ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED,
1030
+ ADAPTER_UNAVAILABLE: ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE,
1031
+ ADAPTER_TIMEOUT: ERROR_CODES.STORAGE_ADAPTER_TIMEOUT,
1032
+ ADAPTER_RATE_LIMIT: ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT,
1033
+ ADAPTER_QUOTA_EXCEEDED: ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED,
1034
+ ADAPTER_UNSUPPORTED_OPERATION: ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION,
1035
+ ADAPTER_FEATURE_NOT_SUPPORTED: ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED,
1036
+ NO_HEALTHY_ADAPTERS: ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS,
1037
+ ALL_ADAPTERS_FAILED: ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED,
1038
+ // File Validation
1039
+ FILE_TOO_LARGE: ERROR_CODES.STORAGE_FILE_TOO_LARGE,
1040
+ FILE_TOO_SMALL: ERROR_CODES.STORAGE_FILE_TOO_SMALL,
1041
+ FILE_SIZE_INVALID: ERROR_CODES.STORAGE_FILE_SIZE_INVALID,
1042
+ FILE_TYPE_NOT_ALLOWED: ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED,
1043
+ INVALID_MIME_TYPE: ERROR_CODES.STORAGE_INVALID_MIME_TYPE,
1044
+ INVALID_FILE_EXTENSION: ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION,
1045
+ FILE_EXTENSION_INVALID: ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID,
1046
+ FILE_EXTENSION_MISMATCH: ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH,
1047
+ EXECUTABLE_NOT_ALLOWED: ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED,
1048
+ VALIDATION_FAILED: ERROR_CODES.STORAGE_VALIDATION_FAILED,
1049
+ INVALID_FILE_CONTENT: ERROR_CODES.STORAGE_INVALID_FILE_CONTENT,
1050
+ // Security
1051
+ SECURITY_VIRUS_DETECTED: ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED,
1052
+ SECURITY_SCAN_FAILED: ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED,
1053
+ SECURITY_ACCESS_DENIED: ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED,
1054
+ SECURITY_ENCRYPTION_FAILED: ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED,
1055
+ // File Operations
1056
+ FILE_UPLOAD_FAILED: ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED,
1057
+ FILE_DOWNLOAD_FAILED: ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED,
1058
+ FILE_DELETE_FAILED: ERROR_CODES.STORAGE_FILE_DELETE_FAILED,
1059
+ STORAGE_FILE_UPDATE_FAILED: ERROR_CODES.STORAGE_FILE_UPDATE_FAILED,
1060
+ FILE_NOT_FOUND: ERROR_CODES.STORAGE_FILE_NOT_FOUND,
1061
+ FILE_ALREADY_EXISTS: ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS,
1062
+ FILE_MOVE_FAILED: ERROR_CODES.STORAGE_FILE_MOVE_FAILED,
1063
+ FILE_COPY_FAILED: ERROR_CODES.STORAGE_FILE_COPY_FAILED,
1064
+ FILE_READ_FAILED: ERROR_CODES.STORAGE_FILE_READ_FAILED,
1065
+ FILE_WRITE_FAILED: ERROR_CODES.STORAGE_FILE_WRITE_FAILED,
1066
+ FILE_CORRUPTED: ERROR_CODES.STORAGE_FILE_CORRUPTED,
1067
+ INVALID_OPERATION: ERROR_CODES.STORAGE_INVALID_OPERATION,
1068
+ // Metadata
1069
+ METADATA_EXTRACTION_FAILED: ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED,
1070
+ METADATA_INVALID: ERROR_CODES.STORAGE_METADATA_INVALID,
1071
+ METADATA_UPDATE_FAILED: ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED,
1072
+ // Media Processing
1073
+ MEDIA_PROCESSING_FAILED: ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED,
1074
+ MEDIA_RESIZE_FAILED: ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED,
1075
+ MEDIA_FORMAT_UNSUPPORTED: ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED,
1076
+ MEDIA_TRANSCODE_FAILED: ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED,
1077
+ MEDIA_THUMBNAIL_FAILED: ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED,
1078
+ MEDIA_INVALID_DIMENSIONS: ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS,
1079
+ // Template & PDF
1080
+ TEMPLATE_NOT_FOUND: ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND,
1081
+ TEMPLATE_RENDER_FAILED: ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED,
1082
+ PDF_GENERATION_FAILED: ERROR_CODES.STORAGE_PDF_GENERATION_FAILED,
1083
+ PDF_RENDERING_TIMEOUT: ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT,
1084
+ // Queue
1085
+ QUEUE_FULL: ERROR_CODES.STORAGE_QUEUE_FULL,
1086
+ QUEUE_PROCESSING_FAILED: ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED,
1087
+ QUEUE_ITEM_NOT_FOUND: ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND,
1088
+ // Compliance
1089
+ COMPLIANCE_VIOLATION: ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION,
1090
+ COMPLIANCE_RETENTION_VIOLATION: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION,
1091
+ COMPLIANCE_RETENTION_EXPIRED: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED,
1092
+ COMPLIANCE_IMMUTABLE_FILE: ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE,
1093
+ COMPLIANCE_POLICY_NOT_FOUND: ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND,
1094
+ COMPLIANCE_SOFT_DELETE_REQUIRED: ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED,
1095
+ COMPLIANCE_GRACE_PERIOD_ACTIVE: ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE,
1096
+ COMPLIANCE_DEFERRED_DELETION: ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION,
1097
+ COMPLIANCE_PATTERN_PROTECTED: ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED,
1098
+ // Share Links
1099
+ SHARE_LINK_NOT_FOUND: ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND,
1100
+ SHARE_LINK_EXPIRED: ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED,
1101
+ SHARE_LINK_MAX_DOWNLOADS: ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS,
1102
+ SHARE_LINK_INVALID_PASSWORD: ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD,
1103
+ // Plugin
1104
+ PLUGIN_NOT_FOUND: ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND,
1105
+ PLUGIN_INITIALIZATION_FAILED: ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED,
1106
+ PLUGIN_EXECUTION_FAILED: ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED,
1107
+ // VirusTotal Provider (Plugin)
1108
+ VIRUSTOTAL_BAD_REQUEST: ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST,
1109
+ VIRUSTOTAL_AUTHENTICATION_REQUIRED: ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED,
1110
+ VIRUSTOTAL_WRONG_CREDENTIALS: ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS,
1111
+ VIRUSTOTAL_FILE_TOO_LARGE: ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE,
1112
+ VIRUSTOTAL_QUOTA_EXCEEDED: ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED,
1113
+ VIRUSTOTAL_ANALYSIS_NOT_FOUND: ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND,
1114
+ VIRUSTOTAL_SCAN_TIMEOUT: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT,
1115
+ VIRUSTOTAL_SCAN_FAILED: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED,
1116
+ // CDN Providers (Plugins) - Reference cross-package CDN errors
1117
+ // Cloudflare CDN
1118
+ CLOUDFLARE_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
1119
+ CLOUDFLARE_ZONE_NOT_FOUND: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
1120
+ CLOUDFLARE_PURGE_FAILED: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
1121
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
1122
+ CLOUDFLARE_INVALID_URL: ERROR_CODES.CLOUDFLARE_INVALID_URL,
1123
+ CLOUDFLARE_API_ERROR: ERROR_CODES.CLOUDFLARE_API_ERROR,
1124
+ // AWS CloudFront CDN
1125
+ CLOUDFRONT_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
1126
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
1127
+ CLOUDFRONT_INVALIDATION_FAILED: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
1128
+ CLOUDFRONT_QUOTA_EXCEEDED: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
1129
+ CLOUDFRONT_INVALID_PATH: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
1130
+ CLOUDFRONT_API_ERROR: ERROR_CODES.CLOUDFRONT_API_ERROR,
1131
+ // Fastly CDN
1132
+ FASTLY_AUTHENTICATION_FAILED: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
1133
+ FASTLY_SERVICE_NOT_FOUND: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
1134
+ FASTLY_PURGE_FAILED: ERROR_CODES.FASTLY_PURGE_FAILED,
1135
+ FASTLY_RATE_LIMIT_EXCEEDED: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
1136
+ FASTLY_INVALID_URL: ERROR_CODES.FASTLY_INVALID_URL,
1137
+ FASTLY_API_ERROR: ERROR_CODES.FASTLY_API_ERROR,
1138
+ // Generic CDN Errors
1139
+ CDN_INVALIDATION_FAILED: ERROR_CODES.CDN_INVALIDATION_FAILED,
1140
+ CDN_CONFIGURATION_INVALID: ERROR_CODES.CDN_CONFIGURATION_INVALID,
1141
+ CDN_PROVIDER_NOT_FOUND: ERROR_CODES.CDN_PROVIDER_NOT_FOUND,
1142
+ // Presigned URLs
1143
+ PRESIGNED_URL_GENERATION_FAILED: ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED,
1144
+ PRESIGNED_URL_EXPIRED: ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED,
1145
+ PRESIGNED_URL_INVALID: ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID,
1146
+ // Chunked Upload
1147
+ CHUNKED_UPLOAD_INIT_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED,
1148
+ CHUNKED_UPLOAD_PART_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED,
1149
+ CHUNKED_UPLOAD_COMPLETE_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED,
1150
+ CHUNKED_UPLOAD_ABORT_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED,
1151
+ CHUNKED_UPLOAD_NOT_FOUND: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND,
1152
+ // CORS
1153
+ CORS_CONFIGURATION_INVALID: ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID,
1154
+ CORS_ORIGIN_NOT_ALLOWED: ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED,
1155
+ // TTL
1156
+ TTL_EXPIRED: ERROR_CODES.STORAGE_TTL_EXPIRED,
1157
+ TTL_CLEANUP_FAILED: ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED,
1158
+ // Audit
1159
+ AUDIT_LOG_FAILED: ERROR_CODES.STORAGE_AUDIT_LOG_FAILED,
1160
+ // Webhook
1161
+ WEBHOOK_SIGNATURE_INVALID: ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID,
1162
+ WEBHOOK_PAYLOAD_INVALID: ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID,
1163
+ WEBHOOK_PROCESSING_FAILED: ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED,
1164
+ WEBHOOK_TIMEOUT: ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT,
1165
+ WEBHOOK_ADAPTER_NOT_FOUND: ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND,
1166
+ WEBHOOK_DUPLICATE_DETECTED: ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED,
1167
+ WEBHOOK_IDEMPOTENCY_ERROR: ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR,
1168
+ WEBHOOK_RATE_LIMIT_EXCEEDED: ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED,
1169
+ // Timeout & Network
1170
+ TIMEOUT: ERROR_CODES.STORAGE_TIMEOUT,
1171
+ NETWORK_ERROR: ERROR_CODES.STORAGE_NETWORK_ERROR,
1172
+ CONNECTION_LOST: ERROR_CODES.STORAGE_CONNECTION_LOST,
1173
+ // Permission & Quota
1174
+ PERMISSION_DENIED: ERROR_CODES.STORAGE_PERMISSION_DENIED,
1175
+ QUOTA_EXCEEDED: ERROR_CODES.STORAGE_QUOTA_EXCEEDED,
1176
+ INSUFFICIENT_SPACE: ERROR_CODES.STORAGE_INSUFFICIENT_SPACE,
1177
+ // Feature Implementation
1178
+ FEATURE_NOT_IMPLEMENTED: ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED
1179
+ };
799
1180
  var PAYMENT_ERROR_CODES = {
800
1181
  // Timeout & Network
801
1182
  PAYMENT_TIMEOUT: ERROR_CODES.PAYMENT_TIMEOUT,
@@ -1838,6 +2219,1105 @@ var ERROR_DEFINITIONS = {
1838
2219
  retryable: false,
1839
2220
  userMessage: "errors.notification.initialization_failed"
1840
2221
  },
2222
+ // ===== Storage Package Error Definitions =====
2223
+ // General
2224
+ [ERROR_CODES.STORAGE_UNKNOWN_ERROR]: {
2225
+ code: ERROR_CODES.STORAGE_UNKNOWN_ERROR,
2226
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2227
+ category: ERROR_CATEGORY.Unknown,
2228
+ severity: ERROR_SEVERITY.Medium,
2229
+ retryable: false,
2230
+ userMessage: "errors.storage.unknown"
2231
+ },
2232
+ [ERROR_CODES.STORAGE_INITIALIZATION_FAILED]: {
2233
+ code: ERROR_CODES.STORAGE_INITIALIZATION_FAILED,
2234
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2235
+ category: ERROR_CATEGORY.Configuration,
2236
+ severity: ERROR_SEVERITY.Critical,
2237
+ retryable: false,
2238
+ userMessage: "errors.storage.initialization_failed"
2239
+ },
2240
+ // Adapter errors
2241
+ [ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND]: {
2242
+ code: ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND,
2243
+ status: HTTP_STATUS.NOT_FOUND,
2244
+ category: ERROR_CATEGORY.Configuration,
2245
+ severity: ERROR_SEVERITY.Critical,
2246
+ retryable: false,
2247
+ userMessage: "errors.storage.adapter.not_found"
2248
+ },
2249
+ [ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED]: {
2250
+ code: ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED,
2251
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2252
+ category: ERROR_CATEGORY.ExternalService,
2253
+ severity: ERROR_SEVERITY.Critical,
2254
+ retryable: false,
2255
+ userMessage: "errors.storage.adapter.initialization_failed"
2256
+ },
2257
+ [ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID]: {
2258
+ code: ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID,
2259
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2260
+ category: ERROR_CATEGORY.Configuration,
2261
+ severity: ERROR_SEVERITY.Critical,
2262
+ retryable: false,
2263
+ userMessage: "errors.storage.adapter.configuration_invalid"
2264
+ },
2265
+ [ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED]: {
2266
+ code: ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED,
2267
+ status: HTTP_STATUS.CONFLICT,
2268
+ category: ERROR_CATEGORY.Configuration,
2269
+ severity: ERROR_SEVERITY.High,
2270
+ retryable: false,
2271
+ userMessage: "errors.storage.adapter.already_registered"
2272
+ },
2273
+ [ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED]: {
2274
+ code: ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED,
2275
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2276
+ category: ERROR_CATEGORY.Network,
2277
+ severity: ERROR_SEVERITY.High,
2278
+ retryable: true,
2279
+ userMessage: "errors.storage.adapter.connection_failed"
2280
+ },
2281
+ [ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED]: {
2282
+ code: ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED,
2283
+ status: HTTP_STATUS.UNAUTHORIZED,
2284
+ category: ERROR_CATEGORY.Authentication,
2285
+ severity: ERROR_SEVERITY.Critical,
2286
+ retryable: false,
2287
+ userMessage: "errors.storage.adapter.authentication_failed"
2288
+ },
2289
+ [ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED]: {
2290
+ code: ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED,
2291
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2292
+ category: ERROR_CATEGORY.ExternalService,
2293
+ severity: ERROR_SEVERITY.High,
2294
+ retryable: true,
2295
+ userMessage: "errors.storage.adapter.operation_failed"
2296
+ },
2297
+ [ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED]: {
2298
+ code: ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED,
2299
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2300
+ category: ERROR_CATEGORY.ExternalService,
2301
+ severity: ERROR_SEVERITY.Medium,
2302
+ retryable: true,
2303
+ userMessage: "errors.storage.adapter.health_check_failed"
2304
+ },
2305
+ [ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE]: {
2306
+ code: ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE,
2307
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2308
+ category: ERROR_CATEGORY.ExternalService,
2309
+ severity: ERROR_SEVERITY.High,
2310
+ retryable: true,
2311
+ userMessage: "errors.storage.adapter.unavailable"
2312
+ },
2313
+ [ERROR_CODES.STORAGE_ADAPTER_TIMEOUT]: {
2314
+ code: ERROR_CODES.STORAGE_ADAPTER_TIMEOUT,
2315
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2316
+ category: ERROR_CATEGORY.Timeout,
2317
+ severity: ERROR_SEVERITY.Medium,
2318
+ retryable: true,
2319
+ userMessage: "errors.storage.adapter.timeout"
2320
+ },
2321
+ [ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT]: {
2322
+ code: ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT,
2323
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2324
+ category: ERROR_CATEGORY.RateLimit,
2325
+ severity: ERROR_SEVERITY.Medium,
2326
+ retryable: true,
2327
+ userMessage: "errors.storage.adapter.rate_limit"
2328
+ },
2329
+ [ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED]: {
2330
+ code: ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED,
2331
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
2332
+ category: ERROR_CATEGORY.Quota,
2333
+ severity: ERROR_SEVERITY.High,
2334
+ retryable: false,
2335
+ userMessage: "errors.storage.adapter.quota_exceeded"
2336
+ },
2337
+ [ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION]: {
2338
+ code: ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION,
2339
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2340
+ category: ERROR_CATEGORY.ExternalService,
2341
+ severity: ERROR_SEVERITY.Medium,
2342
+ retryable: false,
2343
+ userMessage: "errors.storage.adapter.unsupported_operation"
2344
+ },
2345
+ [ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED]: {
2346
+ code: ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED,
2347
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2348
+ category: ERROR_CATEGORY.ExternalService,
2349
+ severity: ERROR_SEVERITY.Medium,
2350
+ retryable: false,
2351
+ userMessage: "errors.storage.adapter.feature_not_supported"
2352
+ },
2353
+ [ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS]: {
2354
+ code: ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS,
2355
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2356
+ category: ERROR_CATEGORY.ExternalService,
2357
+ severity: ERROR_SEVERITY.Critical,
2358
+ retryable: true,
2359
+ userMessage: "errors.storage.no_healthy_adapters"
2360
+ },
2361
+ [ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED]: {
2362
+ code: ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED,
2363
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2364
+ category: ERROR_CATEGORY.ExternalService,
2365
+ severity: ERROR_SEVERITY.Critical,
2366
+ retryable: true,
2367
+ userMessage: "errors.storage.all_adapters_failed"
2368
+ },
2369
+ // File Validation
2370
+ [ERROR_CODES.STORAGE_FILE_TOO_LARGE]: {
2371
+ code: ERROR_CODES.STORAGE_FILE_TOO_LARGE,
2372
+ status: HTTP_STATUS.PAYLOAD_TOO_LARGE,
2373
+ category: ERROR_CATEGORY.Validation,
2374
+ severity: ERROR_SEVERITY.Low,
2375
+ retryable: false,
2376
+ userMessage: "errors.storage.file.too_large"
2377
+ },
2378
+ [ERROR_CODES.STORAGE_FILE_TOO_SMALL]: {
2379
+ code: ERROR_CODES.STORAGE_FILE_TOO_SMALL,
2380
+ status: HTTP_STATUS.BAD_REQUEST,
2381
+ category: ERROR_CATEGORY.Validation,
2382
+ severity: ERROR_SEVERITY.Low,
2383
+ retryable: false,
2384
+ userMessage: "errors.storage.file.too_small"
2385
+ },
2386
+ [ERROR_CODES.STORAGE_FILE_SIZE_INVALID]: {
2387
+ code: ERROR_CODES.STORAGE_FILE_SIZE_INVALID,
2388
+ status: HTTP_STATUS.BAD_REQUEST,
2389
+ category: ERROR_CATEGORY.Validation,
2390
+ severity: ERROR_SEVERITY.Low,
2391
+ retryable: false,
2392
+ userMessage: "errors.storage.file.size.invalid"
2393
+ },
2394
+ [ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED]: {
2395
+ code: ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED,
2396
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2397
+ category: ERROR_CATEGORY.Security,
2398
+ severity: ERROR_SEVERITY.Medium,
2399
+ retryable: false,
2400
+ userMessage: "errors.storage.file.type.not_allowed"
2401
+ },
2402
+ [ERROR_CODES.STORAGE_INVALID_MIME_TYPE]: {
2403
+ code: ERROR_CODES.STORAGE_INVALID_MIME_TYPE,
2404
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2405
+ category: ERROR_CATEGORY.Validation,
2406
+ severity: ERROR_SEVERITY.Low,
2407
+ retryable: false,
2408
+ userMessage: "errors.storage.mime_type.invalid"
2409
+ },
2410
+ [ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION]: {
2411
+ code: ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION,
2412
+ status: HTTP_STATUS.BAD_REQUEST,
2413
+ category: ERROR_CATEGORY.Validation,
2414
+ severity: ERROR_SEVERITY.Low,
2415
+ retryable: false,
2416
+ userMessage: "errors.storage.extension.invalid"
2417
+ },
2418
+ [ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID]: {
2419
+ code: ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID,
2420
+ status: HTTP_STATUS.BAD_REQUEST,
2421
+ category: ERROR_CATEGORY.Validation,
2422
+ severity: ERROR_SEVERITY.Low,
2423
+ retryable: false,
2424
+ userMessage: "errors.storage.file.extension.invalid"
2425
+ },
2426
+ [ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH]: {
2427
+ code: ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH,
2428
+ status: HTTP_STATUS.BAD_REQUEST,
2429
+ category: ERROR_CATEGORY.Validation,
2430
+ severity: ERROR_SEVERITY.Medium,
2431
+ retryable: false,
2432
+ userMessage: "errors.storage.file.extension.mismatch"
2433
+ },
2434
+ [ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED]: {
2435
+ code: ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED,
2436
+ status: HTTP_STATUS.FORBIDDEN,
2437
+ category: ERROR_CATEGORY.Security,
2438
+ severity: ERROR_SEVERITY.High,
2439
+ retryable: false,
2440
+ userMessage: "errors.storage.executable_not_allowed"
2441
+ },
2442
+ [ERROR_CODES.STORAGE_VALIDATION_FAILED]: {
2443
+ code: ERROR_CODES.STORAGE_VALIDATION_FAILED,
2444
+ status: HTTP_STATUS.BAD_REQUEST,
2445
+ category: ERROR_CATEGORY.Validation,
2446
+ severity: ERROR_SEVERITY.Low,
2447
+ retryable: false,
2448
+ userMessage: "errors.storage.validation.failed"
2449
+ },
2450
+ [ERROR_CODES.STORAGE_INVALID_FILE_CONTENT]: {
2451
+ code: ERROR_CODES.STORAGE_INVALID_FILE_CONTENT,
2452
+ status: HTTP_STATUS.BAD_REQUEST,
2453
+ category: ERROR_CATEGORY.Validation,
2454
+ severity: ERROR_SEVERITY.Medium,
2455
+ retryable: false,
2456
+ userMessage: "errors.storage.validation.invalid_file_content"
2457
+ },
2458
+ // Security
2459
+ [ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED]: {
2460
+ code: ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED,
2461
+ status: HTTP_STATUS.FORBIDDEN,
2462
+ category: ERROR_CATEGORY.Security,
2463
+ severity: ERROR_SEVERITY.Critical,
2464
+ retryable: false,
2465
+ userMessage: "errors.storage.security.virus_detected"
2466
+ },
2467
+ [ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED]: {
2468
+ code: ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED,
2469
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2470
+ category: ERROR_CATEGORY.Security,
2471
+ severity: ERROR_SEVERITY.High,
2472
+ retryable: true,
2473
+ userMessage: "errors.storage.security.scan_failed"
2474
+ },
2475
+ [ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED]: {
2476
+ code: ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED,
2477
+ status: HTTP_STATUS.FORBIDDEN,
2478
+ category: ERROR_CATEGORY.Authorization,
2479
+ severity: ERROR_SEVERITY.Medium,
2480
+ retryable: false,
2481
+ userMessage: "errors.storage.security.access_denied"
2482
+ },
2483
+ [ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED]: {
2484
+ code: ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED,
2485
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2486
+ category: ERROR_CATEGORY.Security,
2487
+ severity: ERROR_SEVERITY.High,
2488
+ retryable: true,
2489
+ userMessage: "errors.storage.security.encryption_failed"
2490
+ },
2491
+ // File Operations
2492
+ [ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED]: {
2493
+ code: ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED,
2494
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2495
+ category: ERROR_CATEGORY.FileOperation,
2496
+ severity: ERROR_SEVERITY.High,
2497
+ retryable: true,
2498
+ userMessage: "errors.storage.file.upload_failed"
2499
+ },
2500
+ [ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED]: {
2501
+ code: ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED,
2502
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2503
+ category: ERROR_CATEGORY.FileOperation,
2504
+ severity: ERROR_SEVERITY.High,
2505
+ retryable: true,
2506
+ userMessage: "errors.storage.file.download_failed"
2507
+ },
2508
+ [ERROR_CODES.STORAGE_FILE_DELETE_FAILED]: {
2509
+ code: ERROR_CODES.STORAGE_FILE_DELETE_FAILED,
2510
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2511
+ category: ERROR_CATEGORY.FileOperation,
2512
+ severity: ERROR_SEVERITY.High,
2513
+ retryable: true,
2514
+ userMessage: "errors.storage.file.delete_failed"
2515
+ },
2516
+ [ERROR_CODES.STORAGE_FILE_UPDATE_FAILED]: {
2517
+ code: ERROR_CODES.STORAGE_FILE_UPDATE_FAILED,
2518
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2519
+ category: ERROR_CATEGORY.FileOperation,
2520
+ severity: ERROR_SEVERITY.High,
2521
+ retryable: true,
2522
+ userMessage: "errors.storage.file.update_failed"
2523
+ },
2524
+ [ERROR_CODES.STORAGE_FILE_NOT_FOUND]: {
2525
+ code: ERROR_CODES.STORAGE_FILE_NOT_FOUND,
2526
+ status: HTTP_STATUS.NOT_FOUND,
2527
+ category: ERROR_CATEGORY.NotFound,
2528
+ severity: ERROR_SEVERITY.Low,
2529
+ retryable: false,
2530
+ userMessage: "errors.storage.file.not_found"
2531
+ },
2532
+ [ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS]: {
2533
+ code: ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS,
2534
+ status: HTTP_STATUS.CONFLICT,
2535
+ category: ERROR_CATEGORY.Conflict,
2536
+ severity: ERROR_SEVERITY.Low,
2537
+ retryable: false,
2538
+ userMessage: "errors.storage.file.already_exists"
2539
+ },
2540
+ [ERROR_CODES.STORAGE_FILE_MOVE_FAILED]: {
2541
+ code: ERROR_CODES.STORAGE_FILE_MOVE_FAILED,
2542
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2543
+ category: ERROR_CATEGORY.FileOperation,
2544
+ severity: ERROR_SEVERITY.Medium,
2545
+ retryable: true,
2546
+ userMessage: "errors.storage.file.move_failed"
2547
+ },
2548
+ [ERROR_CODES.STORAGE_FILE_COPY_FAILED]: {
2549
+ code: ERROR_CODES.STORAGE_FILE_COPY_FAILED,
2550
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2551
+ category: ERROR_CATEGORY.FileOperation,
2552
+ severity: ERROR_SEVERITY.Medium,
2553
+ retryable: true,
2554
+ userMessage: "errors.storage.file.copy_failed"
2555
+ },
2556
+ [ERROR_CODES.STORAGE_FILE_READ_FAILED]: {
2557
+ code: ERROR_CODES.STORAGE_FILE_READ_FAILED,
2558
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2559
+ category: ERROR_CATEGORY.FileOperation,
2560
+ severity: ERROR_SEVERITY.High,
2561
+ retryable: true,
2562
+ userMessage: "errors.storage.file.read_failed"
2563
+ },
2564
+ [ERROR_CODES.STORAGE_FILE_WRITE_FAILED]: {
2565
+ code: ERROR_CODES.STORAGE_FILE_WRITE_FAILED,
2566
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2567
+ category: ERROR_CATEGORY.FileOperation,
2568
+ severity: ERROR_SEVERITY.High,
2569
+ retryable: true,
2570
+ userMessage: "errors.storage.file.write_failed"
2571
+ },
2572
+ [ERROR_CODES.STORAGE_FILE_CORRUPTED]: {
2573
+ code: ERROR_CODES.STORAGE_FILE_CORRUPTED,
2574
+ status: HTTP_STATUS.BAD_REQUEST,
2575
+ category: ERROR_CATEGORY.Validation,
2576
+ severity: ERROR_SEVERITY.Medium,
2577
+ retryable: false,
2578
+ userMessage: "errors.storage.file.corrupted"
2579
+ },
2580
+ [ERROR_CODES.STORAGE_INVALID_OPERATION]: {
2581
+ code: ERROR_CODES.STORAGE_INVALID_OPERATION,
2582
+ status: HTTP_STATUS.BAD_REQUEST,
2583
+ category: ERROR_CATEGORY.Validation,
2584
+ severity: ERROR_SEVERITY.Low,
2585
+ retryable: false,
2586
+ userMessage: "errors.storage.invalid_operation"
2587
+ },
2588
+ // Metadata
2589
+ [ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED]: {
2590
+ code: ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED,
2591
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2592
+ category: ERROR_CATEGORY.Processing,
2593
+ severity: ERROR_SEVERITY.Low,
2594
+ retryable: true,
2595
+ userMessage: "errors.storage.metadata.extraction_failed"
2596
+ },
2597
+ [ERROR_CODES.STORAGE_METADATA_INVALID]: {
2598
+ code: ERROR_CODES.STORAGE_METADATA_INVALID,
2599
+ status: HTTP_STATUS.BAD_REQUEST,
2600
+ category: ERROR_CATEGORY.Validation,
2601
+ severity: ERROR_SEVERITY.Low,
2602
+ retryable: false,
2603
+ userMessage: "errors.storage.metadata.invalid"
2604
+ },
2605
+ [ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED]: {
2606
+ code: ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED,
2607
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2608
+ category: ERROR_CATEGORY.Processing,
2609
+ severity: ERROR_SEVERITY.Medium,
2610
+ retryable: true,
2611
+ userMessage: "errors.storage.metadata.update_failed"
2612
+ },
2613
+ // Media Processing
2614
+ [ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED]: {
2615
+ code: ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED,
2616
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2617
+ category: ERROR_CATEGORY.Processing,
2618
+ severity: ERROR_SEVERITY.Medium,
2619
+ retryable: true,
2620
+ userMessage: "errors.storage.media.processing_failed"
2621
+ },
2622
+ [ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED]: {
2623
+ code: ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED,
2624
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2625
+ category: ERROR_CATEGORY.Processing,
2626
+ severity: ERROR_SEVERITY.Medium,
2627
+ retryable: true,
2628
+ userMessage: "errors.storage.media.resize_failed"
2629
+ },
2630
+ [ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED]: {
2631
+ code: ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED,
2632
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2633
+ category: ERROR_CATEGORY.Validation,
2634
+ severity: ERROR_SEVERITY.Low,
2635
+ retryable: false,
2636
+ userMessage: "errors.storage.media.format_unsupported"
2637
+ },
2638
+ [ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED]: {
2639
+ code: ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED,
2640
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2641
+ category: ERROR_CATEGORY.Processing,
2642
+ severity: ERROR_SEVERITY.Medium,
2643
+ retryable: true,
2644
+ userMessage: "errors.storage.media.transcode_failed"
2645
+ },
2646
+ [ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED]: {
2647
+ code: ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED,
2648
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2649
+ category: ERROR_CATEGORY.Processing,
2650
+ severity: ERROR_SEVERITY.Low,
2651
+ retryable: true,
2652
+ userMessage: "errors.storage.media.thumbnail_failed"
2653
+ },
2654
+ [ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS]: {
2655
+ code: ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS,
2656
+ status: HTTP_STATUS.BAD_REQUEST,
2657
+ category: ERROR_CATEGORY.Validation,
2658
+ severity: ERROR_SEVERITY.Low,
2659
+ retryable: false,
2660
+ userMessage: "errors.storage.media.invalid_dimensions"
2661
+ },
2662
+ // Template & PDF
2663
+ [ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND]: {
2664
+ code: ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND,
2665
+ status: HTTP_STATUS.NOT_FOUND,
2666
+ category: ERROR_CATEGORY.NotFound,
2667
+ severity: ERROR_SEVERITY.Medium,
2668
+ retryable: false,
2669
+ userMessage: "errors.storage.template.not_found"
2670
+ },
2671
+ [ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED]: {
2672
+ code: ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED,
2673
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2674
+ category: ERROR_CATEGORY.Template,
2675
+ severity: ERROR_SEVERITY.Medium,
2676
+ retryable: true,
2677
+ userMessage: "errors.storage.template.render_failed"
2678
+ },
2679
+ [ERROR_CODES.STORAGE_PDF_GENERATION_FAILED]: {
2680
+ code: ERROR_CODES.STORAGE_PDF_GENERATION_FAILED,
2681
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2682
+ category: ERROR_CATEGORY.Processing,
2683
+ severity: ERROR_SEVERITY.Medium,
2684
+ retryable: true,
2685
+ userMessage: "errors.storage.pdf.generation_failed"
2686
+ },
2687
+ [ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT]: {
2688
+ code: ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT,
2689
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2690
+ category: ERROR_CATEGORY.Timeout,
2691
+ severity: ERROR_SEVERITY.Medium,
2692
+ retryable: true,
2693
+ userMessage: "errors.storage.pdf.rendering_timeout"
2694
+ },
2695
+ // Queue
2696
+ [ERROR_CODES.STORAGE_QUEUE_FULL]: {
2697
+ code: ERROR_CODES.STORAGE_QUEUE_FULL,
2698
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2699
+ category: ERROR_CATEGORY.Queue,
2700
+ severity: ERROR_SEVERITY.Medium,
2701
+ retryable: true,
2702
+ userMessage: "errors.storage.queue.full"
2703
+ },
2704
+ [ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED]: {
2705
+ code: ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED,
2706
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2707
+ category: ERROR_CATEGORY.Queue,
2708
+ severity: ERROR_SEVERITY.High,
2709
+ retryable: true,
2710
+ userMessage: "errors.storage.queue.processing_failed"
2711
+ },
2712
+ [ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND]: {
2713
+ code: ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND,
2714
+ status: HTTP_STATUS.NOT_FOUND,
2715
+ category: ERROR_CATEGORY.NotFound,
2716
+ severity: ERROR_SEVERITY.Low,
2717
+ retryable: false,
2718
+ userMessage: "errors.storage.queue.item_not_found"
2719
+ },
2720
+ // Compliance
2721
+ [ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION]: {
2722
+ code: ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION,
2723
+ status: HTTP_STATUS.FORBIDDEN,
2724
+ category: ERROR_CATEGORY.Compliance,
2725
+ severity: ERROR_SEVERITY.High,
2726
+ retryable: false,
2727
+ userMessage: "errors.storage.compliance.violation"
2728
+ },
2729
+ [ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED]: {
2730
+ code: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED,
2731
+ status: HTTP_STATUS.GONE,
2732
+ category: ERROR_CATEGORY.Compliance,
2733
+ severity: ERROR_SEVERITY.Medium,
2734
+ retryable: false,
2735
+ userMessage: "errors.storage.compliance.retention_expired"
2736
+ },
2737
+ [ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE]: {
2738
+ code: ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE,
2739
+ status: HTTP_STATUS.FORBIDDEN,
2740
+ category: ERROR_CATEGORY.Compliance,
2741
+ severity: ERROR_SEVERITY.Medium,
2742
+ retryable: false,
2743
+ userMessage: "errors.storage.compliance.immutable_file"
2744
+ },
2745
+ [ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND]: {
2746
+ code: ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND,
2747
+ status: HTTP_STATUS.NOT_FOUND,
2748
+ category: ERROR_CATEGORY.Configuration,
2749
+ severity: ERROR_SEVERITY.Medium,
2750
+ retryable: false,
2751
+ userMessage: "errors.storage.compliance.policy_not_found"
2752
+ },
2753
+ [ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION]: {
2754
+ code: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION,
2755
+ status: HTTP_STATUS.FORBIDDEN,
2756
+ category: ERROR_CATEGORY.Compliance,
2757
+ severity: ERROR_SEVERITY.High,
2758
+ retryable: false,
2759
+ userMessage: "errors.storage.compliance.retention_violation"
2760
+ },
2761
+ [ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED]: {
2762
+ code: ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED,
2763
+ status: HTTP_STATUS.FORBIDDEN,
2764
+ category: ERROR_CATEGORY.Compliance,
2765
+ severity: ERROR_SEVERITY.Medium,
2766
+ retryable: false,
2767
+ userMessage: "errors.storage.compliance.soft_delete_required"
2768
+ },
2769
+ [ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE]: {
2770
+ code: ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE,
2771
+ status: HTTP_STATUS.CONFLICT,
2772
+ category: ERROR_CATEGORY.Compliance,
2773
+ severity: ERROR_SEVERITY.Low,
2774
+ retryable: false,
2775
+ userMessage: "errors.storage.compliance.grace_period_active"
2776
+ },
2777
+ [ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION]: {
2778
+ code: ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION,
2779
+ status: HTTP_STATUS.ACCEPTED,
2780
+ category: ERROR_CATEGORY.Compliance,
2781
+ severity: ERROR_SEVERITY.Low,
2782
+ retryable: false,
2783
+ userMessage: "errors.storage.compliance.deferred_deletion"
2784
+ },
2785
+ [ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED]: {
2786
+ code: ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED,
2787
+ status: HTTP_STATUS.FORBIDDEN,
2788
+ category: ERROR_CATEGORY.Compliance,
2789
+ severity: ERROR_SEVERITY.High,
2790
+ retryable: false,
2791
+ userMessage: "errors.storage.compliance.pattern_protected"
2792
+ },
2793
+ // Share Links
2794
+ [ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND]: {
2795
+ code: ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND,
2796
+ status: HTTP_STATUS.NOT_FOUND,
2797
+ category: ERROR_CATEGORY.NotFound,
2798
+ severity: ERROR_SEVERITY.Low,
2799
+ retryable: false,
2800
+ userMessage: "errors.storage.share_link.not_found"
2801
+ },
2802
+ [ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED]: {
2803
+ code: ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED,
2804
+ status: HTTP_STATUS.GONE,
2805
+ category: ERROR_CATEGORY.Validation,
2806
+ severity: ERROR_SEVERITY.Low,
2807
+ retryable: false,
2808
+ userMessage: "errors.storage.share_link.expired"
2809
+ },
2810
+ [ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS]: {
2811
+ code: ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS,
2812
+ status: HTTP_STATUS.FORBIDDEN,
2813
+ category: ERROR_CATEGORY.Limits,
2814
+ severity: ERROR_SEVERITY.Low,
2815
+ retryable: false,
2816
+ userMessage: "errors.storage.share_link.max_downloads"
2817
+ },
2818
+ [ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD]: {
2819
+ code: ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD,
2820
+ status: HTTP_STATUS.UNAUTHORIZED,
2821
+ category: ERROR_CATEGORY.Authentication,
2822
+ severity: ERROR_SEVERITY.Low,
2823
+ retryable: false,
2824
+ userMessage: "errors.storage.share_link.invalid_password"
2825
+ },
2826
+ // Plugin
2827
+ [ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND]: {
2828
+ code: ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND,
2829
+ status: HTTP_STATUS.NOT_FOUND,
2830
+ category: ERROR_CATEGORY.Plugin,
2831
+ severity: ERROR_SEVERITY.Medium,
2832
+ retryable: false,
2833
+ userMessage: "errors.storage.plugin.not_found"
2834
+ },
2835
+ [ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED]: {
2836
+ code: ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED,
2837
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2838
+ category: ERROR_CATEGORY.Plugin,
2839
+ severity: ERROR_SEVERITY.High,
2840
+ retryable: false,
2841
+ userMessage: "errors.storage.plugin.initialization_failed"
2842
+ },
2843
+ [ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED]: {
2844
+ code: ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED,
2845
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2846
+ category: ERROR_CATEGORY.Plugin,
2847
+ severity: ERROR_SEVERITY.Medium,
2848
+ retryable: true,
2849
+ userMessage: "errors.storage.plugin.execution_failed"
2850
+ },
2851
+ // VirusTotal Provider (Plugin)
2852
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST]: {
2853
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST,
2854
+ status: HTTP_STATUS.BAD_REQUEST,
2855
+ category: ERROR_CATEGORY.Validation,
2856
+ severity: ERROR_SEVERITY.Low,
2857
+ retryable: false,
2858
+ userMessage: "errors.storage.virustotal.bad_request"
2859
+ },
2860
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED]: {
2861
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED,
2862
+ status: HTTP_STATUS.UNAUTHORIZED,
2863
+ category: ERROR_CATEGORY.Authentication,
2864
+ severity: ERROR_SEVERITY.Critical,
2865
+ retryable: false,
2866
+ userMessage: "errors.storage.virustotal.authentication_required"
2867
+ },
2868
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS]: {
2869
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS,
2870
+ status: HTTP_STATUS.UNAUTHORIZED,
2871
+ category: ERROR_CATEGORY.Authentication,
2872
+ severity: ERROR_SEVERITY.Critical,
2873
+ retryable: false,
2874
+ userMessage: "errors.storage.virustotal.wrong_credentials"
2875
+ },
2876
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE]: {
2877
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE,
2878
+ status: HTTP_STATUS.PAYLOAD_TOO_LARGE,
2879
+ category: ERROR_CATEGORY.Validation,
2880
+ severity: ERROR_SEVERITY.Medium,
2881
+ retryable: false,
2882
+ userMessage: "errors.storage.virustotal.file_too_large"
2883
+ },
2884
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED]: {
2885
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED,
2886
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2887
+ category: ERROR_CATEGORY.Quota,
2888
+ severity: ERROR_SEVERITY.Medium,
2889
+ retryable: true,
2890
+ userMessage: "errors.storage.virustotal.quota_exceeded"
2891
+ },
2892
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND]: {
2893
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND,
2894
+ status: HTTP_STATUS.NOT_FOUND,
2895
+ category: ERROR_CATEGORY.NotFound,
2896
+ severity: ERROR_SEVERITY.Low,
2897
+ retryable: false,
2898
+ userMessage: "errors.storage.virustotal.analysis_not_found"
2899
+ },
2900
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT]: {
2901
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT,
2902
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2903
+ category: ERROR_CATEGORY.Timeout,
2904
+ severity: ERROR_SEVERITY.Medium,
2905
+ retryable: true,
2906
+ userMessage: "errors.storage.virustotal.scan_timeout"
2907
+ },
2908
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED]: {
2909
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED,
2910
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2911
+ category: ERROR_CATEGORY.Plugin,
2912
+ severity: ERROR_SEVERITY.High,
2913
+ retryable: true,
2914
+ userMessage: "errors.storage.virustotal.scan_failed"
2915
+ },
2916
+ // CDN Providers (Plugins)
2917
+ // Cloudflare
2918
+ [ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED]: {
2919
+ code: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
2920
+ status: HTTP_STATUS.UNAUTHORIZED,
2921
+ category: ERROR_CATEGORY.Authentication,
2922
+ severity: ERROR_SEVERITY.High,
2923
+ retryable: false,
2924
+ userMessage: "errors.cloudflare.authentication.failed"
2925
+ },
2926
+ [ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND]: {
2927
+ code: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
2928
+ status: HTTP_STATUS.NOT_FOUND,
2929
+ category: ERROR_CATEGORY.NotFound,
2930
+ severity: ERROR_SEVERITY.High,
2931
+ retryable: false,
2932
+ userMessage: "errors.cloudflare.zone.not.found"
2933
+ },
2934
+ [ERROR_CODES.CLOUDFLARE_PURGE_FAILED]: {
2935
+ code: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
2936
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2937
+ category: ERROR_CATEGORY.Plugin,
2938
+ severity: ERROR_SEVERITY.Medium,
2939
+ retryable: true,
2940
+ userMessage: "errors.cloudflare.purge.failed"
2941
+ },
2942
+ [ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED]: {
2943
+ code: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
2944
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2945
+ category: ERROR_CATEGORY.RateLimit,
2946
+ severity: ERROR_SEVERITY.Medium,
2947
+ retryable: true,
2948
+ userMessage: "errors.cloudflare.rate.limit.exceeded"
2949
+ },
2950
+ [ERROR_CODES.CLOUDFLARE_INVALID_URL]: {
2951
+ code: ERROR_CODES.CLOUDFLARE_INVALID_URL,
2952
+ status: HTTP_STATUS.BAD_REQUEST,
2953
+ category: ERROR_CATEGORY.Validation,
2954
+ severity: ERROR_SEVERITY.Low,
2955
+ retryable: false,
2956
+ userMessage: "errors.cloudflare.invalid.url"
2957
+ },
2958
+ [ERROR_CODES.CLOUDFLARE_API_ERROR]: {
2959
+ code: ERROR_CODES.CLOUDFLARE_API_ERROR,
2960
+ status: HTTP_STATUS.BAD_GATEWAY,
2961
+ category: ERROR_CATEGORY.ExternalService,
2962
+ severity: ERROR_SEVERITY.High,
2963
+ retryable: true,
2964
+ userMessage: "errors.cloudflare.api.error"
2965
+ },
2966
+ // CloudFront
2967
+ [ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED]: {
2968
+ code: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
2969
+ status: HTTP_STATUS.UNAUTHORIZED,
2970
+ category: ERROR_CATEGORY.Authentication,
2971
+ severity: ERROR_SEVERITY.High,
2972
+ retryable: false,
2973
+ userMessage: "errors.cloudfront.authentication.failed"
2974
+ },
2975
+ [ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND]: {
2976
+ code: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
2977
+ status: HTTP_STATUS.NOT_FOUND,
2978
+ category: ERROR_CATEGORY.NotFound,
2979
+ severity: ERROR_SEVERITY.High,
2980
+ retryable: false,
2981
+ userMessage: "errors.cloudfront.distribution.not.found"
2982
+ },
2983
+ [ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED]: {
2984
+ code: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
2985
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2986
+ category: ERROR_CATEGORY.Plugin,
2987
+ severity: ERROR_SEVERITY.Medium,
2988
+ retryable: true,
2989
+ userMessage: "errors.cloudfront.invalidation.failed"
2990
+ },
2991
+ [ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED]: {
2992
+ code: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
2993
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2994
+ category: ERROR_CATEGORY.Quota,
2995
+ severity: ERROR_SEVERITY.Medium,
2996
+ retryable: true,
2997
+ userMessage: "errors.cloudfront.quota.exceeded"
2998
+ },
2999
+ [ERROR_CODES.CLOUDFRONT_INVALID_PATH]: {
3000
+ code: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
3001
+ status: HTTP_STATUS.BAD_REQUEST,
3002
+ category: ERROR_CATEGORY.Validation,
3003
+ severity: ERROR_SEVERITY.Low,
3004
+ retryable: false,
3005
+ userMessage: "errors.cloudfront.invalid.path"
3006
+ },
3007
+ [ERROR_CODES.CLOUDFRONT_API_ERROR]: {
3008
+ code: ERROR_CODES.CLOUDFRONT_API_ERROR,
3009
+ status: HTTP_STATUS.BAD_GATEWAY,
3010
+ category: ERROR_CATEGORY.ExternalService,
3011
+ severity: ERROR_SEVERITY.High,
3012
+ retryable: true,
3013
+ userMessage: "errors.cloudfront.api.error"
3014
+ },
3015
+ // Fastly
3016
+ [ERROR_CODES.FASTLY_AUTHENTICATION_FAILED]: {
3017
+ code: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
3018
+ status: HTTP_STATUS.UNAUTHORIZED,
3019
+ category: ERROR_CATEGORY.Authentication,
3020
+ severity: ERROR_SEVERITY.High,
3021
+ retryable: false,
3022
+ userMessage: "errors.fastly.authentication.failed"
3023
+ },
3024
+ [ERROR_CODES.FASTLY_SERVICE_NOT_FOUND]: {
3025
+ code: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
3026
+ status: HTTP_STATUS.NOT_FOUND,
3027
+ category: ERROR_CATEGORY.NotFound,
3028
+ severity: ERROR_SEVERITY.High,
3029
+ retryable: false,
3030
+ userMessage: "errors.fastly.service.not.found"
3031
+ },
3032
+ [ERROR_CODES.FASTLY_PURGE_FAILED]: {
3033
+ code: ERROR_CODES.FASTLY_PURGE_FAILED,
3034
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3035
+ category: ERROR_CATEGORY.Plugin,
3036
+ severity: ERROR_SEVERITY.Medium,
3037
+ retryable: true,
3038
+ userMessage: "errors.fastly.purge.failed"
3039
+ },
3040
+ [ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED]: {
3041
+ code: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
3042
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3043
+ category: ERROR_CATEGORY.RateLimit,
3044
+ severity: ERROR_SEVERITY.Medium,
3045
+ retryable: true,
3046
+ userMessage: "errors.fastly.rate.limit.exceeded"
3047
+ },
3048
+ [ERROR_CODES.FASTLY_INVALID_URL]: {
3049
+ code: ERROR_CODES.FASTLY_INVALID_URL,
3050
+ status: HTTP_STATUS.BAD_REQUEST,
3051
+ category: ERROR_CATEGORY.Validation,
3052
+ severity: ERROR_SEVERITY.Low,
3053
+ retryable: false,
3054
+ userMessage: "errors.fastly.invalid.url"
3055
+ },
3056
+ [ERROR_CODES.FASTLY_API_ERROR]: {
3057
+ code: ERROR_CODES.FASTLY_API_ERROR,
3058
+ status: HTTP_STATUS.BAD_GATEWAY,
3059
+ category: ERROR_CATEGORY.ExternalService,
3060
+ severity: ERROR_SEVERITY.High,
3061
+ retryable: true,
3062
+ userMessage: "errors.fastly.api.error"
3063
+ },
3064
+ // Generic CDN
3065
+ [ERROR_CODES.CDN_INVALIDATION_FAILED]: {
3066
+ code: ERROR_CODES.CDN_INVALIDATION_FAILED,
3067
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3068
+ category: ERROR_CATEGORY.Plugin,
3069
+ severity: ERROR_SEVERITY.Medium,
3070
+ retryable: true,
3071
+ userMessage: "errors.cdn.invalidation.failed"
3072
+ },
3073
+ [ERROR_CODES.CDN_CONFIGURATION_INVALID]: {
3074
+ code: ERROR_CODES.CDN_CONFIGURATION_INVALID,
3075
+ status: HTTP_STATUS.BAD_REQUEST,
3076
+ category: ERROR_CATEGORY.Configuration,
3077
+ severity: ERROR_SEVERITY.High,
3078
+ retryable: false,
3079
+ userMessage: "errors.cdn.configuration.invalid"
3080
+ },
3081
+ [ERROR_CODES.CDN_PROVIDER_NOT_FOUND]: {
3082
+ code: ERROR_CODES.CDN_PROVIDER_NOT_FOUND,
3083
+ status: HTTP_STATUS.NOT_FOUND,
3084
+ category: ERROR_CATEGORY.NotFound,
3085
+ severity: ERROR_SEVERITY.High,
3086
+ retryable: false,
3087
+ userMessage: "errors.cdn.provider.not.found"
3088
+ },
3089
+ // Webhook Errors
3090
+ [ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID]: {
3091
+ code: ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID,
3092
+ status: HTTP_STATUS.UNAUTHORIZED,
3093
+ category: ERROR_CATEGORY.Security,
3094
+ severity: ERROR_SEVERITY.Critical,
3095
+ retryable: false,
3096
+ userMessage: "errors.storage.webhook.signature_invalid"
3097
+ },
3098
+ [ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID]: {
3099
+ code: ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID,
3100
+ status: HTTP_STATUS.BAD_REQUEST,
3101
+ category: ERROR_CATEGORY.Validation,
3102
+ severity: ERROR_SEVERITY.Medium,
3103
+ retryable: false,
3104
+ userMessage: "errors.storage.webhook.payload_invalid"
3105
+ },
3106
+ [ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED]: {
3107
+ code: ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED,
3108
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3109
+ category: ERROR_CATEGORY.Processing,
3110
+ severity: ERROR_SEVERITY.High,
3111
+ retryable: true,
3112
+ userMessage: "errors.storage.webhook.processing_failed"
3113
+ },
3114
+ [ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT]: {
3115
+ code: ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT,
3116
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3117
+ category: ERROR_CATEGORY.Timeout,
3118
+ severity: ERROR_SEVERITY.Medium,
3119
+ retryable: true,
3120
+ userMessage: "errors.storage.webhook.timeout"
3121
+ },
3122
+ [ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND]: {
3123
+ code: ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND,
3124
+ status: HTTP_STATUS.NOT_FOUND,
3125
+ category: ERROR_CATEGORY.NotFound,
3126
+ severity: ERROR_SEVERITY.Medium,
3127
+ retryable: false,
3128
+ userMessage: "errors.storage.webhook.adapter_not_found"
3129
+ },
3130
+ [ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED]: {
3131
+ code: ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED,
3132
+ status: HTTP_STATUS.OK,
3133
+ category: ERROR_CATEGORY.Processing,
3134
+ severity: ERROR_SEVERITY.Low,
3135
+ retryable: false,
3136
+ userMessage: "errors.storage.webhook.duplicate_detected"
3137
+ },
3138
+ [ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR]: {
3139
+ code: ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR,
3140
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3141
+ category: ERROR_CATEGORY.Processing,
3142
+ severity: ERROR_SEVERITY.Medium,
3143
+ retryable: true,
3144
+ userMessage: "errors.storage.webhook.idempotency_error"
3145
+ },
3146
+ [ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED]: {
3147
+ code: ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED,
3148
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3149
+ category: ERROR_CATEGORY.RateLimit,
3150
+ severity: ERROR_SEVERITY.Medium,
3151
+ retryable: true,
3152
+ userMessage: "errors.storage.webhook.rate_limit_exceeded"
3153
+ },
3154
+ // Presigned URLs
3155
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED]: {
3156
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED,
3157
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3158
+ category: ERROR_CATEGORY.ExternalService,
3159
+ severity: ERROR_SEVERITY.High,
3160
+ retryable: true,
3161
+ userMessage: "errors.storage.presigned_url.generation_failed"
3162
+ },
3163
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED]: {
3164
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED,
3165
+ status: HTTP_STATUS.GONE,
3166
+ category: ERROR_CATEGORY.Validation,
3167
+ severity: ERROR_SEVERITY.Low,
3168
+ retryable: false,
3169
+ userMessage: "errors.storage.presigned_url.expired"
3170
+ },
3171
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID]: {
3172
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID,
3173
+ status: HTTP_STATUS.BAD_REQUEST,
3174
+ category: ERROR_CATEGORY.Validation,
3175
+ severity: ERROR_SEVERITY.Low,
3176
+ retryable: false,
3177
+ userMessage: "errors.storage.presigned_url.invalid"
3178
+ },
3179
+ // Chunked Upload
3180
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED]: {
3181
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED,
3182
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3183
+ category: ERROR_CATEGORY.FileOperation,
3184
+ severity: ERROR_SEVERITY.High,
3185
+ retryable: true,
3186
+ userMessage: "errors.storage.chunked_upload.init_failed"
3187
+ },
3188
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED]: {
3189
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED,
3190
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3191
+ category: ERROR_CATEGORY.FileOperation,
3192
+ severity: ERROR_SEVERITY.High,
3193
+ retryable: true,
3194
+ userMessage: "errors.storage.chunked_upload.part_failed"
3195
+ },
3196
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED]: {
3197
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED,
3198
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3199
+ category: ERROR_CATEGORY.FileOperation,
3200
+ severity: ERROR_SEVERITY.High,
3201
+ retryable: true,
3202
+ userMessage: "errors.storage.chunked_upload.complete_failed"
3203
+ },
3204
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED]: {
3205
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED,
3206
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3207
+ category: ERROR_CATEGORY.FileOperation,
3208
+ severity: ERROR_SEVERITY.Medium,
3209
+ retryable: true,
3210
+ userMessage: "errors.storage.chunked_upload.abort_failed"
3211
+ },
3212
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND]: {
3213
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND,
3214
+ status: HTTP_STATUS.NOT_FOUND,
3215
+ category: ERROR_CATEGORY.NotFound,
3216
+ severity: ERROR_SEVERITY.Low,
3217
+ retryable: false,
3218
+ userMessage: "errors.storage.chunked_upload.not_found"
3219
+ },
3220
+ // CORS
3221
+ [ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID]: {
3222
+ code: ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID,
3223
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3224
+ category: ERROR_CATEGORY.Configuration,
3225
+ severity: ERROR_SEVERITY.High,
3226
+ retryable: false,
3227
+ userMessage: "errors.storage.cors.configuration_invalid"
3228
+ },
3229
+ [ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED]: {
3230
+ code: ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED,
3231
+ status: HTTP_STATUS.FORBIDDEN,
3232
+ category: ERROR_CATEGORY.Authorization,
3233
+ severity: ERROR_SEVERITY.Medium,
3234
+ retryable: false,
3235
+ userMessage: "errors.storage.cors.origin_not_allowed"
3236
+ },
3237
+ // TTL
3238
+ [ERROR_CODES.STORAGE_TTL_EXPIRED]: {
3239
+ code: ERROR_CODES.STORAGE_TTL_EXPIRED,
3240
+ status: HTTP_STATUS.GONE,
3241
+ category: ERROR_CATEGORY.Validation,
3242
+ severity: ERROR_SEVERITY.Low,
3243
+ retryable: false,
3244
+ userMessage: "errors.storage.ttl.expired"
3245
+ },
3246
+ [ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED]: {
3247
+ code: ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED,
3248
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3249
+ category: ERROR_CATEGORY.Processing,
3250
+ severity: ERROR_SEVERITY.Low,
3251
+ retryable: true,
3252
+ userMessage: "errors.storage.ttl.cleanup_failed"
3253
+ },
3254
+ // Audit
3255
+ [ERROR_CODES.STORAGE_AUDIT_LOG_FAILED]: {
3256
+ code: ERROR_CODES.STORAGE_AUDIT_LOG_FAILED,
3257
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3258
+ category: ERROR_CATEGORY.System,
3259
+ severity: ERROR_SEVERITY.Low,
3260
+ retryable: false,
3261
+ userMessage: "errors.storage.audit.log_failed"
3262
+ },
3263
+ // Timeout & Network
3264
+ [ERROR_CODES.STORAGE_TIMEOUT]: {
3265
+ code: ERROR_CODES.STORAGE_TIMEOUT,
3266
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3267
+ category: ERROR_CATEGORY.Timeout,
3268
+ severity: ERROR_SEVERITY.Medium,
3269
+ retryable: true,
3270
+ userMessage: "errors.storage.timeout"
3271
+ },
3272
+ [ERROR_CODES.STORAGE_NETWORK_ERROR]: {
3273
+ code: ERROR_CODES.STORAGE_NETWORK_ERROR,
3274
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3275
+ category: ERROR_CATEGORY.Network,
3276
+ severity: ERROR_SEVERITY.High,
3277
+ retryable: true,
3278
+ userMessage: "errors.storage.network_error"
3279
+ },
3280
+ [ERROR_CODES.STORAGE_CONNECTION_LOST]: {
3281
+ code: ERROR_CODES.STORAGE_CONNECTION_LOST,
3282
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3283
+ category: ERROR_CATEGORY.Network,
3284
+ severity: ERROR_SEVERITY.High,
3285
+ retryable: true,
3286
+ userMessage: "errors.storage.connection_lost"
3287
+ },
3288
+ // Permission & Quota
3289
+ [ERROR_CODES.STORAGE_PERMISSION_DENIED]: {
3290
+ code: ERROR_CODES.STORAGE_PERMISSION_DENIED,
3291
+ status: HTTP_STATUS.FORBIDDEN,
3292
+ category: ERROR_CATEGORY.Authorization,
3293
+ severity: ERROR_SEVERITY.Medium,
3294
+ retryable: false,
3295
+ userMessage: "errors.storage.permission_denied"
3296
+ },
3297
+ [ERROR_CODES.STORAGE_QUOTA_EXCEEDED]: {
3298
+ code: ERROR_CODES.STORAGE_QUOTA_EXCEEDED,
3299
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
3300
+ category: ERROR_CATEGORY.Quota,
3301
+ severity: ERROR_SEVERITY.High,
3302
+ retryable: false,
3303
+ userMessage: "errors.storage.quota_exceeded"
3304
+ },
3305
+ [ERROR_CODES.STORAGE_INSUFFICIENT_SPACE]: {
3306
+ code: ERROR_CODES.STORAGE_INSUFFICIENT_SPACE,
3307
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
3308
+ category: ERROR_CATEGORY.Quota,
3309
+ severity: ERROR_SEVERITY.High,
3310
+ retryable: false,
3311
+ userMessage: "errors.storage.insufficient_space"
3312
+ },
3313
+ [ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED]: {
3314
+ code: ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED,
3315
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
3316
+ category: ERROR_CATEGORY.Server,
3317
+ severity: ERROR_SEVERITY.Medium,
3318
+ retryable: false,
3319
+ userMessage: "errors.storage.feature.not_implemented"
3320
+ },
1841
3321
  // ===== Errors Package Errors =====
1842
3322
  [ERROR_CODES.ERROR_SYSTEM_NOT_INITIALIZED]: {
1843
3323
  code: ERROR_CODES.ERROR_SYSTEM_NOT_INITIALIZED,
@@ -3238,5 +4718,6 @@ exports.ERROR_TYPE = ERROR_TYPE;
3238
4718
  exports.INTERNAL_STATUS_CODES = INTERNAL_STATUS_CODES;
3239
4719
  exports.NOTIFICATION_ERROR_CODES = NOTIFICATION_ERROR_CODES;
3240
4720
  exports.PAYMENT_ERROR_CODES = PAYMENT_ERROR_CODES;
4721
+ exports.STORAGE_ERROR_CODES = STORAGE_ERROR_CODES;
3241
4722
  //# sourceMappingURL=index.cjs.map
3242
4723
  //# sourceMappingURL=index.cjs.map