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