@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
@@ -573,6 +573,12 @@ var ERROR_CATEGORY = {
573
573
  Refund: "refund",
574
574
  /** Security-related error (e.g., encryption or signature failure). */
575
575
  Security: "security",
576
+ /** File operation error (e.g., upload, download, delete failure). */
577
+ FileOperation: "file.operation",
578
+ /** Plugin-related error (e.g., plugin initialization or execution failure). */
579
+ Plugin: "plugin",
580
+ /** Quota or storage limit error (e.g., exceeded storage quota). */
581
+ Quota: "quota",
576
582
  /** Unknown or unclassified error. */
577
583
  Unknown: "unknown"
578
584
  };
@@ -638,6 +644,9 @@ var INTERNAL_STATUS_CODES = {
638
644
  [ERROR_CATEGORY.System]: "system",
639
645
  [ERROR_CATEGORY.Refund]: "refund",
640
646
  [ERROR_CATEGORY.Security]: "security",
647
+ [ERROR_CATEGORY.FileOperation]: "fileOperation",
648
+ [ERROR_CATEGORY.Plugin]: "plugin",
649
+ [ERROR_CATEGORY.Quota]: "quota",
641
650
  [ERROR_CATEGORY.Unknown]: "unknown"
642
651
  });
643
652
  var COMMON_OPERATIONS = {
@@ -736,6 +745,10 @@ var HTTP_STATUS = {
736
745
  * 200 OK - The request succeeded
737
746
  */
738
747
  OK: 200,
748
+ /**
749
+ * 202 Accepted - The request has been received but not yet acted upon
750
+ */
751
+ ACCEPTED: 202,
739
752
  // 4xx Client Errors
740
753
  /**
741
754
  * 400 Bad Request - The server cannot process the request due to client error
@@ -761,6 +774,18 @@ var HTTP_STATUS = {
761
774
  * 409 Conflict - The request conflicts with the current state of the server
762
775
  */
763
776
  CONFLICT: 409,
777
+ /**
778
+ * 410 Gone - The requested resource is no longer available and will not be available again
779
+ */
780
+ GONE: 410,
781
+ /**
782
+ * 413 Payload Too Large - The request is larger than the server is willing to process
783
+ */
784
+ PAYLOAD_TOO_LARGE: 413,
785
+ /**
786
+ * 415 Unsupported Media Type - The request entity has a media type not supported by the server
787
+ */
788
+ UNSUPPORTED_MEDIA_TYPE: 415,
764
789
  /**
765
790
  * 422 Unprocessable Entity - The request was well-formed but was unable to be followed due to semantic errors
766
791
  */
@@ -794,6 +819,10 @@ var HTTP_STATUS = {
794
819
  * 504 Gateway Timeout - The server did not get a response in time from the upstream server
795
820
  */
796
821
  GATEWAY_TIMEOUT: 504,
822
+ /**
823
+ * 507 Insufficient Storage - The server is unable to store the representation needed to complete the request
824
+ */
825
+ INSUFFICIENT_STORAGE: 507,
797
826
  /**
798
827
  * 511 Network Authentication Required - The client needs to authenticate to gain network access
799
828
  */
@@ -939,6 +968,168 @@ var ERROR_CODES = {
939
968
  // General Notification
940
969
  NOTIFICATION_UNKNOWN_ERROR: "notification.unknown.error",
941
970
  NOTIFICATION_INITIALIZATION_FAILED: "notification.initialization.failed",
971
+ // ===== Storage Package Errors =====
972
+ // General
973
+ STORAGE_UNKNOWN_ERROR: "storage.unknown.error",
974
+ STORAGE_INITIALIZATION_FAILED: "storage.initialization.failed",
975
+ // Adapter
976
+ STORAGE_ADAPTER_NOT_FOUND: "storage.adapter.not.found",
977
+ STORAGE_ADAPTER_INITIALIZATION_FAILED: "storage.adapter.initialization.failed",
978
+ STORAGE_ADAPTER_CONFIGURATION_INVALID: "storage.adapter.configuration.invalid",
979
+ STORAGE_ADAPTER_ALREADY_REGISTERED: "storage.adapter.already.registered",
980
+ STORAGE_ADAPTER_CONNECTION_FAILED: "storage.adapter.connection.failed",
981
+ STORAGE_ADAPTER_AUTHENTICATION_FAILED: "storage.adapter.authentication.failed",
982
+ STORAGE_ADAPTER_OPERATION_FAILED: "storage.adapter.operation.failed",
983
+ STORAGE_ADAPTER_HEALTH_CHECK_FAILED: "storage.adapter.health.check.failed",
984
+ STORAGE_ADAPTER_UNAVAILABLE: "storage.adapter.unavailable",
985
+ STORAGE_ADAPTER_TIMEOUT: "storage.adapter.timeout",
986
+ STORAGE_ADAPTER_RATE_LIMIT: "storage.adapter.rate.limit",
987
+ STORAGE_ADAPTER_QUOTA_EXCEEDED: "storage.adapter.quota.exceeded",
988
+ STORAGE_ADAPTER_UNSUPPORTED_OPERATION: "storage.adapter.unsupported.operation",
989
+ STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED: "storage.adapter.feature.not.supported",
990
+ STORAGE_NO_HEALTHY_ADAPTERS: "storage.no.healthy.adapters",
991
+ STORAGE_ALL_ADAPTERS_FAILED: "storage.all.adapters.failed",
992
+ // File Validation
993
+ STORAGE_FILE_TOO_LARGE: "storage.file.too.large",
994
+ STORAGE_FILE_TOO_SMALL: "storage.file.too.small",
995
+ STORAGE_FILE_SIZE_INVALID: "storage.file.size.invalid",
996
+ STORAGE_FILE_TYPE_NOT_ALLOWED: "storage.file.type.not.allowed",
997
+ STORAGE_INVALID_MIME_TYPE: "storage.invalid.mime.type",
998
+ STORAGE_INVALID_FILE_EXTENSION: "storage.invalid.file.extension",
999
+ STORAGE_FILE_EXTENSION_INVALID: "storage.file.extension.invalid",
1000
+ STORAGE_FILE_EXTENSION_MISMATCH: "storage.file.extension.mismatch",
1001
+ STORAGE_EXECUTABLE_NOT_ALLOWED: "storage.executable.not.allowed",
1002
+ STORAGE_VALIDATION_FAILED: "storage.validation.failed",
1003
+ STORAGE_INVALID_FILE_CONTENT: "storage.invalid.file.content",
1004
+ // Security
1005
+ STORAGE_SECURITY_VIRUS_DETECTED: "storage.security.virus.detected",
1006
+ STORAGE_SECURITY_SCAN_FAILED: "storage.security.scan.failed",
1007
+ STORAGE_SECURITY_ACCESS_DENIED: "storage.security.access.denied",
1008
+ STORAGE_SECURITY_ENCRYPTION_FAILED: "storage.security.encryption.failed",
1009
+ // File Operations
1010
+ STORAGE_FILE_UPLOAD_FAILED: "storage.file.upload.failed",
1011
+ STORAGE_FILE_DOWNLOAD_FAILED: "storage.file.download.failed",
1012
+ STORAGE_FILE_DELETE_FAILED: "storage.file.delete.failed",
1013
+ STORAGE_FILE_UPDATE_FAILED: "storage.file.update.failed",
1014
+ STORAGE_FILE_NOT_FOUND: "storage.file.not.found",
1015
+ STORAGE_FILE_ALREADY_EXISTS: "storage.file.already.exists",
1016
+ STORAGE_FILE_MOVE_FAILED: "storage.file.move.failed",
1017
+ STORAGE_FILE_COPY_FAILED: "storage.file.copy.failed",
1018
+ STORAGE_FILE_READ_FAILED: "storage.file.read.failed",
1019
+ STORAGE_FILE_WRITE_FAILED: "storage.file.write.failed",
1020
+ STORAGE_FILE_CORRUPTED: "storage.file.corrupted",
1021
+ STORAGE_INVALID_OPERATION: "storage.invalid.operation",
1022
+ // Metadata
1023
+ STORAGE_METADATA_EXTRACTION_FAILED: "storage.metadata.extraction.failed",
1024
+ STORAGE_METADATA_INVALID: "storage.metadata.invalid",
1025
+ STORAGE_METADATA_UPDATE_FAILED: "storage.metadata.update.failed",
1026
+ // Media Processing
1027
+ STORAGE_MEDIA_PROCESSING_FAILED: "storage.media.processing.failed",
1028
+ STORAGE_MEDIA_RESIZE_FAILED: "storage.media.resize.failed",
1029
+ STORAGE_MEDIA_FORMAT_UNSUPPORTED: "storage.media.format.unsupported",
1030
+ STORAGE_MEDIA_TRANSCODE_FAILED: "storage.media.transcode.failed",
1031
+ STORAGE_MEDIA_THUMBNAIL_FAILED: "storage.media.thumbnail.failed",
1032
+ STORAGE_MEDIA_INVALID_DIMENSIONS: "storage.media.invalid.dimensions",
1033
+ // Template & PDF
1034
+ STORAGE_TEMPLATE_NOT_FOUND: "storage.template.not.found",
1035
+ STORAGE_TEMPLATE_RENDER_FAILED: "storage.template.render.failed",
1036
+ STORAGE_PDF_GENERATION_FAILED: "storage.pdf.generation.failed",
1037
+ STORAGE_PDF_RENDERING_TIMEOUT: "storage.pdf.rendering.timeout",
1038
+ // Queue
1039
+ STORAGE_QUEUE_FULL: "storage.queue.full",
1040
+ STORAGE_QUEUE_PROCESSING_FAILED: "storage.queue.processing.failed",
1041
+ STORAGE_QUEUE_ITEM_NOT_FOUND: "storage.queue.item.not.found",
1042
+ // Compliance
1043
+ STORAGE_COMPLIANCE_VIOLATION: "storage.compliance.violation",
1044
+ STORAGE_COMPLIANCE_RETENTION_VIOLATION: "storage.compliance.retention.violation",
1045
+ STORAGE_COMPLIANCE_RETENTION_EXPIRED: "storage.compliance.retention.expired",
1046
+ STORAGE_COMPLIANCE_IMMUTABLE_FILE: "storage.compliance.immutable.file",
1047
+ STORAGE_COMPLIANCE_POLICY_NOT_FOUND: "storage.compliance.policy.not.found",
1048
+ STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED: "storage.compliance.soft.delete.required",
1049
+ STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE: "storage.compliance.grace.period.active",
1050
+ STORAGE_COMPLIANCE_DEFERRED_DELETION: "storage.compliance.deferred.deletion",
1051
+ STORAGE_COMPLIANCE_PATTERN_PROTECTED: "storage.compliance.pattern.protected",
1052
+ // Share Links
1053
+ STORAGE_SHARE_LINK_NOT_FOUND: "storage.share.link.not.found",
1054
+ STORAGE_SHARE_LINK_EXPIRED: "storage.share.link.expired",
1055
+ STORAGE_SHARE_LINK_MAX_DOWNLOADS: "storage.share.link.max.downloads",
1056
+ STORAGE_SHARE_LINK_INVALID_PASSWORD: "storage.share.link.invalid.password",
1057
+ // Plugin
1058
+ STORAGE_PLUGIN_NOT_FOUND: "storage.plugin.not.found",
1059
+ STORAGE_PLUGIN_INITIALIZATION_FAILED: "storage.plugin.initialization.failed",
1060
+ STORAGE_PLUGIN_EXECUTION_FAILED: "storage.plugin.execution.failed",
1061
+ // VirusTotal Provider (Plugin)
1062
+ STORAGE_VIRUSTOTAL_BAD_REQUEST: "storage.virustotal.bad_request",
1063
+ STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED: "storage.virustotal.authentication_required",
1064
+ STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS: "storage.virustotal.wrong_credentials",
1065
+ STORAGE_VIRUSTOTAL_FILE_TOO_LARGE: "storage.virustotal.file_too_large",
1066
+ STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED: "storage.virustotal.quota_exceeded",
1067
+ STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND: "storage.virustotal.analysis_not_found",
1068
+ STORAGE_VIRUSTOTAL_SCAN_TIMEOUT: "storage.virustotal.scan_timeout",
1069
+ STORAGE_VIRUSTOTAL_SCAN_FAILED: "storage.virustotal.scan_failed",
1070
+ // CDN Provider Errors (Third-party services - cross-package)
1071
+ // Cloudflare CDN
1072
+ CLOUDFLARE_AUTHENTICATION_FAILED: "cloudflare.authentication.failed",
1073
+ CLOUDFLARE_ZONE_NOT_FOUND: "cloudflare.zone.not.found",
1074
+ CLOUDFLARE_PURGE_FAILED: "cloudflare.purge.failed",
1075
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: "cloudflare.rate.limit.exceeded",
1076
+ CLOUDFLARE_INVALID_URL: "cloudflare.invalid.url",
1077
+ CLOUDFLARE_API_ERROR: "cloudflare.api.error",
1078
+ // AWS CloudFront CDN
1079
+ CLOUDFRONT_AUTHENTICATION_FAILED: "cloudfront.authentication.failed",
1080
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: "cloudfront.distribution.not.found",
1081
+ CLOUDFRONT_INVALIDATION_FAILED: "cloudfront.invalidation.failed",
1082
+ CLOUDFRONT_QUOTA_EXCEEDED: "cloudfront.quota.exceeded",
1083
+ CLOUDFRONT_INVALID_PATH: "cloudfront.invalid.path",
1084
+ CLOUDFRONT_API_ERROR: "cloudfront.api.error",
1085
+ // Fastly CDN
1086
+ FASTLY_AUTHENTICATION_FAILED: "fastly.authentication.failed",
1087
+ FASTLY_SERVICE_NOT_FOUND: "fastly.service.not.found",
1088
+ FASTLY_PURGE_FAILED: "fastly.purge.failed",
1089
+ FASTLY_RATE_LIMIT_EXCEEDED: "fastly.rate.limit.exceeded",
1090
+ FASTLY_INVALID_URL: "fastly.invalid.url",
1091
+ FASTLY_API_ERROR: "fastly.api.error",
1092
+ // Generic CDN Errors
1093
+ CDN_INVALIDATION_FAILED: "cdn.invalidation.failed",
1094
+ CDN_CONFIGURATION_INVALID: "cdn.configuration.invalid",
1095
+ CDN_PROVIDER_NOT_FOUND: "cdn.provider.not.found",
1096
+ // Webhook Errors
1097
+ STORAGE_WEBHOOK_SIGNATURE_INVALID: "storage.webhook.signature.invalid",
1098
+ STORAGE_WEBHOOK_PAYLOAD_INVALID: "storage.webhook.payload.invalid",
1099
+ STORAGE_WEBHOOK_PROCESSING_FAILED: "storage.webhook.processing.failed",
1100
+ STORAGE_WEBHOOK_TIMEOUT: "storage.webhook.timeout",
1101
+ STORAGE_WEBHOOK_ADAPTER_NOT_FOUND: "storage.webhook.adapter.not.found",
1102
+ STORAGE_WEBHOOK_DUPLICATE_DETECTED: "storage.webhook.duplicate.detected",
1103
+ STORAGE_WEBHOOK_IDEMPOTENCY_ERROR: "storage.webhook.idempotency.error",
1104
+ STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED: "storage.webhook.rate.limit.exceeded",
1105
+ // Presigned URLs
1106
+ STORAGE_PRESIGNED_URL_GENERATION_FAILED: "storage.presigned.url.generation.failed",
1107
+ STORAGE_PRESIGNED_URL_EXPIRED: "storage.presigned.url.expired",
1108
+ STORAGE_PRESIGNED_URL_INVALID: "storage.presigned.url.invalid",
1109
+ // Chunked Upload
1110
+ STORAGE_CHUNKED_UPLOAD_INIT_FAILED: "storage.chunked.upload.init.failed",
1111
+ STORAGE_CHUNKED_UPLOAD_PART_FAILED: "storage.chunked.upload.part.failed",
1112
+ STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED: "storage.chunked.upload.complete.failed",
1113
+ STORAGE_CHUNKED_UPLOAD_ABORT_FAILED: "storage.chunked.upload.abort.failed",
1114
+ STORAGE_CHUNKED_UPLOAD_NOT_FOUND: "storage.chunked.upload.not.found",
1115
+ // CORS
1116
+ STORAGE_CORS_CONFIGURATION_INVALID: "storage.cors.configuration.invalid",
1117
+ STORAGE_CORS_ORIGIN_NOT_ALLOWED: "storage.cors.origin.not.allowed",
1118
+ // TTL
1119
+ STORAGE_TTL_EXPIRED: "storage.ttl.expired",
1120
+ STORAGE_TTL_CLEANUP_FAILED: "storage.ttl.cleanup.failed",
1121
+ // Audit
1122
+ STORAGE_AUDIT_LOG_FAILED: "storage.audit.log.failed",
1123
+ // Timeout & Network
1124
+ STORAGE_TIMEOUT: "storage.timeout",
1125
+ STORAGE_NETWORK_ERROR: "storage.network.error",
1126
+ STORAGE_CONNECTION_LOST: "storage.connection.lost",
1127
+ // Permission & Quota
1128
+ STORAGE_PERMISSION_DENIED: "storage.permission.denied",
1129
+ STORAGE_QUOTA_EXCEEDED: "storage.quota.exceeded",
1130
+ STORAGE_INSUFFICIENT_SPACE: "storage.insufficient.space",
1131
+ // Feature Implementation
1132
+ STORAGE_FEATURE_NOT_IMPLEMENTED: "storage.feature.not.implemented",
942
1133
  // ===== Errors Package Errors =====
943
1134
  ERROR_SYSTEM_NOT_INITIALIZED: "error.system.not.initialized",
944
1135
  EVENT_FACTORY_NOT_REGISTERED: "error.event.factory.not.registered",
@@ -1228,7 +1419,33 @@ var API_ERROR_CODES = {
1228
1419
  MONITORING_FAILED: ERROR_CODES.MONITORING_FAILED,
1229
1420
  CONTEXT_OPERATION_FAILED: ERROR_CODES.CONTEXT_OPERATION_FAILED,
1230
1421
  CLIENT_ERROR: ERROR_CODES.CLIENT_ERROR,
1231
- UNKNOWN_ERROR: ERROR_CODES.UNKNOWN_ERROR
1422
+ UNKNOWN_ERROR: ERROR_CODES.UNKNOWN_ERROR,
1423
+ // CDN Provider Errors (Third-party services)
1424
+ // Cloudflare
1425
+ CLOUDFLARE_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
1426
+ CLOUDFLARE_ZONE_NOT_FOUND: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
1427
+ CLOUDFLARE_PURGE_FAILED: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
1428
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
1429
+ CLOUDFLARE_INVALID_URL: ERROR_CODES.CLOUDFLARE_INVALID_URL,
1430
+ CLOUDFLARE_API_ERROR: ERROR_CODES.CLOUDFLARE_API_ERROR,
1431
+ // CloudFront
1432
+ CLOUDFRONT_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
1433
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
1434
+ CLOUDFRONT_INVALIDATION_FAILED: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
1435
+ CLOUDFRONT_QUOTA_EXCEEDED: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
1436
+ CLOUDFRONT_INVALID_PATH: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
1437
+ CLOUDFRONT_API_ERROR: ERROR_CODES.CLOUDFRONT_API_ERROR,
1438
+ // Fastly
1439
+ FASTLY_AUTHENTICATION_FAILED: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
1440
+ FASTLY_SERVICE_NOT_FOUND: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
1441
+ FASTLY_PURGE_FAILED: ERROR_CODES.FASTLY_PURGE_FAILED,
1442
+ FASTLY_RATE_LIMIT_EXCEEDED: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
1443
+ FASTLY_INVALID_URL: ERROR_CODES.FASTLY_INVALID_URL,
1444
+ FASTLY_API_ERROR: ERROR_CODES.FASTLY_API_ERROR,
1445
+ // Generic CDN
1446
+ CDN_INVALIDATION_FAILED: ERROR_CODES.CDN_INVALIDATION_FAILED,
1447
+ CDN_CONFIGURATION_INVALID: ERROR_CODES.CDN_CONFIGURATION_INVALID,
1448
+ CDN_PROVIDER_NOT_FOUND: ERROR_CODES.CDN_PROVIDER_NOT_FOUND
1232
1449
  };
1233
1450
  var ERROR_DEFINITIONS = {
1234
1451
  // ===== API Package Error Definitions =====
@@ -2089,6 +2306,1105 @@ var ERROR_DEFINITIONS = {
2089
2306
  retryable: false,
2090
2307
  userMessage: "errors.notification.initialization_failed"
2091
2308
  },
2309
+ // ===== Storage Package Error Definitions =====
2310
+ // General
2311
+ [ERROR_CODES.STORAGE_UNKNOWN_ERROR]: {
2312
+ code: ERROR_CODES.STORAGE_UNKNOWN_ERROR,
2313
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2314
+ category: ERROR_CATEGORY.Unknown,
2315
+ severity: ERROR_SEVERITY.Medium,
2316
+ retryable: false,
2317
+ userMessage: "errors.storage.unknown"
2318
+ },
2319
+ [ERROR_CODES.STORAGE_INITIALIZATION_FAILED]: {
2320
+ code: ERROR_CODES.STORAGE_INITIALIZATION_FAILED,
2321
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2322
+ category: ERROR_CATEGORY.Configuration,
2323
+ severity: ERROR_SEVERITY.Critical,
2324
+ retryable: false,
2325
+ userMessage: "errors.storage.initialization_failed"
2326
+ },
2327
+ // Adapter errors
2328
+ [ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND]: {
2329
+ code: ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND,
2330
+ status: HTTP_STATUS.NOT_FOUND,
2331
+ category: ERROR_CATEGORY.Configuration,
2332
+ severity: ERROR_SEVERITY.Critical,
2333
+ retryable: false,
2334
+ userMessage: "errors.storage.adapter.not_found"
2335
+ },
2336
+ [ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED]: {
2337
+ code: ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED,
2338
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2339
+ category: ERROR_CATEGORY.ExternalService,
2340
+ severity: ERROR_SEVERITY.Critical,
2341
+ retryable: false,
2342
+ userMessage: "errors.storage.adapter.initialization_failed"
2343
+ },
2344
+ [ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID]: {
2345
+ code: ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID,
2346
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2347
+ category: ERROR_CATEGORY.Configuration,
2348
+ severity: ERROR_SEVERITY.Critical,
2349
+ retryable: false,
2350
+ userMessage: "errors.storage.adapter.configuration_invalid"
2351
+ },
2352
+ [ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED]: {
2353
+ code: ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED,
2354
+ status: HTTP_STATUS.CONFLICT,
2355
+ category: ERROR_CATEGORY.Configuration,
2356
+ severity: ERROR_SEVERITY.High,
2357
+ retryable: false,
2358
+ userMessage: "errors.storage.adapter.already_registered"
2359
+ },
2360
+ [ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED]: {
2361
+ code: ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED,
2362
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2363
+ category: ERROR_CATEGORY.Network,
2364
+ severity: ERROR_SEVERITY.High,
2365
+ retryable: true,
2366
+ userMessage: "errors.storage.adapter.connection_failed"
2367
+ },
2368
+ [ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED]: {
2369
+ code: ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED,
2370
+ status: HTTP_STATUS.UNAUTHORIZED,
2371
+ category: ERROR_CATEGORY.Authentication,
2372
+ severity: ERROR_SEVERITY.Critical,
2373
+ retryable: false,
2374
+ userMessage: "errors.storage.adapter.authentication_failed"
2375
+ },
2376
+ [ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED]: {
2377
+ code: ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED,
2378
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2379
+ category: ERROR_CATEGORY.ExternalService,
2380
+ severity: ERROR_SEVERITY.High,
2381
+ retryable: true,
2382
+ userMessage: "errors.storage.adapter.operation_failed"
2383
+ },
2384
+ [ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED]: {
2385
+ code: ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED,
2386
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2387
+ category: ERROR_CATEGORY.ExternalService,
2388
+ severity: ERROR_SEVERITY.Medium,
2389
+ retryable: true,
2390
+ userMessage: "errors.storage.adapter.health_check_failed"
2391
+ },
2392
+ [ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE]: {
2393
+ code: ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE,
2394
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2395
+ category: ERROR_CATEGORY.ExternalService,
2396
+ severity: ERROR_SEVERITY.High,
2397
+ retryable: true,
2398
+ userMessage: "errors.storage.adapter.unavailable"
2399
+ },
2400
+ [ERROR_CODES.STORAGE_ADAPTER_TIMEOUT]: {
2401
+ code: ERROR_CODES.STORAGE_ADAPTER_TIMEOUT,
2402
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2403
+ category: ERROR_CATEGORY.Timeout,
2404
+ severity: ERROR_SEVERITY.Medium,
2405
+ retryable: true,
2406
+ userMessage: "errors.storage.adapter.timeout"
2407
+ },
2408
+ [ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT]: {
2409
+ code: ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT,
2410
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2411
+ category: ERROR_CATEGORY.RateLimit,
2412
+ severity: ERROR_SEVERITY.Medium,
2413
+ retryable: true,
2414
+ userMessage: "errors.storage.adapter.rate_limit"
2415
+ },
2416
+ [ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED]: {
2417
+ code: ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED,
2418
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
2419
+ category: ERROR_CATEGORY.Quota,
2420
+ severity: ERROR_SEVERITY.High,
2421
+ retryable: false,
2422
+ userMessage: "errors.storage.adapter.quota_exceeded"
2423
+ },
2424
+ [ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION]: {
2425
+ code: ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION,
2426
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2427
+ category: ERROR_CATEGORY.ExternalService,
2428
+ severity: ERROR_SEVERITY.Medium,
2429
+ retryable: false,
2430
+ userMessage: "errors.storage.adapter.unsupported_operation"
2431
+ },
2432
+ [ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED]: {
2433
+ code: ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED,
2434
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2435
+ category: ERROR_CATEGORY.ExternalService,
2436
+ severity: ERROR_SEVERITY.Medium,
2437
+ retryable: false,
2438
+ userMessage: "errors.storage.adapter.feature_not_supported"
2439
+ },
2440
+ [ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS]: {
2441
+ code: ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS,
2442
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2443
+ category: ERROR_CATEGORY.ExternalService,
2444
+ severity: ERROR_SEVERITY.Critical,
2445
+ retryable: true,
2446
+ userMessage: "errors.storage.no_healthy_adapters"
2447
+ },
2448
+ [ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED]: {
2449
+ code: ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED,
2450
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2451
+ category: ERROR_CATEGORY.ExternalService,
2452
+ severity: ERROR_SEVERITY.Critical,
2453
+ retryable: true,
2454
+ userMessage: "errors.storage.all_adapters_failed"
2455
+ },
2456
+ // File Validation
2457
+ [ERROR_CODES.STORAGE_FILE_TOO_LARGE]: {
2458
+ code: ERROR_CODES.STORAGE_FILE_TOO_LARGE,
2459
+ status: HTTP_STATUS.PAYLOAD_TOO_LARGE,
2460
+ category: ERROR_CATEGORY.Validation,
2461
+ severity: ERROR_SEVERITY.Low,
2462
+ retryable: false,
2463
+ userMessage: "errors.storage.file.too_large"
2464
+ },
2465
+ [ERROR_CODES.STORAGE_FILE_TOO_SMALL]: {
2466
+ code: ERROR_CODES.STORAGE_FILE_TOO_SMALL,
2467
+ status: HTTP_STATUS.BAD_REQUEST,
2468
+ category: ERROR_CATEGORY.Validation,
2469
+ severity: ERROR_SEVERITY.Low,
2470
+ retryable: false,
2471
+ userMessage: "errors.storage.file.too_small"
2472
+ },
2473
+ [ERROR_CODES.STORAGE_FILE_SIZE_INVALID]: {
2474
+ code: ERROR_CODES.STORAGE_FILE_SIZE_INVALID,
2475
+ status: HTTP_STATUS.BAD_REQUEST,
2476
+ category: ERROR_CATEGORY.Validation,
2477
+ severity: ERROR_SEVERITY.Low,
2478
+ retryable: false,
2479
+ userMessage: "errors.storage.file.size.invalid"
2480
+ },
2481
+ [ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED]: {
2482
+ code: ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED,
2483
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2484
+ category: ERROR_CATEGORY.Security,
2485
+ severity: ERROR_SEVERITY.Medium,
2486
+ retryable: false,
2487
+ userMessage: "errors.storage.file.type.not_allowed"
2488
+ },
2489
+ [ERROR_CODES.STORAGE_INVALID_MIME_TYPE]: {
2490
+ code: ERROR_CODES.STORAGE_INVALID_MIME_TYPE,
2491
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2492
+ category: ERROR_CATEGORY.Validation,
2493
+ severity: ERROR_SEVERITY.Low,
2494
+ retryable: false,
2495
+ userMessage: "errors.storage.mime_type.invalid"
2496
+ },
2497
+ [ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION]: {
2498
+ code: ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION,
2499
+ status: HTTP_STATUS.BAD_REQUEST,
2500
+ category: ERROR_CATEGORY.Validation,
2501
+ severity: ERROR_SEVERITY.Low,
2502
+ retryable: false,
2503
+ userMessage: "errors.storage.extension.invalid"
2504
+ },
2505
+ [ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID]: {
2506
+ code: ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID,
2507
+ status: HTTP_STATUS.BAD_REQUEST,
2508
+ category: ERROR_CATEGORY.Validation,
2509
+ severity: ERROR_SEVERITY.Low,
2510
+ retryable: false,
2511
+ userMessage: "errors.storage.file.extension.invalid"
2512
+ },
2513
+ [ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH]: {
2514
+ code: ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH,
2515
+ status: HTTP_STATUS.BAD_REQUEST,
2516
+ category: ERROR_CATEGORY.Validation,
2517
+ severity: ERROR_SEVERITY.Medium,
2518
+ retryable: false,
2519
+ userMessage: "errors.storage.file.extension.mismatch"
2520
+ },
2521
+ [ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED]: {
2522
+ code: ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED,
2523
+ status: HTTP_STATUS.FORBIDDEN,
2524
+ category: ERROR_CATEGORY.Security,
2525
+ severity: ERROR_SEVERITY.High,
2526
+ retryable: false,
2527
+ userMessage: "errors.storage.executable_not_allowed"
2528
+ },
2529
+ [ERROR_CODES.STORAGE_VALIDATION_FAILED]: {
2530
+ code: ERROR_CODES.STORAGE_VALIDATION_FAILED,
2531
+ status: HTTP_STATUS.BAD_REQUEST,
2532
+ category: ERROR_CATEGORY.Validation,
2533
+ severity: ERROR_SEVERITY.Low,
2534
+ retryable: false,
2535
+ userMessage: "errors.storage.validation.failed"
2536
+ },
2537
+ [ERROR_CODES.STORAGE_INVALID_FILE_CONTENT]: {
2538
+ code: ERROR_CODES.STORAGE_INVALID_FILE_CONTENT,
2539
+ status: HTTP_STATUS.BAD_REQUEST,
2540
+ category: ERROR_CATEGORY.Validation,
2541
+ severity: ERROR_SEVERITY.Medium,
2542
+ retryable: false,
2543
+ userMessage: "errors.storage.validation.invalid_file_content"
2544
+ },
2545
+ // Security
2546
+ [ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED]: {
2547
+ code: ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED,
2548
+ status: HTTP_STATUS.FORBIDDEN,
2549
+ category: ERROR_CATEGORY.Security,
2550
+ severity: ERROR_SEVERITY.Critical,
2551
+ retryable: false,
2552
+ userMessage: "errors.storage.security.virus_detected"
2553
+ },
2554
+ [ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED]: {
2555
+ code: ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED,
2556
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2557
+ category: ERROR_CATEGORY.Security,
2558
+ severity: ERROR_SEVERITY.High,
2559
+ retryable: true,
2560
+ userMessage: "errors.storage.security.scan_failed"
2561
+ },
2562
+ [ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED]: {
2563
+ code: ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED,
2564
+ status: HTTP_STATUS.FORBIDDEN,
2565
+ category: ERROR_CATEGORY.Authorization,
2566
+ severity: ERROR_SEVERITY.Medium,
2567
+ retryable: false,
2568
+ userMessage: "errors.storage.security.access_denied"
2569
+ },
2570
+ [ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED]: {
2571
+ code: ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED,
2572
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2573
+ category: ERROR_CATEGORY.Security,
2574
+ severity: ERROR_SEVERITY.High,
2575
+ retryable: true,
2576
+ userMessage: "errors.storage.security.encryption_failed"
2577
+ },
2578
+ // File Operations
2579
+ [ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED]: {
2580
+ code: ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED,
2581
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2582
+ category: ERROR_CATEGORY.FileOperation,
2583
+ severity: ERROR_SEVERITY.High,
2584
+ retryable: true,
2585
+ userMessage: "errors.storage.file.upload_failed"
2586
+ },
2587
+ [ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED]: {
2588
+ code: ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED,
2589
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2590
+ category: ERROR_CATEGORY.FileOperation,
2591
+ severity: ERROR_SEVERITY.High,
2592
+ retryable: true,
2593
+ userMessage: "errors.storage.file.download_failed"
2594
+ },
2595
+ [ERROR_CODES.STORAGE_FILE_DELETE_FAILED]: {
2596
+ code: ERROR_CODES.STORAGE_FILE_DELETE_FAILED,
2597
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2598
+ category: ERROR_CATEGORY.FileOperation,
2599
+ severity: ERROR_SEVERITY.High,
2600
+ retryable: true,
2601
+ userMessage: "errors.storage.file.delete_failed"
2602
+ },
2603
+ [ERROR_CODES.STORAGE_FILE_UPDATE_FAILED]: {
2604
+ code: ERROR_CODES.STORAGE_FILE_UPDATE_FAILED,
2605
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2606
+ category: ERROR_CATEGORY.FileOperation,
2607
+ severity: ERROR_SEVERITY.High,
2608
+ retryable: true,
2609
+ userMessage: "errors.storage.file.update_failed"
2610
+ },
2611
+ [ERROR_CODES.STORAGE_FILE_NOT_FOUND]: {
2612
+ code: ERROR_CODES.STORAGE_FILE_NOT_FOUND,
2613
+ status: HTTP_STATUS.NOT_FOUND,
2614
+ category: ERROR_CATEGORY.NotFound,
2615
+ severity: ERROR_SEVERITY.Low,
2616
+ retryable: false,
2617
+ userMessage: "errors.storage.file.not_found"
2618
+ },
2619
+ [ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS]: {
2620
+ code: ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS,
2621
+ status: HTTP_STATUS.CONFLICT,
2622
+ category: ERROR_CATEGORY.Conflict,
2623
+ severity: ERROR_SEVERITY.Low,
2624
+ retryable: false,
2625
+ userMessage: "errors.storage.file.already_exists"
2626
+ },
2627
+ [ERROR_CODES.STORAGE_FILE_MOVE_FAILED]: {
2628
+ code: ERROR_CODES.STORAGE_FILE_MOVE_FAILED,
2629
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2630
+ category: ERROR_CATEGORY.FileOperation,
2631
+ severity: ERROR_SEVERITY.Medium,
2632
+ retryable: true,
2633
+ userMessage: "errors.storage.file.move_failed"
2634
+ },
2635
+ [ERROR_CODES.STORAGE_FILE_COPY_FAILED]: {
2636
+ code: ERROR_CODES.STORAGE_FILE_COPY_FAILED,
2637
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2638
+ category: ERROR_CATEGORY.FileOperation,
2639
+ severity: ERROR_SEVERITY.Medium,
2640
+ retryable: true,
2641
+ userMessage: "errors.storage.file.copy_failed"
2642
+ },
2643
+ [ERROR_CODES.STORAGE_FILE_READ_FAILED]: {
2644
+ code: ERROR_CODES.STORAGE_FILE_READ_FAILED,
2645
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2646
+ category: ERROR_CATEGORY.FileOperation,
2647
+ severity: ERROR_SEVERITY.High,
2648
+ retryable: true,
2649
+ userMessage: "errors.storage.file.read_failed"
2650
+ },
2651
+ [ERROR_CODES.STORAGE_FILE_WRITE_FAILED]: {
2652
+ code: ERROR_CODES.STORAGE_FILE_WRITE_FAILED,
2653
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2654
+ category: ERROR_CATEGORY.FileOperation,
2655
+ severity: ERROR_SEVERITY.High,
2656
+ retryable: true,
2657
+ userMessage: "errors.storage.file.write_failed"
2658
+ },
2659
+ [ERROR_CODES.STORAGE_FILE_CORRUPTED]: {
2660
+ code: ERROR_CODES.STORAGE_FILE_CORRUPTED,
2661
+ status: HTTP_STATUS.BAD_REQUEST,
2662
+ category: ERROR_CATEGORY.Validation,
2663
+ severity: ERROR_SEVERITY.Medium,
2664
+ retryable: false,
2665
+ userMessage: "errors.storage.file.corrupted"
2666
+ },
2667
+ [ERROR_CODES.STORAGE_INVALID_OPERATION]: {
2668
+ code: ERROR_CODES.STORAGE_INVALID_OPERATION,
2669
+ status: HTTP_STATUS.BAD_REQUEST,
2670
+ category: ERROR_CATEGORY.Validation,
2671
+ severity: ERROR_SEVERITY.Low,
2672
+ retryable: false,
2673
+ userMessage: "errors.storage.invalid_operation"
2674
+ },
2675
+ // Metadata
2676
+ [ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED]: {
2677
+ code: ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED,
2678
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2679
+ category: ERROR_CATEGORY.Processing,
2680
+ severity: ERROR_SEVERITY.Low,
2681
+ retryable: true,
2682
+ userMessage: "errors.storage.metadata.extraction_failed"
2683
+ },
2684
+ [ERROR_CODES.STORAGE_METADATA_INVALID]: {
2685
+ code: ERROR_CODES.STORAGE_METADATA_INVALID,
2686
+ status: HTTP_STATUS.BAD_REQUEST,
2687
+ category: ERROR_CATEGORY.Validation,
2688
+ severity: ERROR_SEVERITY.Low,
2689
+ retryable: false,
2690
+ userMessage: "errors.storage.metadata.invalid"
2691
+ },
2692
+ [ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED]: {
2693
+ code: ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED,
2694
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2695
+ category: ERROR_CATEGORY.Processing,
2696
+ severity: ERROR_SEVERITY.Medium,
2697
+ retryable: true,
2698
+ userMessage: "errors.storage.metadata.update_failed"
2699
+ },
2700
+ // Media Processing
2701
+ [ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED]: {
2702
+ code: ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED,
2703
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2704
+ category: ERROR_CATEGORY.Processing,
2705
+ severity: ERROR_SEVERITY.Medium,
2706
+ retryable: true,
2707
+ userMessage: "errors.storage.media.processing_failed"
2708
+ },
2709
+ [ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED]: {
2710
+ code: ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED,
2711
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2712
+ category: ERROR_CATEGORY.Processing,
2713
+ severity: ERROR_SEVERITY.Medium,
2714
+ retryable: true,
2715
+ userMessage: "errors.storage.media.resize_failed"
2716
+ },
2717
+ [ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED]: {
2718
+ code: ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED,
2719
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2720
+ category: ERROR_CATEGORY.Validation,
2721
+ severity: ERROR_SEVERITY.Low,
2722
+ retryable: false,
2723
+ userMessage: "errors.storage.media.format_unsupported"
2724
+ },
2725
+ [ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED]: {
2726
+ code: ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED,
2727
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2728
+ category: ERROR_CATEGORY.Processing,
2729
+ severity: ERROR_SEVERITY.Medium,
2730
+ retryable: true,
2731
+ userMessage: "errors.storage.media.transcode_failed"
2732
+ },
2733
+ [ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED]: {
2734
+ code: ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED,
2735
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2736
+ category: ERROR_CATEGORY.Processing,
2737
+ severity: ERROR_SEVERITY.Low,
2738
+ retryable: true,
2739
+ userMessage: "errors.storage.media.thumbnail_failed"
2740
+ },
2741
+ [ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS]: {
2742
+ code: ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS,
2743
+ status: HTTP_STATUS.BAD_REQUEST,
2744
+ category: ERROR_CATEGORY.Validation,
2745
+ severity: ERROR_SEVERITY.Low,
2746
+ retryable: false,
2747
+ userMessage: "errors.storage.media.invalid_dimensions"
2748
+ },
2749
+ // Template & PDF
2750
+ [ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND]: {
2751
+ code: ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND,
2752
+ status: HTTP_STATUS.NOT_FOUND,
2753
+ category: ERROR_CATEGORY.NotFound,
2754
+ severity: ERROR_SEVERITY.Medium,
2755
+ retryable: false,
2756
+ userMessage: "errors.storage.template.not_found"
2757
+ },
2758
+ [ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED]: {
2759
+ code: ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED,
2760
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2761
+ category: ERROR_CATEGORY.Template,
2762
+ severity: ERROR_SEVERITY.Medium,
2763
+ retryable: true,
2764
+ userMessage: "errors.storage.template.render_failed"
2765
+ },
2766
+ [ERROR_CODES.STORAGE_PDF_GENERATION_FAILED]: {
2767
+ code: ERROR_CODES.STORAGE_PDF_GENERATION_FAILED,
2768
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2769
+ category: ERROR_CATEGORY.Processing,
2770
+ severity: ERROR_SEVERITY.Medium,
2771
+ retryable: true,
2772
+ userMessage: "errors.storage.pdf.generation_failed"
2773
+ },
2774
+ [ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT]: {
2775
+ code: ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT,
2776
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2777
+ category: ERROR_CATEGORY.Timeout,
2778
+ severity: ERROR_SEVERITY.Medium,
2779
+ retryable: true,
2780
+ userMessage: "errors.storage.pdf.rendering_timeout"
2781
+ },
2782
+ // Queue
2783
+ [ERROR_CODES.STORAGE_QUEUE_FULL]: {
2784
+ code: ERROR_CODES.STORAGE_QUEUE_FULL,
2785
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2786
+ category: ERROR_CATEGORY.Queue,
2787
+ severity: ERROR_SEVERITY.Medium,
2788
+ retryable: true,
2789
+ userMessage: "errors.storage.queue.full"
2790
+ },
2791
+ [ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED]: {
2792
+ code: ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED,
2793
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2794
+ category: ERROR_CATEGORY.Queue,
2795
+ severity: ERROR_SEVERITY.High,
2796
+ retryable: true,
2797
+ userMessage: "errors.storage.queue.processing_failed"
2798
+ },
2799
+ [ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND]: {
2800
+ code: ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND,
2801
+ status: HTTP_STATUS.NOT_FOUND,
2802
+ category: ERROR_CATEGORY.NotFound,
2803
+ severity: ERROR_SEVERITY.Low,
2804
+ retryable: false,
2805
+ userMessage: "errors.storage.queue.item_not_found"
2806
+ },
2807
+ // Compliance
2808
+ [ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION]: {
2809
+ code: ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION,
2810
+ status: HTTP_STATUS.FORBIDDEN,
2811
+ category: ERROR_CATEGORY.Compliance,
2812
+ severity: ERROR_SEVERITY.High,
2813
+ retryable: false,
2814
+ userMessage: "errors.storage.compliance.violation"
2815
+ },
2816
+ [ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED]: {
2817
+ code: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED,
2818
+ status: HTTP_STATUS.GONE,
2819
+ category: ERROR_CATEGORY.Compliance,
2820
+ severity: ERROR_SEVERITY.Medium,
2821
+ retryable: false,
2822
+ userMessage: "errors.storage.compliance.retention_expired"
2823
+ },
2824
+ [ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE]: {
2825
+ code: ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE,
2826
+ status: HTTP_STATUS.FORBIDDEN,
2827
+ category: ERROR_CATEGORY.Compliance,
2828
+ severity: ERROR_SEVERITY.Medium,
2829
+ retryable: false,
2830
+ userMessage: "errors.storage.compliance.immutable_file"
2831
+ },
2832
+ [ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND]: {
2833
+ code: ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND,
2834
+ status: HTTP_STATUS.NOT_FOUND,
2835
+ category: ERROR_CATEGORY.Configuration,
2836
+ severity: ERROR_SEVERITY.Medium,
2837
+ retryable: false,
2838
+ userMessage: "errors.storage.compliance.policy_not_found"
2839
+ },
2840
+ [ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION]: {
2841
+ code: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION,
2842
+ status: HTTP_STATUS.FORBIDDEN,
2843
+ category: ERROR_CATEGORY.Compliance,
2844
+ severity: ERROR_SEVERITY.High,
2845
+ retryable: false,
2846
+ userMessage: "errors.storage.compliance.retention_violation"
2847
+ },
2848
+ [ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED]: {
2849
+ code: ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED,
2850
+ status: HTTP_STATUS.FORBIDDEN,
2851
+ category: ERROR_CATEGORY.Compliance,
2852
+ severity: ERROR_SEVERITY.Medium,
2853
+ retryable: false,
2854
+ userMessage: "errors.storage.compliance.soft_delete_required"
2855
+ },
2856
+ [ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE]: {
2857
+ code: ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE,
2858
+ status: HTTP_STATUS.CONFLICT,
2859
+ category: ERROR_CATEGORY.Compliance,
2860
+ severity: ERROR_SEVERITY.Low,
2861
+ retryable: false,
2862
+ userMessage: "errors.storage.compliance.grace_period_active"
2863
+ },
2864
+ [ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION]: {
2865
+ code: ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION,
2866
+ status: HTTP_STATUS.ACCEPTED,
2867
+ category: ERROR_CATEGORY.Compliance,
2868
+ severity: ERROR_SEVERITY.Low,
2869
+ retryable: false,
2870
+ userMessage: "errors.storage.compliance.deferred_deletion"
2871
+ },
2872
+ [ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED]: {
2873
+ code: ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED,
2874
+ status: HTTP_STATUS.FORBIDDEN,
2875
+ category: ERROR_CATEGORY.Compliance,
2876
+ severity: ERROR_SEVERITY.High,
2877
+ retryable: false,
2878
+ userMessage: "errors.storage.compliance.pattern_protected"
2879
+ },
2880
+ // Share Links
2881
+ [ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND]: {
2882
+ code: ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND,
2883
+ status: HTTP_STATUS.NOT_FOUND,
2884
+ category: ERROR_CATEGORY.NotFound,
2885
+ severity: ERROR_SEVERITY.Low,
2886
+ retryable: false,
2887
+ userMessage: "errors.storage.share_link.not_found"
2888
+ },
2889
+ [ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED]: {
2890
+ code: ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED,
2891
+ status: HTTP_STATUS.GONE,
2892
+ category: ERROR_CATEGORY.Validation,
2893
+ severity: ERROR_SEVERITY.Low,
2894
+ retryable: false,
2895
+ userMessage: "errors.storage.share_link.expired"
2896
+ },
2897
+ [ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS]: {
2898
+ code: ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS,
2899
+ status: HTTP_STATUS.FORBIDDEN,
2900
+ category: ERROR_CATEGORY.Limits,
2901
+ severity: ERROR_SEVERITY.Low,
2902
+ retryable: false,
2903
+ userMessage: "errors.storage.share_link.max_downloads"
2904
+ },
2905
+ [ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD]: {
2906
+ code: ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD,
2907
+ status: HTTP_STATUS.UNAUTHORIZED,
2908
+ category: ERROR_CATEGORY.Authentication,
2909
+ severity: ERROR_SEVERITY.Low,
2910
+ retryable: false,
2911
+ userMessage: "errors.storage.share_link.invalid_password"
2912
+ },
2913
+ // Plugin
2914
+ [ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND]: {
2915
+ code: ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND,
2916
+ status: HTTP_STATUS.NOT_FOUND,
2917
+ category: ERROR_CATEGORY.Plugin,
2918
+ severity: ERROR_SEVERITY.Medium,
2919
+ retryable: false,
2920
+ userMessage: "errors.storage.plugin.not_found"
2921
+ },
2922
+ [ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED]: {
2923
+ code: ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED,
2924
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2925
+ category: ERROR_CATEGORY.Plugin,
2926
+ severity: ERROR_SEVERITY.High,
2927
+ retryable: false,
2928
+ userMessage: "errors.storage.plugin.initialization_failed"
2929
+ },
2930
+ [ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED]: {
2931
+ code: ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED,
2932
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2933
+ category: ERROR_CATEGORY.Plugin,
2934
+ severity: ERROR_SEVERITY.Medium,
2935
+ retryable: true,
2936
+ userMessage: "errors.storage.plugin.execution_failed"
2937
+ },
2938
+ // VirusTotal Provider (Plugin)
2939
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST]: {
2940
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST,
2941
+ status: HTTP_STATUS.BAD_REQUEST,
2942
+ category: ERROR_CATEGORY.Validation,
2943
+ severity: ERROR_SEVERITY.Low,
2944
+ retryable: false,
2945
+ userMessage: "errors.storage.virustotal.bad_request"
2946
+ },
2947
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED]: {
2948
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED,
2949
+ status: HTTP_STATUS.UNAUTHORIZED,
2950
+ category: ERROR_CATEGORY.Authentication,
2951
+ severity: ERROR_SEVERITY.Critical,
2952
+ retryable: false,
2953
+ userMessage: "errors.storage.virustotal.authentication_required"
2954
+ },
2955
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS]: {
2956
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS,
2957
+ status: HTTP_STATUS.UNAUTHORIZED,
2958
+ category: ERROR_CATEGORY.Authentication,
2959
+ severity: ERROR_SEVERITY.Critical,
2960
+ retryable: false,
2961
+ userMessage: "errors.storage.virustotal.wrong_credentials"
2962
+ },
2963
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE]: {
2964
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE,
2965
+ status: HTTP_STATUS.PAYLOAD_TOO_LARGE,
2966
+ category: ERROR_CATEGORY.Validation,
2967
+ severity: ERROR_SEVERITY.Medium,
2968
+ retryable: false,
2969
+ userMessage: "errors.storage.virustotal.file_too_large"
2970
+ },
2971
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED]: {
2972
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED,
2973
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2974
+ category: ERROR_CATEGORY.Quota,
2975
+ severity: ERROR_SEVERITY.Medium,
2976
+ retryable: true,
2977
+ userMessage: "errors.storage.virustotal.quota_exceeded"
2978
+ },
2979
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND]: {
2980
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND,
2981
+ status: HTTP_STATUS.NOT_FOUND,
2982
+ category: ERROR_CATEGORY.NotFound,
2983
+ severity: ERROR_SEVERITY.Low,
2984
+ retryable: false,
2985
+ userMessage: "errors.storage.virustotal.analysis_not_found"
2986
+ },
2987
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT]: {
2988
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT,
2989
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2990
+ category: ERROR_CATEGORY.Timeout,
2991
+ severity: ERROR_SEVERITY.Medium,
2992
+ retryable: true,
2993
+ userMessage: "errors.storage.virustotal.scan_timeout"
2994
+ },
2995
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED]: {
2996
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED,
2997
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2998
+ category: ERROR_CATEGORY.Plugin,
2999
+ severity: ERROR_SEVERITY.High,
3000
+ retryable: true,
3001
+ userMessage: "errors.storage.virustotal.scan_failed"
3002
+ },
3003
+ // CDN Providers (Plugins)
3004
+ // Cloudflare
3005
+ [ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED]: {
3006
+ code: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
3007
+ status: HTTP_STATUS.UNAUTHORIZED,
3008
+ category: ERROR_CATEGORY.Authentication,
3009
+ severity: ERROR_SEVERITY.High,
3010
+ retryable: false,
3011
+ userMessage: "errors.cloudflare.authentication.failed"
3012
+ },
3013
+ [ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND]: {
3014
+ code: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
3015
+ status: HTTP_STATUS.NOT_FOUND,
3016
+ category: ERROR_CATEGORY.NotFound,
3017
+ severity: ERROR_SEVERITY.High,
3018
+ retryable: false,
3019
+ userMessage: "errors.cloudflare.zone.not.found"
3020
+ },
3021
+ [ERROR_CODES.CLOUDFLARE_PURGE_FAILED]: {
3022
+ code: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
3023
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3024
+ category: ERROR_CATEGORY.Plugin,
3025
+ severity: ERROR_SEVERITY.Medium,
3026
+ retryable: true,
3027
+ userMessage: "errors.cloudflare.purge.failed"
3028
+ },
3029
+ [ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED]: {
3030
+ code: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
3031
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3032
+ category: ERROR_CATEGORY.RateLimit,
3033
+ severity: ERROR_SEVERITY.Medium,
3034
+ retryable: true,
3035
+ userMessage: "errors.cloudflare.rate.limit.exceeded"
3036
+ },
3037
+ [ERROR_CODES.CLOUDFLARE_INVALID_URL]: {
3038
+ code: ERROR_CODES.CLOUDFLARE_INVALID_URL,
3039
+ status: HTTP_STATUS.BAD_REQUEST,
3040
+ category: ERROR_CATEGORY.Validation,
3041
+ severity: ERROR_SEVERITY.Low,
3042
+ retryable: false,
3043
+ userMessage: "errors.cloudflare.invalid.url"
3044
+ },
3045
+ [ERROR_CODES.CLOUDFLARE_API_ERROR]: {
3046
+ code: ERROR_CODES.CLOUDFLARE_API_ERROR,
3047
+ status: HTTP_STATUS.BAD_GATEWAY,
3048
+ category: ERROR_CATEGORY.ExternalService,
3049
+ severity: ERROR_SEVERITY.High,
3050
+ retryable: true,
3051
+ userMessage: "errors.cloudflare.api.error"
3052
+ },
3053
+ // CloudFront
3054
+ [ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED]: {
3055
+ code: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
3056
+ status: HTTP_STATUS.UNAUTHORIZED,
3057
+ category: ERROR_CATEGORY.Authentication,
3058
+ severity: ERROR_SEVERITY.High,
3059
+ retryable: false,
3060
+ userMessage: "errors.cloudfront.authentication.failed"
3061
+ },
3062
+ [ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND]: {
3063
+ code: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
3064
+ status: HTTP_STATUS.NOT_FOUND,
3065
+ category: ERROR_CATEGORY.NotFound,
3066
+ severity: ERROR_SEVERITY.High,
3067
+ retryable: false,
3068
+ userMessage: "errors.cloudfront.distribution.not.found"
3069
+ },
3070
+ [ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED]: {
3071
+ code: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
3072
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3073
+ category: ERROR_CATEGORY.Plugin,
3074
+ severity: ERROR_SEVERITY.Medium,
3075
+ retryable: true,
3076
+ userMessage: "errors.cloudfront.invalidation.failed"
3077
+ },
3078
+ [ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED]: {
3079
+ code: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
3080
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3081
+ category: ERROR_CATEGORY.Quota,
3082
+ severity: ERROR_SEVERITY.Medium,
3083
+ retryable: true,
3084
+ userMessage: "errors.cloudfront.quota.exceeded"
3085
+ },
3086
+ [ERROR_CODES.CLOUDFRONT_INVALID_PATH]: {
3087
+ code: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
3088
+ status: HTTP_STATUS.BAD_REQUEST,
3089
+ category: ERROR_CATEGORY.Validation,
3090
+ severity: ERROR_SEVERITY.Low,
3091
+ retryable: false,
3092
+ userMessage: "errors.cloudfront.invalid.path"
3093
+ },
3094
+ [ERROR_CODES.CLOUDFRONT_API_ERROR]: {
3095
+ code: ERROR_CODES.CLOUDFRONT_API_ERROR,
3096
+ status: HTTP_STATUS.BAD_GATEWAY,
3097
+ category: ERROR_CATEGORY.ExternalService,
3098
+ severity: ERROR_SEVERITY.High,
3099
+ retryable: true,
3100
+ userMessage: "errors.cloudfront.api.error"
3101
+ },
3102
+ // Fastly
3103
+ [ERROR_CODES.FASTLY_AUTHENTICATION_FAILED]: {
3104
+ code: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
3105
+ status: HTTP_STATUS.UNAUTHORIZED,
3106
+ category: ERROR_CATEGORY.Authentication,
3107
+ severity: ERROR_SEVERITY.High,
3108
+ retryable: false,
3109
+ userMessage: "errors.fastly.authentication.failed"
3110
+ },
3111
+ [ERROR_CODES.FASTLY_SERVICE_NOT_FOUND]: {
3112
+ code: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
3113
+ status: HTTP_STATUS.NOT_FOUND,
3114
+ category: ERROR_CATEGORY.NotFound,
3115
+ severity: ERROR_SEVERITY.High,
3116
+ retryable: false,
3117
+ userMessage: "errors.fastly.service.not.found"
3118
+ },
3119
+ [ERROR_CODES.FASTLY_PURGE_FAILED]: {
3120
+ code: ERROR_CODES.FASTLY_PURGE_FAILED,
3121
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3122
+ category: ERROR_CATEGORY.Plugin,
3123
+ severity: ERROR_SEVERITY.Medium,
3124
+ retryable: true,
3125
+ userMessage: "errors.fastly.purge.failed"
3126
+ },
3127
+ [ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED]: {
3128
+ code: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
3129
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3130
+ category: ERROR_CATEGORY.RateLimit,
3131
+ severity: ERROR_SEVERITY.Medium,
3132
+ retryable: true,
3133
+ userMessage: "errors.fastly.rate.limit.exceeded"
3134
+ },
3135
+ [ERROR_CODES.FASTLY_INVALID_URL]: {
3136
+ code: ERROR_CODES.FASTLY_INVALID_URL,
3137
+ status: HTTP_STATUS.BAD_REQUEST,
3138
+ category: ERROR_CATEGORY.Validation,
3139
+ severity: ERROR_SEVERITY.Low,
3140
+ retryable: false,
3141
+ userMessage: "errors.fastly.invalid.url"
3142
+ },
3143
+ [ERROR_CODES.FASTLY_API_ERROR]: {
3144
+ code: ERROR_CODES.FASTLY_API_ERROR,
3145
+ status: HTTP_STATUS.BAD_GATEWAY,
3146
+ category: ERROR_CATEGORY.ExternalService,
3147
+ severity: ERROR_SEVERITY.High,
3148
+ retryable: true,
3149
+ userMessage: "errors.fastly.api.error"
3150
+ },
3151
+ // Generic CDN
3152
+ [ERROR_CODES.CDN_INVALIDATION_FAILED]: {
3153
+ code: ERROR_CODES.CDN_INVALIDATION_FAILED,
3154
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3155
+ category: ERROR_CATEGORY.Plugin,
3156
+ severity: ERROR_SEVERITY.Medium,
3157
+ retryable: true,
3158
+ userMessage: "errors.cdn.invalidation.failed"
3159
+ },
3160
+ [ERROR_CODES.CDN_CONFIGURATION_INVALID]: {
3161
+ code: ERROR_CODES.CDN_CONFIGURATION_INVALID,
3162
+ status: HTTP_STATUS.BAD_REQUEST,
3163
+ category: ERROR_CATEGORY.Configuration,
3164
+ severity: ERROR_SEVERITY.High,
3165
+ retryable: false,
3166
+ userMessage: "errors.cdn.configuration.invalid"
3167
+ },
3168
+ [ERROR_CODES.CDN_PROVIDER_NOT_FOUND]: {
3169
+ code: ERROR_CODES.CDN_PROVIDER_NOT_FOUND,
3170
+ status: HTTP_STATUS.NOT_FOUND,
3171
+ category: ERROR_CATEGORY.NotFound,
3172
+ severity: ERROR_SEVERITY.High,
3173
+ retryable: false,
3174
+ userMessage: "errors.cdn.provider.not.found"
3175
+ },
3176
+ // Webhook Errors
3177
+ [ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID]: {
3178
+ code: ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID,
3179
+ status: HTTP_STATUS.UNAUTHORIZED,
3180
+ category: ERROR_CATEGORY.Security,
3181
+ severity: ERROR_SEVERITY.Critical,
3182
+ retryable: false,
3183
+ userMessage: "errors.storage.webhook.signature_invalid"
3184
+ },
3185
+ [ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID]: {
3186
+ code: ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID,
3187
+ status: HTTP_STATUS.BAD_REQUEST,
3188
+ category: ERROR_CATEGORY.Validation,
3189
+ severity: ERROR_SEVERITY.Medium,
3190
+ retryable: false,
3191
+ userMessage: "errors.storage.webhook.payload_invalid"
3192
+ },
3193
+ [ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED]: {
3194
+ code: ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED,
3195
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3196
+ category: ERROR_CATEGORY.Processing,
3197
+ severity: ERROR_SEVERITY.High,
3198
+ retryable: true,
3199
+ userMessage: "errors.storage.webhook.processing_failed"
3200
+ },
3201
+ [ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT]: {
3202
+ code: ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT,
3203
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3204
+ category: ERROR_CATEGORY.Timeout,
3205
+ severity: ERROR_SEVERITY.Medium,
3206
+ retryable: true,
3207
+ userMessage: "errors.storage.webhook.timeout"
3208
+ },
3209
+ [ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND]: {
3210
+ code: ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND,
3211
+ status: HTTP_STATUS.NOT_FOUND,
3212
+ category: ERROR_CATEGORY.NotFound,
3213
+ severity: ERROR_SEVERITY.Medium,
3214
+ retryable: false,
3215
+ userMessage: "errors.storage.webhook.adapter_not_found"
3216
+ },
3217
+ [ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED]: {
3218
+ code: ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED,
3219
+ status: HTTP_STATUS.OK,
3220
+ category: ERROR_CATEGORY.Processing,
3221
+ severity: ERROR_SEVERITY.Low,
3222
+ retryable: false,
3223
+ userMessage: "errors.storage.webhook.duplicate_detected"
3224
+ },
3225
+ [ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR]: {
3226
+ code: ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR,
3227
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3228
+ category: ERROR_CATEGORY.Processing,
3229
+ severity: ERROR_SEVERITY.Medium,
3230
+ retryable: true,
3231
+ userMessage: "errors.storage.webhook.idempotency_error"
3232
+ },
3233
+ [ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED]: {
3234
+ code: ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED,
3235
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3236
+ category: ERROR_CATEGORY.RateLimit,
3237
+ severity: ERROR_SEVERITY.Medium,
3238
+ retryable: true,
3239
+ userMessage: "errors.storage.webhook.rate_limit_exceeded"
3240
+ },
3241
+ // Presigned URLs
3242
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED]: {
3243
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED,
3244
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3245
+ category: ERROR_CATEGORY.ExternalService,
3246
+ severity: ERROR_SEVERITY.High,
3247
+ retryable: true,
3248
+ userMessage: "errors.storage.presigned_url.generation_failed"
3249
+ },
3250
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED]: {
3251
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED,
3252
+ status: HTTP_STATUS.GONE,
3253
+ category: ERROR_CATEGORY.Validation,
3254
+ severity: ERROR_SEVERITY.Low,
3255
+ retryable: false,
3256
+ userMessage: "errors.storage.presigned_url.expired"
3257
+ },
3258
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID]: {
3259
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID,
3260
+ status: HTTP_STATUS.BAD_REQUEST,
3261
+ category: ERROR_CATEGORY.Validation,
3262
+ severity: ERROR_SEVERITY.Low,
3263
+ retryable: false,
3264
+ userMessage: "errors.storage.presigned_url.invalid"
3265
+ },
3266
+ // Chunked Upload
3267
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED]: {
3268
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED,
3269
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3270
+ category: ERROR_CATEGORY.FileOperation,
3271
+ severity: ERROR_SEVERITY.High,
3272
+ retryable: true,
3273
+ userMessage: "errors.storage.chunked_upload.init_failed"
3274
+ },
3275
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED]: {
3276
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED,
3277
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3278
+ category: ERROR_CATEGORY.FileOperation,
3279
+ severity: ERROR_SEVERITY.High,
3280
+ retryable: true,
3281
+ userMessage: "errors.storage.chunked_upload.part_failed"
3282
+ },
3283
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED]: {
3284
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED,
3285
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3286
+ category: ERROR_CATEGORY.FileOperation,
3287
+ severity: ERROR_SEVERITY.High,
3288
+ retryable: true,
3289
+ userMessage: "errors.storage.chunked_upload.complete_failed"
3290
+ },
3291
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED]: {
3292
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED,
3293
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3294
+ category: ERROR_CATEGORY.FileOperation,
3295
+ severity: ERROR_SEVERITY.Medium,
3296
+ retryable: true,
3297
+ userMessage: "errors.storage.chunked_upload.abort_failed"
3298
+ },
3299
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND]: {
3300
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND,
3301
+ status: HTTP_STATUS.NOT_FOUND,
3302
+ category: ERROR_CATEGORY.NotFound,
3303
+ severity: ERROR_SEVERITY.Low,
3304
+ retryable: false,
3305
+ userMessage: "errors.storage.chunked_upload.not_found"
3306
+ },
3307
+ // CORS
3308
+ [ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID]: {
3309
+ code: ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID,
3310
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3311
+ category: ERROR_CATEGORY.Configuration,
3312
+ severity: ERROR_SEVERITY.High,
3313
+ retryable: false,
3314
+ userMessage: "errors.storage.cors.configuration_invalid"
3315
+ },
3316
+ [ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED]: {
3317
+ code: ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED,
3318
+ status: HTTP_STATUS.FORBIDDEN,
3319
+ category: ERROR_CATEGORY.Authorization,
3320
+ severity: ERROR_SEVERITY.Medium,
3321
+ retryable: false,
3322
+ userMessage: "errors.storage.cors.origin_not_allowed"
3323
+ },
3324
+ // TTL
3325
+ [ERROR_CODES.STORAGE_TTL_EXPIRED]: {
3326
+ code: ERROR_CODES.STORAGE_TTL_EXPIRED,
3327
+ status: HTTP_STATUS.GONE,
3328
+ category: ERROR_CATEGORY.Validation,
3329
+ severity: ERROR_SEVERITY.Low,
3330
+ retryable: false,
3331
+ userMessage: "errors.storage.ttl.expired"
3332
+ },
3333
+ [ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED]: {
3334
+ code: ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED,
3335
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3336
+ category: ERROR_CATEGORY.Processing,
3337
+ severity: ERROR_SEVERITY.Low,
3338
+ retryable: true,
3339
+ userMessage: "errors.storage.ttl.cleanup_failed"
3340
+ },
3341
+ // Audit
3342
+ [ERROR_CODES.STORAGE_AUDIT_LOG_FAILED]: {
3343
+ code: ERROR_CODES.STORAGE_AUDIT_LOG_FAILED,
3344
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3345
+ category: ERROR_CATEGORY.System,
3346
+ severity: ERROR_SEVERITY.Low,
3347
+ retryable: false,
3348
+ userMessage: "errors.storage.audit.log_failed"
3349
+ },
3350
+ // Timeout & Network
3351
+ [ERROR_CODES.STORAGE_TIMEOUT]: {
3352
+ code: ERROR_CODES.STORAGE_TIMEOUT,
3353
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3354
+ category: ERROR_CATEGORY.Timeout,
3355
+ severity: ERROR_SEVERITY.Medium,
3356
+ retryable: true,
3357
+ userMessage: "errors.storage.timeout"
3358
+ },
3359
+ [ERROR_CODES.STORAGE_NETWORK_ERROR]: {
3360
+ code: ERROR_CODES.STORAGE_NETWORK_ERROR,
3361
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3362
+ category: ERROR_CATEGORY.Network,
3363
+ severity: ERROR_SEVERITY.High,
3364
+ retryable: true,
3365
+ userMessage: "errors.storage.network_error"
3366
+ },
3367
+ [ERROR_CODES.STORAGE_CONNECTION_LOST]: {
3368
+ code: ERROR_CODES.STORAGE_CONNECTION_LOST,
3369
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3370
+ category: ERROR_CATEGORY.Network,
3371
+ severity: ERROR_SEVERITY.High,
3372
+ retryable: true,
3373
+ userMessage: "errors.storage.connection_lost"
3374
+ },
3375
+ // Permission & Quota
3376
+ [ERROR_CODES.STORAGE_PERMISSION_DENIED]: {
3377
+ code: ERROR_CODES.STORAGE_PERMISSION_DENIED,
3378
+ status: HTTP_STATUS.FORBIDDEN,
3379
+ category: ERROR_CATEGORY.Authorization,
3380
+ severity: ERROR_SEVERITY.Medium,
3381
+ retryable: false,
3382
+ userMessage: "errors.storage.permission_denied"
3383
+ },
3384
+ [ERROR_CODES.STORAGE_QUOTA_EXCEEDED]: {
3385
+ code: ERROR_CODES.STORAGE_QUOTA_EXCEEDED,
3386
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
3387
+ category: ERROR_CATEGORY.Quota,
3388
+ severity: ERROR_SEVERITY.High,
3389
+ retryable: false,
3390
+ userMessage: "errors.storage.quota_exceeded"
3391
+ },
3392
+ [ERROR_CODES.STORAGE_INSUFFICIENT_SPACE]: {
3393
+ code: ERROR_CODES.STORAGE_INSUFFICIENT_SPACE,
3394
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
3395
+ category: ERROR_CATEGORY.Quota,
3396
+ severity: ERROR_SEVERITY.High,
3397
+ retryable: false,
3398
+ userMessage: "errors.storage.insufficient_space"
3399
+ },
3400
+ [ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED]: {
3401
+ code: ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED,
3402
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
3403
+ category: ERROR_CATEGORY.Server,
3404
+ severity: ERROR_SEVERITY.Medium,
3405
+ retryable: false,
3406
+ userMessage: "errors.storage.feature.not_implemented"
3407
+ },
2092
3408
  // ===== Errors Package Errors =====
2093
3409
  [ERROR_CODES.ERROR_SYSTEM_NOT_INITIALIZED]: {
2094
3410
  code: ERROR_CODES.ERROR_SYSTEM_NOT_INITIALIZED,