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