@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/index.cjs CHANGED
@@ -240,6 +240,12 @@ var ERROR_CATEGORY = {
240
240
  Refund: "refund",
241
241
  /** Security-related error (e.g., encryption or signature failure). */
242
242
  Security: "security",
243
+ /** File operation error (e.g., upload, download, delete failure). */
244
+ FileOperation: "file.operation",
245
+ /** Plugin-related error (e.g., plugin initialization or execution failure). */
246
+ Plugin: "plugin",
247
+ /** Quota or storage limit error (e.g., exceeded storage quota). */
248
+ Quota: "quota",
243
249
  /** Unknown or unclassified error. */
244
250
  Unknown: "unknown"
245
251
  };
@@ -305,6 +311,9 @@ var ERROR_CATEGORY_TO_EMITTER_KEY = {
305
311
  [ERROR_CATEGORY.System]: "system",
306
312
  [ERROR_CATEGORY.Refund]: "refund",
307
313
  [ERROR_CATEGORY.Security]: "security",
314
+ [ERROR_CATEGORY.FileOperation]: "fileOperation",
315
+ [ERROR_CATEGORY.Plugin]: "plugin",
316
+ [ERROR_CATEGORY.Quota]: "quota",
308
317
  [ERROR_CATEGORY.Unknown]: "unknown"
309
318
  };
310
319
  var COMMON_OPERATIONS = {
@@ -400,6 +409,7 @@ var ERROR_EXCEPTIONS_NAMESPACES = {
400
409
  API: "api",
401
410
  AUTH: "auth",
402
411
  NOTIFICATIONS: "notifications",
412
+ STORAGE: "storage",
403
413
  DB: "db",
404
414
  VALIDATION: "validation",
405
415
  GENERIC: "generic",
@@ -819,6 +829,168 @@ var ERROR_CODES = {
819
829
  // General Notification
820
830
  NOTIFICATION_UNKNOWN_ERROR: "notification.unknown.error",
821
831
  NOTIFICATION_INITIALIZATION_FAILED: "notification.initialization.failed",
832
+ // ===== Storage Package Errors =====
833
+ // General
834
+ STORAGE_UNKNOWN_ERROR: "storage.unknown.error",
835
+ STORAGE_INITIALIZATION_FAILED: "storage.initialization.failed",
836
+ // Adapter
837
+ STORAGE_ADAPTER_NOT_FOUND: "storage.adapter.not.found",
838
+ STORAGE_ADAPTER_INITIALIZATION_FAILED: "storage.adapter.initialization.failed",
839
+ STORAGE_ADAPTER_CONFIGURATION_INVALID: "storage.adapter.configuration.invalid",
840
+ STORAGE_ADAPTER_ALREADY_REGISTERED: "storage.adapter.already.registered",
841
+ STORAGE_ADAPTER_CONNECTION_FAILED: "storage.adapter.connection.failed",
842
+ STORAGE_ADAPTER_AUTHENTICATION_FAILED: "storage.adapter.authentication.failed",
843
+ STORAGE_ADAPTER_OPERATION_FAILED: "storage.adapter.operation.failed",
844
+ STORAGE_ADAPTER_HEALTH_CHECK_FAILED: "storage.adapter.health.check.failed",
845
+ STORAGE_ADAPTER_UNAVAILABLE: "storage.adapter.unavailable",
846
+ STORAGE_ADAPTER_TIMEOUT: "storage.adapter.timeout",
847
+ STORAGE_ADAPTER_RATE_LIMIT: "storage.adapter.rate.limit",
848
+ STORAGE_ADAPTER_QUOTA_EXCEEDED: "storage.adapter.quota.exceeded",
849
+ STORAGE_ADAPTER_UNSUPPORTED_OPERATION: "storage.adapter.unsupported.operation",
850
+ STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED: "storage.adapter.feature.not.supported",
851
+ STORAGE_NO_HEALTHY_ADAPTERS: "storage.no.healthy.adapters",
852
+ STORAGE_ALL_ADAPTERS_FAILED: "storage.all.adapters.failed",
853
+ // File Validation
854
+ STORAGE_FILE_TOO_LARGE: "storage.file.too.large",
855
+ STORAGE_FILE_TOO_SMALL: "storage.file.too.small",
856
+ STORAGE_FILE_SIZE_INVALID: "storage.file.size.invalid",
857
+ STORAGE_FILE_TYPE_NOT_ALLOWED: "storage.file.type.not.allowed",
858
+ STORAGE_INVALID_MIME_TYPE: "storage.invalid.mime.type",
859
+ STORAGE_INVALID_FILE_EXTENSION: "storage.invalid.file.extension",
860
+ STORAGE_FILE_EXTENSION_INVALID: "storage.file.extension.invalid",
861
+ STORAGE_FILE_EXTENSION_MISMATCH: "storage.file.extension.mismatch",
862
+ STORAGE_EXECUTABLE_NOT_ALLOWED: "storage.executable.not.allowed",
863
+ STORAGE_VALIDATION_FAILED: "storage.validation.failed",
864
+ STORAGE_INVALID_FILE_CONTENT: "storage.invalid.file.content",
865
+ // Security
866
+ STORAGE_SECURITY_VIRUS_DETECTED: "storage.security.virus.detected",
867
+ STORAGE_SECURITY_SCAN_FAILED: "storage.security.scan.failed",
868
+ STORAGE_SECURITY_ACCESS_DENIED: "storage.security.access.denied",
869
+ STORAGE_SECURITY_ENCRYPTION_FAILED: "storage.security.encryption.failed",
870
+ // File Operations
871
+ STORAGE_FILE_UPLOAD_FAILED: "storage.file.upload.failed",
872
+ STORAGE_FILE_DOWNLOAD_FAILED: "storage.file.download.failed",
873
+ STORAGE_FILE_DELETE_FAILED: "storage.file.delete.failed",
874
+ STORAGE_FILE_UPDATE_FAILED: "storage.file.update.failed",
875
+ STORAGE_FILE_NOT_FOUND: "storage.file.not.found",
876
+ STORAGE_FILE_ALREADY_EXISTS: "storage.file.already.exists",
877
+ STORAGE_FILE_MOVE_FAILED: "storage.file.move.failed",
878
+ STORAGE_FILE_COPY_FAILED: "storage.file.copy.failed",
879
+ STORAGE_FILE_READ_FAILED: "storage.file.read.failed",
880
+ STORAGE_FILE_WRITE_FAILED: "storage.file.write.failed",
881
+ STORAGE_FILE_CORRUPTED: "storage.file.corrupted",
882
+ STORAGE_INVALID_OPERATION: "storage.invalid.operation",
883
+ // Metadata
884
+ STORAGE_METADATA_EXTRACTION_FAILED: "storage.metadata.extraction.failed",
885
+ STORAGE_METADATA_INVALID: "storage.metadata.invalid",
886
+ STORAGE_METADATA_UPDATE_FAILED: "storage.metadata.update.failed",
887
+ // Media Processing
888
+ STORAGE_MEDIA_PROCESSING_FAILED: "storage.media.processing.failed",
889
+ STORAGE_MEDIA_RESIZE_FAILED: "storage.media.resize.failed",
890
+ STORAGE_MEDIA_FORMAT_UNSUPPORTED: "storage.media.format.unsupported",
891
+ STORAGE_MEDIA_TRANSCODE_FAILED: "storage.media.transcode.failed",
892
+ STORAGE_MEDIA_THUMBNAIL_FAILED: "storage.media.thumbnail.failed",
893
+ STORAGE_MEDIA_INVALID_DIMENSIONS: "storage.media.invalid.dimensions",
894
+ // Template & PDF
895
+ STORAGE_TEMPLATE_NOT_FOUND: "storage.template.not.found",
896
+ STORAGE_TEMPLATE_RENDER_FAILED: "storage.template.render.failed",
897
+ STORAGE_PDF_GENERATION_FAILED: "storage.pdf.generation.failed",
898
+ STORAGE_PDF_RENDERING_TIMEOUT: "storage.pdf.rendering.timeout",
899
+ // Queue
900
+ STORAGE_QUEUE_FULL: "storage.queue.full",
901
+ STORAGE_QUEUE_PROCESSING_FAILED: "storage.queue.processing.failed",
902
+ STORAGE_QUEUE_ITEM_NOT_FOUND: "storage.queue.item.not.found",
903
+ // Compliance
904
+ STORAGE_COMPLIANCE_VIOLATION: "storage.compliance.violation",
905
+ STORAGE_COMPLIANCE_RETENTION_VIOLATION: "storage.compliance.retention.violation",
906
+ STORAGE_COMPLIANCE_RETENTION_EXPIRED: "storage.compliance.retention.expired",
907
+ STORAGE_COMPLIANCE_IMMUTABLE_FILE: "storage.compliance.immutable.file",
908
+ STORAGE_COMPLIANCE_POLICY_NOT_FOUND: "storage.compliance.policy.not.found",
909
+ STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED: "storage.compliance.soft.delete.required",
910
+ STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE: "storage.compliance.grace.period.active",
911
+ STORAGE_COMPLIANCE_DEFERRED_DELETION: "storage.compliance.deferred.deletion",
912
+ STORAGE_COMPLIANCE_PATTERN_PROTECTED: "storage.compliance.pattern.protected",
913
+ // Share Links
914
+ STORAGE_SHARE_LINK_NOT_FOUND: "storage.share.link.not.found",
915
+ STORAGE_SHARE_LINK_EXPIRED: "storage.share.link.expired",
916
+ STORAGE_SHARE_LINK_MAX_DOWNLOADS: "storage.share.link.max.downloads",
917
+ STORAGE_SHARE_LINK_INVALID_PASSWORD: "storage.share.link.invalid.password",
918
+ // Plugin
919
+ STORAGE_PLUGIN_NOT_FOUND: "storage.plugin.not.found",
920
+ STORAGE_PLUGIN_INITIALIZATION_FAILED: "storage.plugin.initialization.failed",
921
+ STORAGE_PLUGIN_EXECUTION_FAILED: "storage.plugin.execution.failed",
922
+ // VirusTotal Provider (Plugin)
923
+ STORAGE_VIRUSTOTAL_BAD_REQUEST: "storage.virustotal.bad_request",
924
+ STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED: "storage.virustotal.authentication_required",
925
+ STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS: "storage.virustotal.wrong_credentials",
926
+ STORAGE_VIRUSTOTAL_FILE_TOO_LARGE: "storage.virustotal.file_too_large",
927
+ STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED: "storage.virustotal.quota_exceeded",
928
+ STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND: "storage.virustotal.analysis_not_found",
929
+ STORAGE_VIRUSTOTAL_SCAN_TIMEOUT: "storage.virustotal.scan_timeout",
930
+ STORAGE_VIRUSTOTAL_SCAN_FAILED: "storage.virustotal.scan_failed",
931
+ // CDN Provider Errors (Third-party services - cross-package)
932
+ // Cloudflare CDN
933
+ CLOUDFLARE_AUTHENTICATION_FAILED: "cloudflare.authentication.failed",
934
+ CLOUDFLARE_ZONE_NOT_FOUND: "cloudflare.zone.not.found",
935
+ CLOUDFLARE_PURGE_FAILED: "cloudflare.purge.failed",
936
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: "cloudflare.rate.limit.exceeded",
937
+ CLOUDFLARE_INVALID_URL: "cloudflare.invalid.url",
938
+ CLOUDFLARE_API_ERROR: "cloudflare.api.error",
939
+ // AWS CloudFront CDN
940
+ CLOUDFRONT_AUTHENTICATION_FAILED: "cloudfront.authentication.failed",
941
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: "cloudfront.distribution.not.found",
942
+ CLOUDFRONT_INVALIDATION_FAILED: "cloudfront.invalidation.failed",
943
+ CLOUDFRONT_QUOTA_EXCEEDED: "cloudfront.quota.exceeded",
944
+ CLOUDFRONT_INVALID_PATH: "cloudfront.invalid.path",
945
+ CLOUDFRONT_API_ERROR: "cloudfront.api.error",
946
+ // Fastly CDN
947
+ FASTLY_AUTHENTICATION_FAILED: "fastly.authentication.failed",
948
+ FASTLY_SERVICE_NOT_FOUND: "fastly.service.not.found",
949
+ FASTLY_PURGE_FAILED: "fastly.purge.failed",
950
+ FASTLY_RATE_LIMIT_EXCEEDED: "fastly.rate.limit.exceeded",
951
+ FASTLY_INVALID_URL: "fastly.invalid.url",
952
+ FASTLY_API_ERROR: "fastly.api.error",
953
+ // Generic CDN Errors
954
+ CDN_INVALIDATION_FAILED: "cdn.invalidation.failed",
955
+ CDN_CONFIGURATION_INVALID: "cdn.configuration.invalid",
956
+ CDN_PROVIDER_NOT_FOUND: "cdn.provider.not.found",
957
+ // Webhook Errors
958
+ STORAGE_WEBHOOK_SIGNATURE_INVALID: "storage.webhook.signature.invalid",
959
+ STORAGE_WEBHOOK_PAYLOAD_INVALID: "storage.webhook.payload.invalid",
960
+ STORAGE_WEBHOOK_PROCESSING_FAILED: "storage.webhook.processing.failed",
961
+ STORAGE_WEBHOOK_TIMEOUT: "storage.webhook.timeout",
962
+ STORAGE_WEBHOOK_ADAPTER_NOT_FOUND: "storage.webhook.adapter.not.found",
963
+ STORAGE_WEBHOOK_DUPLICATE_DETECTED: "storage.webhook.duplicate.detected",
964
+ STORAGE_WEBHOOK_IDEMPOTENCY_ERROR: "storage.webhook.idempotency.error",
965
+ STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED: "storage.webhook.rate.limit.exceeded",
966
+ // Presigned URLs
967
+ STORAGE_PRESIGNED_URL_GENERATION_FAILED: "storage.presigned.url.generation.failed",
968
+ STORAGE_PRESIGNED_URL_EXPIRED: "storage.presigned.url.expired",
969
+ STORAGE_PRESIGNED_URL_INVALID: "storage.presigned.url.invalid",
970
+ // Chunked Upload
971
+ STORAGE_CHUNKED_UPLOAD_INIT_FAILED: "storage.chunked.upload.init.failed",
972
+ STORAGE_CHUNKED_UPLOAD_PART_FAILED: "storage.chunked.upload.part.failed",
973
+ STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED: "storage.chunked.upload.complete.failed",
974
+ STORAGE_CHUNKED_UPLOAD_ABORT_FAILED: "storage.chunked.upload.abort.failed",
975
+ STORAGE_CHUNKED_UPLOAD_NOT_FOUND: "storage.chunked.upload.not.found",
976
+ // CORS
977
+ STORAGE_CORS_CONFIGURATION_INVALID: "storage.cors.configuration.invalid",
978
+ STORAGE_CORS_ORIGIN_NOT_ALLOWED: "storage.cors.origin.not.allowed",
979
+ // TTL
980
+ STORAGE_TTL_EXPIRED: "storage.ttl.expired",
981
+ STORAGE_TTL_CLEANUP_FAILED: "storage.ttl.cleanup.failed",
982
+ // Audit
983
+ STORAGE_AUDIT_LOG_FAILED: "storage.audit.log.failed",
984
+ // Timeout & Network
985
+ STORAGE_TIMEOUT: "storage.timeout",
986
+ STORAGE_NETWORK_ERROR: "storage.network.error",
987
+ STORAGE_CONNECTION_LOST: "storage.connection.lost",
988
+ // Permission & Quota
989
+ STORAGE_PERMISSION_DENIED: "storage.permission.denied",
990
+ STORAGE_QUOTA_EXCEEDED: "storage.quota.exceeded",
991
+ STORAGE_INSUFFICIENT_SPACE: "storage.insufficient.space",
992
+ // Feature Implementation
993
+ STORAGE_FEATURE_NOT_IMPLEMENTED: "storage.feature.not.implemented",
822
994
  // ===== Errors Package Errors =====
823
995
  ERROR_SYSTEM_NOT_INITIALIZED: "error.system.not.initialized",
824
996
  EVENT_FACTORY_NOT_REGISTERED: "error.event.factory.not.registered",
@@ -1108,7 +1280,33 @@ var API_ERROR_CODES = {
1108
1280
  MONITORING_FAILED: ERROR_CODES.MONITORING_FAILED,
1109
1281
  CONTEXT_OPERATION_FAILED: ERROR_CODES.CONTEXT_OPERATION_FAILED,
1110
1282
  CLIENT_ERROR: ERROR_CODES.CLIENT_ERROR,
1111
- UNKNOWN_ERROR: ERROR_CODES.UNKNOWN_ERROR
1283
+ UNKNOWN_ERROR: ERROR_CODES.UNKNOWN_ERROR,
1284
+ // CDN Provider Errors (Third-party services)
1285
+ // Cloudflare
1286
+ CLOUDFLARE_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
1287
+ CLOUDFLARE_ZONE_NOT_FOUND: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
1288
+ CLOUDFLARE_PURGE_FAILED: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
1289
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
1290
+ CLOUDFLARE_INVALID_URL: ERROR_CODES.CLOUDFLARE_INVALID_URL,
1291
+ CLOUDFLARE_API_ERROR: ERROR_CODES.CLOUDFLARE_API_ERROR,
1292
+ // CloudFront
1293
+ CLOUDFRONT_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
1294
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
1295
+ CLOUDFRONT_INVALIDATION_FAILED: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
1296
+ CLOUDFRONT_QUOTA_EXCEEDED: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
1297
+ CLOUDFRONT_INVALID_PATH: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
1298
+ CLOUDFRONT_API_ERROR: ERROR_CODES.CLOUDFRONT_API_ERROR,
1299
+ // Fastly
1300
+ FASTLY_AUTHENTICATION_FAILED: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
1301
+ FASTLY_SERVICE_NOT_FOUND: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
1302
+ FASTLY_PURGE_FAILED: ERROR_CODES.FASTLY_PURGE_FAILED,
1303
+ FASTLY_RATE_LIMIT_EXCEEDED: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
1304
+ FASTLY_INVALID_URL: ERROR_CODES.FASTLY_INVALID_URL,
1305
+ FASTLY_API_ERROR: ERROR_CODES.FASTLY_API_ERROR,
1306
+ // Generic CDN
1307
+ CDN_INVALIDATION_FAILED: ERROR_CODES.CDN_INVALIDATION_FAILED,
1308
+ CDN_CONFIGURATION_INVALID: ERROR_CODES.CDN_CONFIGURATION_INVALID,
1309
+ CDN_PROVIDER_NOT_FOUND: ERROR_CODES.CDN_PROVIDER_NOT_FOUND
1112
1310
  };
1113
1311
  var NOTIFICATION_ERROR_CODES = {
1114
1312
  PROVIDER_SEND_FAILED: ERROR_CODES.NOTIFICATION_PROVIDER_SEND_FAILED,
@@ -1136,6 +1334,169 @@ var NOTIFICATION_ERROR_CODES = {
1136
1334
  UNKNOWN_ERROR: ERROR_CODES.NOTIFICATION_UNKNOWN_ERROR,
1137
1335
  INITIALIZATION_FAILED: ERROR_CODES.NOTIFICATION_INITIALIZATION_FAILED
1138
1336
  };
1337
+ var STORAGE_ERROR_CODES = {
1338
+ // General
1339
+ UNKNOWN_ERROR: ERROR_CODES.STORAGE_UNKNOWN_ERROR,
1340
+ INITIALIZATION_FAILED: ERROR_CODES.STORAGE_INITIALIZATION_FAILED,
1341
+ // Adapter
1342
+ ADAPTER_NOT_FOUND: ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND,
1343
+ ADAPTER_INITIALIZATION_FAILED: ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED,
1344
+ ADAPTER_CONFIGURATION_INVALID: ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID,
1345
+ ADAPTER_ALREADY_REGISTERED: ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED,
1346
+ ADAPTER_CONNECTION_FAILED: ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED,
1347
+ ADAPTER_AUTHENTICATION_FAILED: ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED,
1348
+ ADAPTER_OPERATION_FAILED: ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED,
1349
+ ADAPTER_HEALTH_CHECK_FAILED: ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED,
1350
+ ADAPTER_UNAVAILABLE: ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE,
1351
+ ADAPTER_TIMEOUT: ERROR_CODES.STORAGE_ADAPTER_TIMEOUT,
1352
+ ADAPTER_RATE_LIMIT: ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT,
1353
+ ADAPTER_QUOTA_EXCEEDED: ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED,
1354
+ ADAPTER_UNSUPPORTED_OPERATION: ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION,
1355
+ ADAPTER_FEATURE_NOT_SUPPORTED: ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED,
1356
+ NO_HEALTHY_ADAPTERS: ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS,
1357
+ ALL_ADAPTERS_FAILED: ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED,
1358
+ // File Validation
1359
+ FILE_TOO_LARGE: ERROR_CODES.STORAGE_FILE_TOO_LARGE,
1360
+ FILE_TOO_SMALL: ERROR_CODES.STORAGE_FILE_TOO_SMALL,
1361
+ FILE_SIZE_INVALID: ERROR_CODES.STORAGE_FILE_SIZE_INVALID,
1362
+ FILE_TYPE_NOT_ALLOWED: ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED,
1363
+ INVALID_MIME_TYPE: ERROR_CODES.STORAGE_INVALID_MIME_TYPE,
1364
+ INVALID_FILE_EXTENSION: ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION,
1365
+ FILE_EXTENSION_INVALID: ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID,
1366
+ FILE_EXTENSION_MISMATCH: ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH,
1367
+ EXECUTABLE_NOT_ALLOWED: ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED,
1368
+ VALIDATION_FAILED: ERROR_CODES.STORAGE_VALIDATION_FAILED,
1369
+ INVALID_FILE_CONTENT: ERROR_CODES.STORAGE_INVALID_FILE_CONTENT,
1370
+ // Security
1371
+ SECURITY_VIRUS_DETECTED: ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED,
1372
+ SECURITY_SCAN_FAILED: ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED,
1373
+ SECURITY_ACCESS_DENIED: ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED,
1374
+ SECURITY_ENCRYPTION_FAILED: ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED,
1375
+ // File Operations
1376
+ FILE_UPLOAD_FAILED: ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED,
1377
+ FILE_DOWNLOAD_FAILED: ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED,
1378
+ FILE_DELETE_FAILED: ERROR_CODES.STORAGE_FILE_DELETE_FAILED,
1379
+ STORAGE_FILE_UPDATE_FAILED: ERROR_CODES.STORAGE_FILE_UPDATE_FAILED,
1380
+ FILE_NOT_FOUND: ERROR_CODES.STORAGE_FILE_NOT_FOUND,
1381
+ FILE_ALREADY_EXISTS: ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS,
1382
+ FILE_MOVE_FAILED: ERROR_CODES.STORAGE_FILE_MOVE_FAILED,
1383
+ FILE_COPY_FAILED: ERROR_CODES.STORAGE_FILE_COPY_FAILED,
1384
+ FILE_READ_FAILED: ERROR_CODES.STORAGE_FILE_READ_FAILED,
1385
+ FILE_WRITE_FAILED: ERROR_CODES.STORAGE_FILE_WRITE_FAILED,
1386
+ FILE_CORRUPTED: ERROR_CODES.STORAGE_FILE_CORRUPTED,
1387
+ INVALID_OPERATION: ERROR_CODES.STORAGE_INVALID_OPERATION,
1388
+ // Metadata
1389
+ METADATA_EXTRACTION_FAILED: ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED,
1390
+ METADATA_INVALID: ERROR_CODES.STORAGE_METADATA_INVALID,
1391
+ METADATA_UPDATE_FAILED: ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED,
1392
+ // Media Processing
1393
+ MEDIA_PROCESSING_FAILED: ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED,
1394
+ MEDIA_RESIZE_FAILED: ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED,
1395
+ MEDIA_FORMAT_UNSUPPORTED: ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED,
1396
+ MEDIA_TRANSCODE_FAILED: ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED,
1397
+ MEDIA_THUMBNAIL_FAILED: ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED,
1398
+ MEDIA_INVALID_DIMENSIONS: ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS,
1399
+ // Template & PDF
1400
+ TEMPLATE_NOT_FOUND: ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND,
1401
+ TEMPLATE_RENDER_FAILED: ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED,
1402
+ PDF_GENERATION_FAILED: ERROR_CODES.STORAGE_PDF_GENERATION_FAILED,
1403
+ PDF_RENDERING_TIMEOUT: ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT,
1404
+ // Queue
1405
+ QUEUE_FULL: ERROR_CODES.STORAGE_QUEUE_FULL,
1406
+ QUEUE_PROCESSING_FAILED: ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED,
1407
+ QUEUE_ITEM_NOT_FOUND: ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND,
1408
+ // Compliance
1409
+ COMPLIANCE_VIOLATION: ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION,
1410
+ COMPLIANCE_RETENTION_VIOLATION: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION,
1411
+ COMPLIANCE_RETENTION_EXPIRED: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED,
1412
+ COMPLIANCE_IMMUTABLE_FILE: ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE,
1413
+ COMPLIANCE_POLICY_NOT_FOUND: ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND,
1414
+ COMPLIANCE_SOFT_DELETE_REQUIRED: ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED,
1415
+ COMPLIANCE_GRACE_PERIOD_ACTIVE: ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE,
1416
+ COMPLIANCE_DEFERRED_DELETION: ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION,
1417
+ COMPLIANCE_PATTERN_PROTECTED: ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED,
1418
+ // Share Links
1419
+ SHARE_LINK_NOT_FOUND: ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND,
1420
+ SHARE_LINK_EXPIRED: ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED,
1421
+ SHARE_LINK_MAX_DOWNLOADS: ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS,
1422
+ SHARE_LINK_INVALID_PASSWORD: ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD,
1423
+ // Plugin
1424
+ PLUGIN_NOT_FOUND: ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND,
1425
+ PLUGIN_INITIALIZATION_FAILED: ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED,
1426
+ PLUGIN_EXECUTION_FAILED: ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED,
1427
+ // VirusTotal Provider (Plugin)
1428
+ VIRUSTOTAL_BAD_REQUEST: ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST,
1429
+ VIRUSTOTAL_AUTHENTICATION_REQUIRED: ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED,
1430
+ VIRUSTOTAL_WRONG_CREDENTIALS: ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS,
1431
+ VIRUSTOTAL_FILE_TOO_LARGE: ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE,
1432
+ VIRUSTOTAL_QUOTA_EXCEEDED: ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED,
1433
+ VIRUSTOTAL_ANALYSIS_NOT_FOUND: ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND,
1434
+ VIRUSTOTAL_SCAN_TIMEOUT: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT,
1435
+ VIRUSTOTAL_SCAN_FAILED: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED,
1436
+ // CDN Providers (Plugins) - Reference cross-package CDN errors
1437
+ // Cloudflare CDN
1438
+ CLOUDFLARE_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
1439
+ CLOUDFLARE_ZONE_NOT_FOUND: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
1440
+ CLOUDFLARE_PURGE_FAILED: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
1441
+ CLOUDFLARE_RATE_LIMIT_EXCEEDED: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
1442
+ CLOUDFLARE_INVALID_URL: ERROR_CODES.CLOUDFLARE_INVALID_URL,
1443
+ CLOUDFLARE_API_ERROR: ERROR_CODES.CLOUDFLARE_API_ERROR,
1444
+ // AWS CloudFront CDN
1445
+ CLOUDFRONT_AUTHENTICATION_FAILED: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
1446
+ CLOUDFRONT_DISTRIBUTION_NOT_FOUND: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
1447
+ CLOUDFRONT_INVALIDATION_FAILED: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
1448
+ CLOUDFRONT_QUOTA_EXCEEDED: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
1449
+ CLOUDFRONT_INVALID_PATH: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
1450
+ CLOUDFRONT_API_ERROR: ERROR_CODES.CLOUDFRONT_API_ERROR,
1451
+ // Fastly CDN
1452
+ FASTLY_AUTHENTICATION_FAILED: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
1453
+ FASTLY_SERVICE_NOT_FOUND: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
1454
+ FASTLY_PURGE_FAILED: ERROR_CODES.FASTLY_PURGE_FAILED,
1455
+ FASTLY_RATE_LIMIT_EXCEEDED: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
1456
+ FASTLY_INVALID_URL: ERROR_CODES.FASTLY_INVALID_URL,
1457
+ FASTLY_API_ERROR: ERROR_CODES.FASTLY_API_ERROR,
1458
+ // Generic CDN Errors
1459
+ CDN_INVALIDATION_FAILED: ERROR_CODES.CDN_INVALIDATION_FAILED,
1460
+ CDN_CONFIGURATION_INVALID: ERROR_CODES.CDN_CONFIGURATION_INVALID,
1461
+ CDN_PROVIDER_NOT_FOUND: ERROR_CODES.CDN_PROVIDER_NOT_FOUND,
1462
+ // Presigned URLs
1463
+ PRESIGNED_URL_GENERATION_FAILED: ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED,
1464
+ PRESIGNED_URL_EXPIRED: ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED,
1465
+ PRESIGNED_URL_INVALID: ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID,
1466
+ // Chunked Upload
1467
+ CHUNKED_UPLOAD_INIT_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED,
1468
+ CHUNKED_UPLOAD_PART_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED,
1469
+ CHUNKED_UPLOAD_COMPLETE_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED,
1470
+ CHUNKED_UPLOAD_ABORT_FAILED: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED,
1471
+ CHUNKED_UPLOAD_NOT_FOUND: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND,
1472
+ // CORS
1473
+ CORS_CONFIGURATION_INVALID: ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID,
1474
+ CORS_ORIGIN_NOT_ALLOWED: ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED,
1475
+ // TTL
1476
+ TTL_EXPIRED: ERROR_CODES.STORAGE_TTL_EXPIRED,
1477
+ TTL_CLEANUP_FAILED: ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED,
1478
+ // Audit
1479
+ AUDIT_LOG_FAILED: ERROR_CODES.STORAGE_AUDIT_LOG_FAILED,
1480
+ // Webhook
1481
+ WEBHOOK_SIGNATURE_INVALID: ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID,
1482
+ WEBHOOK_PAYLOAD_INVALID: ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID,
1483
+ WEBHOOK_PROCESSING_FAILED: ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED,
1484
+ WEBHOOK_TIMEOUT: ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT,
1485
+ WEBHOOK_ADAPTER_NOT_FOUND: ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND,
1486
+ WEBHOOK_DUPLICATE_DETECTED: ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED,
1487
+ WEBHOOK_IDEMPOTENCY_ERROR: ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR,
1488
+ WEBHOOK_RATE_LIMIT_EXCEEDED: ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED,
1489
+ // Timeout & Network
1490
+ TIMEOUT: ERROR_CODES.STORAGE_TIMEOUT,
1491
+ NETWORK_ERROR: ERROR_CODES.STORAGE_NETWORK_ERROR,
1492
+ CONNECTION_LOST: ERROR_CODES.STORAGE_CONNECTION_LOST,
1493
+ // Permission & Quota
1494
+ PERMISSION_DENIED: ERROR_CODES.STORAGE_PERMISSION_DENIED,
1495
+ QUOTA_EXCEEDED: ERROR_CODES.STORAGE_QUOTA_EXCEEDED,
1496
+ INSUFFICIENT_SPACE: ERROR_CODES.STORAGE_INSUFFICIENT_SPACE,
1497
+ // Feature Implementation
1498
+ FEATURE_NOT_IMPLEMENTED: ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED
1499
+ };
1139
1500
  var PAYMENT_ERROR_CODES = {
1140
1501
  // Timeout & Network
1141
1502
  PAYMENT_TIMEOUT: ERROR_CODES.PAYMENT_TIMEOUT,
@@ -1976,207 +2337,1306 @@ var ERROR_DEFINITIONS = {
1976
2337
  category: ERROR_CATEGORY.Unknown,
1977
2338
  userMessage: "errors.unknown",
1978
2339
  severity: ERROR_SEVERITY.Medium,
1979
- retryable: false
2340
+ retryable: false
2341
+ },
2342
+ // ===== Notification Package Error Definitions =====
2343
+ // Provider errors (retryable)
2344
+ [ERROR_CODES.NOTIFICATION_PROVIDER_SEND_FAILED]: {
2345
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_SEND_FAILED,
2346
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2347
+ category: ERROR_CATEGORY.Provider,
2348
+ severity: ERROR_SEVERITY.High,
2349
+ retryable: true,
2350
+ userMessage: "errors.notification.provider.send_failed"
2351
+ },
2352
+ [ERROR_CODES.NOTIFICATION_PROVIDER_CONFIGURATION_INVALID]: {
2353
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_CONFIGURATION_INVALID,
2354
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2355
+ category: ERROR_CATEGORY.Configuration,
2356
+ severity: ERROR_SEVERITY.Critical,
2357
+ retryable: false,
2358
+ userMessage: "errors.notification.provider.configuration_invalid"
2359
+ },
2360
+ [ERROR_CODES.NOTIFICATION_PROVIDER_RATE_LIMIT]: {
2361
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_RATE_LIMIT,
2362
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2363
+ category: ERROR_CATEGORY.RateLimit,
2364
+ severity: ERROR_SEVERITY.Medium,
2365
+ retryable: true,
2366
+ userMessage: "errors.notification.provider.rate_limit"
2367
+ },
2368
+ [ERROR_CODES.NOTIFICATION_PROVIDER_AUTH_FAILED]: {
2369
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_AUTH_FAILED,
2370
+ status: HTTP_STATUS.UNAUTHORIZED,
2371
+ category: ERROR_CATEGORY.Provider,
2372
+ severity: ERROR_SEVERITY.Critical,
2373
+ retryable: false,
2374
+ userMessage: "errors.notification.provider.auth_failed"
2375
+ },
2376
+ [ERROR_CODES.NOTIFICATION_PROVIDER_TIMEOUT]: {
2377
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_TIMEOUT,
2378
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2379
+ category: ERROR_CATEGORY.Network,
2380
+ severity: ERROR_SEVERITY.Medium,
2381
+ retryable: true,
2382
+ userMessage: "errors.notification.provider.timeout"
2383
+ },
2384
+ [ERROR_CODES.NOTIFICATION_PROVIDER_UNAVAILABLE]: {
2385
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_UNAVAILABLE,
2386
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2387
+ category: ERROR_CATEGORY.Provider,
2388
+ severity: ERROR_SEVERITY.High,
2389
+ retryable: true,
2390
+ userMessage: "errors.notification.provider.unavailable"
2391
+ },
2392
+ [ERROR_CODES.NOTIFICATION_PROVIDER_FEATURE_NOT_SUPPORTED]: {
2393
+ code: ERROR_CODES.NOTIFICATION_PROVIDER_FEATURE_NOT_SUPPORTED,
2394
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2395
+ category: ERROR_CATEGORY.Provider,
2396
+ severity: ERROR_SEVERITY.Low,
2397
+ retryable: false,
2398
+ userMessage: "errors.notification.provider.feature_not_supported"
2399
+ },
2400
+ [ERROR_CODES.NOTIFICATION_ALL_PROVIDERS_FAILED]: {
2401
+ code: ERROR_CODES.NOTIFICATION_ALL_PROVIDERS_FAILED,
2402
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2403
+ category: ERROR_CATEGORY.Provider,
2404
+ severity: ERROR_SEVERITY.Critical,
2405
+ retryable: false,
2406
+ userMessage: "errors.notification.all_providers_failed"
2407
+ },
2408
+ // Validation errors (non-retryable)
2409
+ [ERROR_CODES.NOTIFICATION_INVALID_INPUT]: {
2410
+ code: ERROR_CODES.NOTIFICATION_INVALID_INPUT,
2411
+ status: HTTP_STATUS.BAD_REQUEST,
2412
+ category: ERROR_CATEGORY.Validation,
2413
+ severity: ERROR_SEVERITY.Medium,
2414
+ retryable: false,
2415
+ userMessage: "errors.notification.validation.invalid_input"
2416
+ },
2417
+ [ERROR_CODES.NOTIFICATION_INVALID_RECIPIENT]: {
2418
+ code: ERROR_CODES.NOTIFICATION_INVALID_RECIPIENT,
2419
+ status: HTTP_STATUS.BAD_REQUEST,
2420
+ category: ERROR_CATEGORY.Validation,
2421
+ severity: ERROR_SEVERITY.Medium,
2422
+ retryable: false,
2423
+ userMessage: "errors.notification.validation.invalid_recipient"
2424
+ },
2425
+ [ERROR_CODES.NOTIFICATION_INVALID_TEMPLATE]: {
2426
+ code: ERROR_CODES.NOTIFICATION_INVALID_TEMPLATE,
2427
+ status: HTTP_STATUS.BAD_REQUEST,
2428
+ category: ERROR_CATEGORY.Template,
2429
+ severity: ERROR_SEVERITY.Medium,
2430
+ retryable: false,
2431
+ userMessage: "errors.notification.validation.invalid_template"
2432
+ },
2433
+ [ERROR_CODES.NOTIFICATION_INVALID_PAYLOAD]: {
2434
+ code: ERROR_CODES.NOTIFICATION_INVALID_PAYLOAD,
2435
+ status: HTTP_STATUS.BAD_REQUEST,
2436
+ category: ERROR_CATEGORY.Validation,
2437
+ severity: ERROR_SEVERITY.Medium,
2438
+ retryable: false,
2439
+ userMessage: "errors.notification.validation.invalid_payload"
2440
+ },
2441
+ [ERROR_CODES.NOTIFICATION_MISSING_REQUIRED_FIELD]: {
2442
+ code: ERROR_CODES.NOTIFICATION_MISSING_REQUIRED_FIELD,
2443
+ status: HTTP_STATUS.BAD_REQUEST,
2444
+ category: ERROR_CATEGORY.Validation,
2445
+ severity: ERROR_SEVERITY.Medium,
2446
+ retryable: false,
2447
+ userMessage: "errors.notification.validation.required_field_missing"
2448
+ },
2449
+ [ERROR_CODES.NOTIFICATION_VALIDATION_FAILED]: {
2450
+ code: ERROR_CODES.NOTIFICATION_VALIDATION_FAILED,
2451
+ status: HTTP_STATUS.BAD_REQUEST,
2452
+ category: ERROR_CATEGORY.Validation,
2453
+ severity: ERROR_SEVERITY.Medium,
2454
+ retryable: false,
2455
+ userMessage: "errors.notification.validation.failed"
2456
+ },
2457
+ // User Preferences
2458
+ [ERROR_CODES.NOTIFICATION_USER_OPTED_OUT]: {
2459
+ code: ERROR_CODES.NOTIFICATION_USER_OPTED_OUT,
2460
+ status: HTTP_STATUS.OK,
2461
+ category: ERROR_CATEGORY.Validation,
2462
+ severity: ERROR_SEVERITY.Low,
2463
+ retryable: false,
2464
+ userMessage: "errors.notification.user.opted_out"
2465
+ },
2466
+ // Queue errors (retryable)
2467
+ [ERROR_CODES.NOTIFICATION_QUEUE_FULL]: {
2468
+ code: ERROR_CODES.NOTIFICATION_QUEUE_FULL,
2469
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2470
+ category: ERROR_CATEGORY.Queue,
2471
+ severity: ERROR_SEVERITY.High,
2472
+ retryable: true,
2473
+ userMessage: "errors.notification.queue.full"
2474
+ },
2475
+ [ERROR_CODES.NOTIFICATION_QUEUE_PROCESSING_FAILED]: {
2476
+ code: ERROR_CODES.NOTIFICATION_QUEUE_PROCESSING_FAILED,
2477
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2478
+ category: ERROR_CATEGORY.Queue,
2479
+ severity: ERROR_SEVERITY.High,
2480
+ retryable: true,
2481
+ userMessage: "errors.notification.queue.processing_failed"
2482
+ },
2483
+ // Webhook errors
2484
+ [ERROR_CODES.NOTIFICATION_WEBHOOK_SIGNATURE_INVALID]: {
2485
+ code: ERROR_CODES.NOTIFICATION_WEBHOOK_SIGNATURE_INVALID,
2486
+ status: HTTP_STATUS.UNAUTHORIZED,
2487
+ category: ERROR_CATEGORY.Webhook,
2488
+ severity: ERROR_SEVERITY.High,
2489
+ retryable: false,
2490
+ userMessage: "errors.notification.webhook.signature_invalid"
2491
+ },
2492
+ [ERROR_CODES.NOTIFICATION_WEBHOOK_VALIDATION_FAILED]: {
2493
+ code: ERROR_CODES.NOTIFICATION_WEBHOOK_VALIDATION_FAILED,
2494
+ status: HTTP_STATUS.BAD_REQUEST,
2495
+ category: ERROR_CATEGORY.Webhook,
2496
+ severity: ERROR_SEVERITY.Medium,
2497
+ retryable: false,
2498
+ userMessage: "errors.notification.webhook.validation_failed"
2499
+ },
2500
+ [ERROR_CODES.NOTIFICATION_WEBHOOK_PROCESSING_FAILED]: {
2501
+ code: ERROR_CODES.NOTIFICATION_WEBHOOK_PROCESSING_FAILED,
2502
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2503
+ category: ERROR_CATEGORY.Webhook,
2504
+ severity: ERROR_SEVERITY.High,
2505
+ retryable: true,
2506
+ userMessage: "errors.notification.webhook.processing_failed"
2507
+ },
2508
+ // Template errors
2509
+ [ERROR_CODES.NOTIFICATION_TEMPLATE_NOT_FOUND]: {
2510
+ code: ERROR_CODES.NOTIFICATION_TEMPLATE_NOT_FOUND,
2511
+ status: HTTP_STATUS.NOT_FOUND,
2512
+ category: ERROR_CATEGORY.Template,
2513
+ severity: ERROR_SEVERITY.High,
2514
+ retryable: false,
2515
+ userMessage: "errors.notification.template.not_found"
2516
+ },
2517
+ [ERROR_CODES.NOTIFICATION_TEMPLATE_RENDER_FAILED]: {
2518
+ code: ERROR_CODES.NOTIFICATION_TEMPLATE_RENDER_FAILED,
2519
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2520
+ category: ERROR_CATEGORY.Template,
2521
+ severity: ERROR_SEVERITY.High,
2522
+ retryable: false,
2523
+ userMessage: "errors.notification.template.render_failed"
2524
+ },
2525
+ // General notification errors
2526
+ [ERROR_CODES.NOTIFICATION_UNKNOWN_ERROR]: {
2527
+ code: ERROR_CODES.NOTIFICATION_UNKNOWN_ERROR,
2528
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2529
+ category: ERROR_CATEGORY.Unknown,
2530
+ severity: ERROR_SEVERITY.Medium,
2531
+ retryable: false,
2532
+ userMessage: "errors.notification.unknown"
2533
+ },
2534
+ [ERROR_CODES.NOTIFICATION_INITIALIZATION_FAILED]: {
2535
+ code: ERROR_CODES.NOTIFICATION_INITIALIZATION_FAILED,
2536
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2537
+ category: ERROR_CATEGORY.Configuration,
2538
+ severity: ERROR_SEVERITY.Critical,
2539
+ retryable: false,
2540
+ userMessage: "errors.notification.initialization_failed"
2541
+ },
2542
+ // ===== Storage Package Error Definitions =====
2543
+ // General
2544
+ [ERROR_CODES.STORAGE_UNKNOWN_ERROR]: {
2545
+ code: ERROR_CODES.STORAGE_UNKNOWN_ERROR,
2546
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2547
+ category: ERROR_CATEGORY.Unknown,
2548
+ severity: ERROR_SEVERITY.Medium,
2549
+ retryable: false,
2550
+ userMessage: "errors.storage.unknown"
2551
+ },
2552
+ [ERROR_CODES.STORAGE_INITIALIZATION_FAILED]: {
2553
+ code: ERROR_CODES.STORAGE_INITIALIZATION_FAILED,
2554
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2555
+ category: ERROR_CATEGORY.Configuration,
2556
+ severity: ERROR_SEVERITY.Critical,
2557
+ retryable: false,
2558
+ userMessage: "errors.storage.initialization_failed"
2559
+ },
2560
+ // Adapter errors
2561
+ [ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND]: {
2562
+ code: ERROR_CODES.STORAGE_ADAPTER_NOT_FOUND,
2563
+ status: HTTP_STATUS.NOT_FOUND,
2564
+ category: ERROR_CATEGORY.Configuration,
2565
+ severity: ERROR_SEVERITY.Critical,
2566
+ retryable: false,
2567
+ userMessage: "errors.storage.adapter.not_found"
2568
+ },
2569
+ [ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED]: {
2570
+ code: ERROR_CODES.STORAGE_ADAPTER_INITIALIZATION_FAILED,
2571
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2572
+ category: ERROR_CATEGORY.ExternalService,
2573
+ severity: ERROR_SEVERITY.Critical,
2574
+ retryable: false,
2575
+ userMessage: "errors.storage.adapter.initialization_failed"
2576
+ },
2577
+ [ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID]: {
2578
+ code: ERROR_CODES.STORAGE_ADAPTER_CONFIGURATION_INVALID,
2579
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2580
+ category: ERROR_CATEGORY.Configuration,
2581
+ severity: ERROR_SEVERITY.Critical,
2582
+ retryable: false,
2583
+ userMessage: "errors.storage.adapter.configuration_invalid"
2584
+ },
2585
+ [ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED]: {
2586
+ code: ERROR_CODES.STORAGE_ADAPTER_ALREADY_REGISTERED,
2587
+ status: HTTP_STATUS.CONFLICT,
2588
+ category: ERROR_CATEGORY.Configuration,
2589
+ severity: ERROR_SEVERITY.High,
2590
+ retryable: false,
2591
+ userMessage: "errors.storage.adapter.already_registered"
2592
+ },
2593
+ [ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED]: {
2594
+ code: ERROR_CODES.STORAGE_ADAPTER_CONNECTION_FAILED,
2595
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2596
+ category: ERROR_CATEGORY.Network,
2597
+ severity: ERROR_SEVERITY.High,
2598
+ retryable: true,
2599
+ userMessage: "errors.storage.adapter.connection_failed"
2600
+ },
2601
+ [ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED]: {
2602
+ code: ERROR_CODES.STORAGE_ADAPTER_AUTHENTICATION_FAILED,
2603
+ status: HTTP_STATUS.UNAUTHORIZED,
2604
+ category: ERROR_CATEGORY.Authentication,
2605
+ severity: ERROR_SEVERITY.Critical,
2606
+ retryable: false,
2607
+ userMessage: "errors.storage.adapter.authentication_failed"
2608
+ },
2609
+ [ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED]: {
2610
+ code: ERROR_CODES.STORAGE_ADAPTER_OPERATION_FAILED,
2611
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2612
+ category: ERROR_CATEGORY.ExternalService,
2613
+ severity: ERROR_SEVERITY.High,
2614
+ retryable: true,
2615
+ userMessage: "errors.storage.adapter.operation_failed"
2616
+ },
2617
+ [ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED]: {
2618
+ code: ERROR_CODES.STORAGE_ADAPTER_HEALTH_CHECK_FAILED,
2619
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2620
+ category: ERROR_CATEGORY.ExternalService,
2621
+ severity: ERROR_SEVERITY.Medium,
2622
+ retryable: true,
2623
+ userMessage: "errors.storage.adapter.health_check_failed"
2624
+ },
2625
+ [ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE]: {
2626
+ code: ERROR_CODES.STORAGE_ADAPTER_UNAVAILABLE,
2627
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2628
+ category: ERROR_CATEGORY.ExternalService,
2629
+ severity: ERROR_SEVERITY.High,
2630
+ retryable: true,
2631
+ userMessage: "errors.storage.adapter.unavailable"
2632
+ },
2633
+ [ERROR_CODES.STORAGE_ADAPTER_TIMEOUT]: {
2634
+ code: ERROR_CODES.STORAGE_ADAPTER_TIMEOUT,
2635
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
2636
+ category: ERROR_CATEGORY.Timeout,
2637
+ severity: ERROR_SEVERITY.Medium,
2638
+ retryable: true,
2639
+ userMessage: "errors.storage.adapter.timeout"
2640
+ },
2641
+ [ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT]: {
2642
+ code: ERROR_CODES.STORAGE_ADAPTER_RATE_LIMIT,
2643
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
2644
+ category: ERROR_CATEGORY.RateLimit,
2645
+ severity: ERROR_SEVERITY.Medium,
2646
+ retryable: true,
2647
+ userMessage: "errors.storage.adapter.rate_limit"
2648
+ },
2649
+ [ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED]: {
2650
+ code: ERROR_CODES.STORAGE_ADAPTER_QUOTA_EXCEEDED,
2651
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
2652
+ category: ERROR_CATEGORY.Quota,
2653
+ severity: ERROR_SEVERITY.High,
2654
+ retryable: false,
2655
+ userMessage: "errors.storage.adapter.quota_exceeded"
2656
+ },
2657
+ [ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION]: {
2658
+ code: ERROR_CODES.STORAGE_ADAPTER_UNSUPPORTED_OPERATION,
2659
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2660
+ category: ERROR_CATEGORY.ExternalService,
2661
+ severity: ERROR_SEVERITY.Medium,
2662
+ retryable: false,
2663
+ userMessage: "errors.storage.adapter.unsupported_operation"
2664
+ },
2665
+ [ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED]: {
2666
+ code: ERROR_CODES.STORAGE_ADAPTER_FEATURE_NOT_SUPPORTED,
2667
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
2668
+ category: ERROR_CATEGORY.ExternalService,
2669
+ severity: ERROR_SEVERITY.Medium,
2670
+ retryable: false,
2671
+ userMessage: "errors.storage.adapter.feature_not_supported"
2672
+ },
2673
+ [ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS]: {
2674
+ code: ERROR_CODES.STORAGE_NO_HEALTHY_ADAPTERS,
2675
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2676
+ category: ERROR_CATEGORY.ExternalService,
2677
+ severity: ERROR_SEVERITY.Critical,
2678
+ retryable: true,
2679
+ userMessage: "errors.storage.no_healthy_adapters"
2680
+ },
2681
+ [ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED]: {
2682
+ code: ERROR_CODES.STORAGE_ALL_ADAPTERS_FAILED,
2683
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2684
+ category: ERROR_CATEGORY.ExternalService,
2685
+ severity: ERROR_SEVERITY.Critical,
2686
+ retryable: true,
2687
+ userMessage: "errors.storage.all_adapters_failed"
2688
+ },
2689
+ // File Validation
2690
+ [ERROR_CODES.STORAGE_FILE_TOO_LARGE]: {
2691
+ code: ERROR_CODES.STORAGE_FILE_TOO_LARGE,
2692
+ status: HTTP_STATUS.PAYLOAD_TOO_LARGE,
2693
+ category: ERROR_CATEGORY.Validation,
2694
+ severity: ERROR_SEVERITY.Low,
2695
+ retryable: false,
2696
+ userMessage: "errors.storage.file.too_large"
2697
+ },
2698
+ [ERROR_CODES.STORAGE_FILE_TOO_SMALL]: {
2699
+ code: ERROR_CODES.STORAGE_FILE_TOO_SMALL,
2700
+ status: HTTP_STATUS.BAD_REQUEST,
2701
+ category: ERROR_CATEGORY.Validation,
2702
+ severity: ERROR_SEVERITY.Low,
2703
+ retryable: false,
2704
+ userMessage: "errors.storage.file.too_small"
2705
+ },
2706
+ [ERROR_CODES.STORAGE_FILE_SIZE_INVALID]: {
2707
+ code: ERROR_CODES.STORAGE_FILE_SIZE_INVALID,
2708
+ status: HTTP_STATUS.BAD_REQUEST,
2709
+ category: ERROR_CATEGORY.Validation,
2710
+ severity: ERROR_SEVERITY.Low,
2711
+ retryable: false,
2712
+ userMessage: "errors.storage.file.size.invalid"
2713
+ },
2714
+ [ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED]: {
2715
+ code: ERROR_CODES.STORAGE_FILE_TYPE_NOT_ALLOWED,
2716
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2717
+ category: ERROR_CATEGORY.Security,
2718
+ severity: ERROR_SEVERITY.Medium,
2719
+ retryable: false,
2720
+ userMessage: "errors.storage.file.type.not_allowed"
2721
+ },
2722
+ [ERROR_CODES.STORAGE_INVALID_MIME_TYPE]: {
2723
+ code: ERROR_CODES.STORAGE_INVALID_MIME_TYPE,
2724
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2725
+ category: ERROR_CATEGORY.Validation,
2726
+ severity: ERROR_SEVERITY.Low,
2727
+ retryable: false,
2728
+ userMessage: "errors.storage.mime_type.invalid"
2729
+ },
2730
+ [ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION]: {
2731
+ code: ERROR_CODES.STORAGE_INVALID_FILE_EXTENSION,
2732
+ status: HTTP_STATUS.BAD_REQUEST,
2733
+ category: ERROR_CATEGORY.Validation,
2734
+ severity: ERROR_SEVERITY.Low,
2735
+ retryable: false,
2736
+ userMessage: "errors.storage.extension.invalid"
2737
+ },
2738
+ [ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID]: {
2739
+ code: ERROR_CODES.STORAGE_FILE_EXTENSION_INVALID,
2740
+ status: HTTP_STATUS.BAD_REQUEST,
2741
+ category: ERROR_CATEGORY.Validation,
2742
+ severity: ERROR_SEVERITY.Low,
2743
+ retryable: false,
2744
+ userMessage: "errors.storage.file.extension.invalid"
2745
+ },
2746
+ [ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH]: {
2747
+ code: ERROR_CODES.STORAGE_FILE_EXTENSION_MISMATCH,
2748
+ status: HTTP_STATUS.BAD_REQUEST,
2749
+ category: ERROR_CATEGORY.Validation,
2750
+ severity: ERROR_SEVERITY.Medium,
2751
+ retryable: false,
2752
+ userMessage: "errors.storage.file.extension.mismatch"
2753
+ },
2754
+ [ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED]: {
2755
+ code: ERROR_CODES.STORAGE_EXECUTABLE_NOT_ALLOWED,
2756
+ status: HTTP_STATUS.FORBIDDEN,
2757
+ category: ERROR_CATEGORY.Security,
2758
+ severity: ERROR_SEVERITY.High,
2759
+ retryable: false,
2760
+ userMessage: "errors.storage.executable_not_allowed"
2761
+ },
2762
+ [ERROR_CODES.STORAGE_VALIDATION_FAILED]: {
2763
+ code: ERROR_CODES.STORAGE_VALIDATION_FAILED,
2764
+ status: HTTP_STATUS.BAD_REQUEST,
2765
+ category: ERROR_CATEGORY.Validation,
2766
+ severity: ERROR_SEVERITY.Low,
2767
+ retryable: false,
2768
+ userMessage: "errors.storage.validation.failed"
2769
+ },
2770
+ [ERROR_CODES.STORAGE_INVALID_FILE_CONTENT]: {
2771
+ code: ERROR_CODES.STORAGE_INVALID_FILE_CONTENT,
2772
+ status: HTTP_STATUS.BAD_REQUEST,
2773
+ category: ERROR_CATEGORY.Validation,
2774
+ severity: ERROR_SEVERITY.Medium,
2775
+ retryable: false,
2776
+ userMessage: "errors.storage.validation.invalid_file_content"
2777
+ },
2778
+ // Security
2779
+ [ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED]: {
2780
+ code: ERROR_CODES.STORAGE_SECURITY_VIRUS_DETECTED,
2781
+ status: HTTP_STATUS.FORBIDDEN,
2782
+ category: ERROR_CATEGORY.Security,
2783
+ severity: ERROR_SEVERITY.Critical,
2784
+ retryable: false,
2785
+ userMessage: "errors.storage.security.virus_detected"
2786
+ },
2787
+ [ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED]: {
2788
+ code: ERROR_CODES.STORAGE_SECURITY_SCAN_FAILED,
2789
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2790
+ category: ERROR_CATEGORY.Security,
2791
+ severity: ERROR_SEVERITY.High,
2792
+ retryable: true,
2793
+ userMessage: "errors.storage.security.scan_failed"
2794
+ },
2795
+ [ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED]: {
2796
+ code: ERROR_CODES.STORAGE_SECURITY_ACCESS_DENIED,
2797
+ status: HTTP_STATUS.FORBIDDEN,
2798
+ category: ERROR_CATEGORY.Authorization,
2799
+ severity: ERROR_SEVERITY.Medium,
2800
+ retryable: false,
2801
+ userMessage: "errors.storage.security.access_denied"
2802
+ },
2803
+ [ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED]: {
2804
+ code: ERROR_CODES.STORAGE_SECURITY_ENCRYPTION_FAILED,
2805
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2806
+ category: ERROR_CATEGORY.Security,
2807
+ severity: ERROR_SEVERITY.High,
2808
+ retryable: true,
2809
+ userMessage: "errors.storage.security.encryption_failed"
2810
+ },
2811
+ // File Operations
2812
+ [ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED]: {
2813
+ code: ERROR_CODES.STORAGE_FILE_UPLOAD_FAILED,
2814
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2815
+ category: ERROR_CATEGORY.FileOperation,
2816
+ severity: ERROR_SEVERITY.High,
2817
+ retryable: true,
2818
+ userMessage: "errors.storage.file.upload_failed"
2819
+ },
2820
+ [ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED]: {
2821
+ code: ERROR_CODES.STORAGE_FILE_DOWNLOAD_FAILED,
2822
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2823
+ category: ERROR_CATEGORY.FileOperation,
2824
+ severity: ERROR_SEVERITY.High,
2825
+ retryable: true,
2826
+ userMessage: "errors.storage.file.download_failed"
2827
+ },
2828
+ [ERROR_CODES.STORAGE_FILE_DELETE_FAILED]: {
2829
+ code: ERROR_CODES.STORAGE_FILE_DELETE_FAILED,
2830
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2831
+ category: ERROR_CATEGORY.FileOperation,
2832
+ severity: ERROR_SEVERITY.High,
2833
+ retryable: true,
2834
+ userMessage: "errors.storage.file.delete_failed"
2835
+ },
2836
+ [ERROR_CODES.STORAGE_FILE_UPDATE_FAILED]: {
2837
+ code: ERROR_CODES.STORAGE_FILE_UPDATE_FAILED,
2838
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2839
+ category: ERROR_CATEGORY.FileOperation,
2840
+ severity: ERROR_SEVERITY.High,
2841
+ retryable: true,
2842
+ userMessage: "errors.storage.file.update_failed"
2843
+ },
2844
+ [ERROR_CODES.STORAGE_FILE_NOT_FOUND]: {
2845
+ code: ERROR_CODES.STORAGE_FILE_NOT_FOUND,
2846
+ status: HTTP_STATUS.NOT_FOUND,
2847
+ category: ERROR_CATEGORY.NotFound,
2848
+ severity: ERROR_SEVERITY.Low,
2849
+ retryable: false,
2850
+ userMessage: "errors.storage.file.not_found"
2851
+ },
2852
+ [ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS]: {
2853
+ code: ERROR_CODES.STORAGE_FILE_ALREADY_EXISTS,
2854
+ status: HTTP_STATUS.CONFLICT,
2855
+ category: ERROR_CATEGORY.Conflict,
2856
+ severity: ERROR_SEVERITY.Low,
2857
+ retryable: false,
2858
+ userMessage: "errors.storage.file.already_exists"
2859
+ },
2860
+ [ERROR_CODES.STORAGE_FILE_MOVE_FAILED]: {
2861
+ code: ERROR_CODES.STORAGE_FILE_MOVE_FAILED,
2862
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2863
+ category: ERROR_CATEGORY.FileOperation,
2864
+ severity: ERROR_SEVERITY.Medium,
2865
+ retryable: true,
2866
+ userMessage: "errors.storage.file.move_failed"
2867
+ },
2868
+ [ERROR_CODES.STORAGE_FILE_COPY_FAILED]: {
2869
+ code: ERROR_CODES.STORAGE_FILE_COPY_FAILED,
2870
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2871
+ category: ERROR_CATEGORY.FileOperation,
2872
+ severity: ERROR_SEVERITY.Medium,
2873
+ retryable: true,
2874
+ userMessage: "errors.storage.file.copy_failed"
2875
+ },
2876
+ [ERROR_CODES.STORAGE_FILE_READ_FAILED]: {
2877
+ code: ERROR_CODES.STORAGE_FILE_READ_FAILED,
2878
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2879
+ category: ERROR_CATEGORY.FileOperation,
2880
+ severity: ERROR_SEVERITY.High,
2881
+ retryable: true,
2882
+ userMessage: "errors.storage.file.read_failed"
2883
+ },
2884
+ [ERROR_CODES.STORAGE_FILE_WRITE_FAILED]: {
2885
+ code: ERROR_CODES.STORAGE_FILE_WRITE_FAILED,
2886
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2887
+ category: ERROR_CATEGORY.FileOperation,
2888
+ severity: ERROR_SEVERITY.High,
2889
+ retryable: true,
2890
+ userMessage: "errors.storage.file.write_failed"
2891
+ },
2892
+ [ERROR_CODES.STORAGE_FILE_CORRUPTED]: {
2893
+ code: ERROR_CODES.STORAGE_FILE_CORRUPTED,
2894
+ status: HTTP_STATUS.BAD_REQUEST,
2895
+ category: ERROR_CATEGORY.Validation,
2896
+ severity: ERROR_SEVERITY.Medium,
2897
+ retryable: false,
2898
+ userMessage: "errors.storage.file.corrupted"
2899
+ },
2900
+ [ERROR_CODES.STORAGE_INVALID_OPERATION]: {
2901
+ code: ERROR_CODES.STORAGE_INVALID_OPERATION,
2902
+ status: HTTP_STATUS.BAD_REQUEST,
2903
+ category: ERROR_CATEGORY.Validation,
2904
+ severity: ERROR_SEVERITY.Low,
2905
+ retryable: false,
2906
+ userMessage: "errors.storage.invalid_operation"
2907
+ },
2908
+ // Metadata
2909
+ [ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED]: {
2910
+ code: ERROR_CODES.STORAGE_METADATA_EXTRACTION_FAILED,
2911
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2912
+ category: ERROR_CATEGORY.Processing,
2913
+ severity: ERROR_SEVERITY.Low,
2914
+ retryable: true,
2915
+ userMessage: "errors.storage.metadata.extraction_failed"
2916
+ },
2917
+ [ERROR_CODES.STORAGE_METADATA_INVALID]: {
2918
+ code: ERROR_CODES.STORAGE_METADATA_INVALID,
2919
+ status: HTTP_STATUS.BAD_REQUEST,
2920
+ category: ERROR_CATEGORY.Validation,
2921
+ severity: ERROR_SEVERITY.Low,
2922
+ retryable: false,
2923
+ userMessage: "errors.storage.metadata.invalid"
2924
+ },
2925
+ [ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED]: {
2926
+ code: ERROR_CODES.STORAGE_METADATA_UPDATE_FAILED,
2927
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2928
+ category: ERROR_CATEGORY.Processing,
2929
+ severity: ERROR_SEVERITY.Medium,
2930
+ retryable: true,
2931
+ userMessage: "errors.storage.metadata.update_failed"
2932
+ },
2933
+ // Media Processing
2934
+ [ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED]: {
2935
+ code: ERROR_CODES.STORAGE_MEDIA_PROCESSING_FAILED,
2936
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2937
+ category: ERROR_CATEGORY.Processing,
2938
+ severity: ERROR_SEVERITY.Medium,
2939
+ retryable: true,
2940
+ userMessage: "errors.storage.media.processing_failed"
2941
+ },
2942
+ [ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED]: {
2943
+ code: ERROR_CODES.STORAGE_MEDIA_RESIZE_FAILED,
2944
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2945
+ category: ERROR_CATEGORY.Processing,
2946
+ severity: ERROR_SEVERITY.Medium,
2947
+ retryable: true,
2948
+ userMessage: "errors.storage.media.resize_failed"
2949
+ },
2950
+ [ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED]: {
2951
+ code: ERROR_CODES.STORAGE_MEDIA_FORMAT_UNSUPPORTED,
2952
+ status: HTTP_STATUS.UNSUPPORTED_MEDIA_TYPE,
2953
+ category: ERROR_CATEGORY.Validation,
2954
+ severity: ERROR_SEVERITY.Low,
2955
+ retryable: false,
2956
+ userMessage: "errors.storage.media.format_unsupported"
2957
+ },
2958
+ [ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED]: {
2959
+ code: ERROR_CODES.STORAGE_MEDIA_TRANSCODE_FAILED,
2960
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2961
+ category: ERROR_CATEGORY.Processing,
2962
+ severity: ERROR_SEVERITY.Medium,
2963
+ retryable: true,
2964
+ userMessage: "errors.storage.media.transcode_failed"
2965
+ },
2966
+ [ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED]: {
2967
+ code: ERROR_CODES.STORAGE_MEDIA_THUMBNAIL_FAILED,
2968
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2969
+ category: ERROR_CATEGORY.Processing,
2970
+ severity: ERROR_SEVERITY.Low,
2971
+ retryable: true,
2972
+ userMessage: "errors.storage.media.thumbnail_failed"
2973
+ },
2974
+ [ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS]: {
2975
+ code: ERROR_CODES.STORAGE_MEDIA_INVALID_DIMENSIONS,
2976
+ status: HTTP_STATUS.BAD_REQUEST,
2977
+ category: ERROR_CATEGORY.Validation,
2978
+ severity: ERROR_SEVERITY.Low,
2979
+ retryable: false,
2980
+ userMessage: "errors.storage.media.invalid_dimensions"
2981
+ },
2982
+ // Template & PDF
2983
+ [ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND]: {
2984
+ code: ERROR_CODES.STORAGE_TEMPLATE_NOT_FOUND,
2985
+ status: HTTP_STATUS.NOT_FOUND,
2986
+ category: ERROR_CATEGORY.NotFound,
2987
+ severity: ERROR_SEVERITY.Medium,
2988
+ retryable: false,
2989
+ userMessage: "errors.storage.template.not_found"
2990
+ },
2991
+ [ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED]: {
2992
+ code: ERROR_CODES.STORAGE_TEMPLATE_RENDER_FAILED,
2993
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2994
+ category: ERROR_CATEGORY.Template,
2995
+ severity: ERROR_SEVERITY.Medium,
2996
+ retryable: true,
2997
+ userMessage: "errors.storage.template.render_failed"
2998
+ },
2999
+ [ERROR_CODES.STORAGE_PDF_GENERATION_FAILED]: {
3000
+ code: ERROR_CODES.STORAGE_PDF_GENERATION_FAILED,
3001
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3002
+ category: ERROR_CATEGORY.Processing,
3003
+ severity: ERROR_SEVERITY.Medium,
3004
+ retryable: true,
3005
+ userMessage: "errors.storage.pdf.generation_failed"
3006
+ },
3007
+ [ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT]: {
3008
+ code: ERROR_CODES.STORAGE_PDF_RENDERING_TIMEOUT,
3009
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3010
+ category: ERROR_CATEGORY.Timeout,
3011
+ severity: ERROR_SEVERITY.Medium,
3012
+ retryable: true,
3013
+ userMessage: "errors.storage.pdf.rendering_timeout"
3014
+ },
3015
+ // Queue
3016
+ [ERROR_CODES.STORAGE_QUEUE_FULL]: {
3017
+ code: ERROR_CODES.STORAGE_QUEUE_FULL,
3018
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3019
+ category: ERROR_CATEGORY.Queue,
3020
+ severity: ERROR_SEVERITY.Medium,
3021
+ retryable: true,
3022
+ userMessage: "errors.storage.queue.full"
3023
+ },
3024
+ [ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED]: {
3025
+ code: ERROR_CODES.STORAGE_QUEUE_PROCESSING_FAILED,
3026
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3027
+ category: ERROR_CATEGORY.Queue,
3028
+ severity: ERROR_SEVERITY.High,
3029
+ retryable: true,
3030
+ userMessage: "errors.storage.queue.processing_failed"
3031
+ },
3032
+ [ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND]: {
3033
+ code: ERROR_CODES.STORAGE_QUEUE_ITEM_NOT_FOUND,
3034
+ status: HTTP_STATUS.NOT_FOUND,
3035
+ category: ERROR_CATEGORY.NotFound,
3036
+ severity: ERROR_SEVERITY.Low,
3037
+ retryable: false,
3038
+ userMessage: "errors.storage.queue.item_not_found"
3039
+ },
3040
+ // Compliance
3041
+ [ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION]: {
3042
+ code: ERROR_CODES.STORAGE_COMPLIANCE_VIOLATION,
3043
+ status: HTTP_STATUS.FORBIDDEN,
3044
+ category: ERROR_CATEGORY.Compliance,
3045
+ severity: ERROR_SEVERITY.High,
3046
+ retryable: false,
3047
+ userMessage: "errors.storage.compliance.violation"
3048
+ },
3049
+ [ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED]: {
3050
+ code: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_EXPIRED,
3051
+ status: HTTP_STATUS.GONE,
3052
+ category: ERROR_CATEGORY.Compliance,
3053
+ severity: ERROR_SEVERITY.Medium,
3054
+ retryable: false,
3055
+ userMessage: "errors.storage.compliance.retention_expired"
3056
+ },
3057
+ [ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE]: {
3058
+ code: ERROR_CODES.STORAGE_COMPLIANCE_IMMUTABLE_FILE,
3059
+ status: HTTP_STATUS.FORBIDDEN,
3060
+ category: ERROR_CATEGORY.Compliance,
3061
+ severity: ERROR_SEVERITY.Medium,
3062
+ retryable: false,
3063
+ userMessage: "errors.storage.compliance.immutable_file"
3064
+ },
3065
+ [ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND]: {
3066
+ code: ERROR_CODES.STORAGE_COMPLIANCE_POLICY_NOT_FOUND,
3067
+ status: HTTP_STATUS.NOT_FOUND,
3068
+ category: ERROR_CATEGORY.Configuration,
3069
+ severity: ERROR_SEVERITY.Medium,
3070
+ retryable: false,
3071
+ userMessage: "errors.storage.compliance.policy_not_found"
3072
+ },
3073
+ [ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION]: {
3074
+ code: ERROR_CODES.STORAGE_COMPLIANCE_RETENTION_VIOLATION,
3075
+ status: HTTP_STATUS.FORBIDDEN,
3076
+ category: ERROR_CATEGORY.Compliance,
3077
+ severity: ERROR_SEVERITY.High,
3078
+ retryable: false,
3079
+ userMessage: "errors.storage.compliance.retention_violation"
3080
+ },
3081
+ [ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED]: {
3082
+ code: ERROR_CODES.STORAGE_COMPLIANCE_SOFT_DELETE_REQUIRED,
3083
+ status: HTTP_STATUS.FORBIDDEN,
3084
+ category: ERROR_CATEGORY.Compliance,
3085
+ severity: ERROR_SEVERITY.Medium,
3086
+ retryable: false,
3087
+ userMessage: "errors.storage.compliance.soft_delete_required"
3088
+ },
3089
+ [ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE]: {
3090
+ code: ERROR_CODES.STORAGE_COMPLIANCE_GRACE_PERIOD_ACTIVE,
3091
+ status: HTTP_STATUS.CONFLICT,
3092
+ category: ERROR_CATEGORY.Compliance,
3093
+ severity: ERROR_SEVERITY.Low,
3094
+ retryable: false,
3095
+ userMessage: "errors.storage.compliance.grace_period_active"
3096
+ },
3097
+ [ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION]: {
3098
+ code: ERROR_CODES.STORAGE_COMPLIANCE_DEFERRED_DELETION,
3099
+ status: HTTP_STATUS.ACCEPTED,
3100
+ category: ERROR_CATEGORY.Compliance,
3101
+ severity: ERROR_SEVERITY.Low,
3102
+ retryable: false,
3103
+ userMessage: "errors.storage.compliance.deferred_deletion"
3104
+ },
3105
+ [ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED]: {
3106
+ code: ERROR_CODES.STORAGE_COMPLIANCE_PATTERN_PROTECTED,
3107
+ status: HTTP_STATUS.FORBIDDEN,
3108
+ category: ERROR_CATEGORY.Compliance,
3109
+ severity: ERROR_SEVERITY.High,
3110
+ retryable: false,
3111
+ userMessage: "errors.storage.compliance.pattern_protected"
3112
+ },
3113
+ // Share Links
3114
+ [ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND]: {
3115
+ code: ERROR_CODES.STORAGE_SHARE_LINK_NOT_FOUND,
3116
+ status: HTTP_STATUS.NOT_FOUND,
3117
+ category: ERROR_CATEGORY.NotFound,
3118
+ severity: ERROR_SEVERITY.Low,
3119
+ retryable: false,
3120
+ userMessage: "errors.storage.share_link.not_found"
3121
+ },
3122
+ [ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED]: {
3123
+ code: ERROR_CODES.STORAGE_SHARE_LINK_EXPIRED,
3124
+ status: HTTP_STATUS.GONE,
3125
+ category: ERROR_CATEGORY.Validation,
3126
+ severity: ERROR_SEVERITY.Low,
3127
+ retryable: false,
3128
+ userMessage: "errors.storage.share_link.expired"
3129
+ },
3130
+ [ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS]: {
3131
+ code: ERROR_CODES.STORAGE_SHARE_LINK_MAX_DOWNLOADS,
3132
+ status: HTTP_STATUS.FORBIDDEN,
3133
+ category: ERROR_CATEGORY.Limits,
3134
+ severity: ERROR_SEVERITY.Low,
3135
+ retryable: false,
3136
+ userMessage: "errors.storage.share_link.max_downloads"
3137
+ },
3138
+ [ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD]: {
3139
+ code: ERROR_CODES.STORAGE_SHARE_LINK_INVALID_PASSWORD,
3140
+ status: HTTP_STATUS.UNAUTHORIZED,
3141
+ category: ERROR_CATEGORY.Authentication,
3142
+ severity: ERROR_SEVERITY.Low,
3143
+ retryable: false,
3144
+ userMessage: "errors.storage.share_link.invalid_password"
3145
+ },
3146
+ // Plugin
3147
+ [ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND]: {
3148
+ code: ERROR_CODES.STORAGE_PLUGIN_NOT_FOUND,
3149
+ status: HTTP_STATUS.NOT_FOUND,
3150
+ category: ERROR_CATEGORY.Plugin,
3151
+ severity: ERROR_SEVERITY.Medium,
3152
+ retryable: false,
3153
+ userMessage: "errors.storage.plugin.not_found"
3154
+ },
3155
+ [ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED]: {
3156
+ code: ERROR_CODES.STORAGE_PLUGIN_INITIALIZATION_FAILED,
3157
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3158
+ category: ERROR_CATEGORY.Plugin,
3159
+ severity: ERROR_SEVERITY.High,
3160
+ retryable: false,
3161
+ userMessage: "errors.storage.plugin.initialization_failed"
3162
+ },
3163
+ [ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED]: {
3164
+ code: ERROR_CODES.STORAGE_PLUGIN_EXECUTION_FAILED,
3165
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3166
+ category: ERROR_CATEGORY.Plugin,
3167
+ severity: ERROR_SEVERITY.Medium,
3168
+ retryable: true,
3169
+ userMessage: "errors.storage.plugin.execution_failed"
3170
+ },
3171
+ // VirusTotal Provider (Plugin)
3172
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST]: {
3173
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_BAD_REQUEST,
3174
+ status: HTTP_STATUS.BAD_REQUEST,
3175
+ category: ERROR_CATEGORY.Validation,
3176
+ severity: ERROR_SEVERITY.Low,
3177
+ retryable: false,
3178
+ userMessage: "errors.storage.virustotal.bad_request"
3179
+ },
3180
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED]: {
3181
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_AUTHENTICATION_REQUIRED,
3182
+ status: HTTP_STATUS.UNAUTHORIZED,
3183
+ category: ERROR_CATEGORY.Authentication,
3184
+ severity: ERROR_SEVERITY.Critical,
3185
+ retryable: false,
3186
+ userMessage: "errors.storage.virustotal.authentication_required"
3187
+ },
3188
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS]: {
3189
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_WRONG_CREDENTIALS,
3190
+ status: HTTP_STATUS.UNAUTHORIZED,
3191
+ category: ERROR_CATEGORY.Authentication,
3192
+ severity: ERROR_SEVERITY.Critical,
3193
+ retryable: false,
3194
+ userMessage: "errors.storage.virustotal.wrong_credentials"
3195
+ },
3196
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE]: {
3197
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_FILE_TOO_LARGE,
3198
+ status: HTTP_STATUS.PAYLOAD_TOO_LARGE,
3199
+ category: ERROR_CATEGORY.Validation,
3200
+ severity: ERROR_SEVERITY.Medium,
3201
+ retryable: false,
3202
+ userMessage: "errors.storage.virustotal.file_too_large"
3203
+ },
3204
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED]: {
3205
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_QUOTA_EXCEEDED,
3206
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3207
+ category: ERROR_CATEGORY.Quota,
3208
+ severity: ERROR_SEVERITY.Medium,
3209
+ retryable: true,
3210
+ userMessage: "errors.storage.virustotal.quota_exceeded"
3211
+ },
3212
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND]: {
3213
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_ANALYSIS_NOT_FOUND,
3214
+ status: HTTP_STATUS.NOT_FOUND,
3215
+ category: ERROR_CATEGORY.NotFound,
3216
+ severity: ERROR_SEVERITY.Low,
3217
+ retryable: false,
3218
+ userMessage: "errors.storage.virustotal.analysis_not_found"
3219
+ },
3220
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT]: {
3221
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_TIMEOUT,
3222
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3223
+ category: ERROR_CATEGORY.Timeout,
3224
+ severity: ERROR_SEVERITY.Medium,
3225
+ retryable: true,
3226
+ userMessage: "errors.storage.virustotal.scan_timeout"
3227
+ },
3228
+ [ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED]: {
3229
+ code: ERROR_CODES.STORAGE_VIRUSTOTAL_SCAN_FAILED,
3230
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3231
+ category: ERROR_CATEGORY.Plugin,
3232
+ severity: ERROR_SEVERITY.High,
3233
+ retryable: true,
3234
+ userMessage: "errors.storage.virustotal.scan_failed"
3235
+ },
3236
+ // CDN Providers (Plugins)
3237
+ // Cloudflare
3238
+ [ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED]: {
3239
+ code: ERROR_CODES.CLOUDFLARE_AUTHENTICATION_FAILED,
3240
+ status: HTTP_STATUS.UNAUTHORIZED,
3241
+ category: ERROR_CATEGORY.Authentication,
3242
+ severity: ERROR_SEVERITY.High,
3243
+ retryable: false,
3244
+ userMessage: "errors.cloudflare.authentication.failed"
3245
+ },
3246
+ [ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND]: {
3247
+ code: ERROR_CODES.CLOUDFLARE_ZONE_NOT_FOUND,
3248
+ status: HTTP_STATUS.NOT_FOUND,
3249
+ category: ERROR_CATEGORY.NotFound,
3250
+ severity: ERROR_SEVERITY.High,
3251
+ retryable: false,
3252
+ userMessage: "errors.cloudflare.zone.not.found"
3253
+ },
3254
+ [ERROR_CODES.CLOUDFLARE_PURGE_FAILED]: {
3255
+ code: ERROR_CODES.CLOUDFLARE_PURGE_FAILED,
3256
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3257
+ category: ERROR_CATEGORY.Plugin,
3258
+ severity: ERROR_SEVERITY.Medium,
3259
+ retryable: true,
3260
+ userMessage: "errors.cloudflare.purge.failed"
3261
+ },
3262
+ [ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED]: {
3263
+ code: ERROR_CODES.CLOUDFLARE_RATE_LIMIT_EXCEEDED,
3264
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3265
+ category: ERROR_CATEGORY.RateLimit,
3266
+ severity: ERROR_SEVERITY.Medium,
3267
+ retryable: true,
3268
+ userMessage: "errors.cloudflare.rate.limit.exceeded"
3269
+ },
3270
+ [ERROR_CODES.CLOUDFLARE_INVALID_URL]: {
3271
+ code: ERROR_CODES.CLOUDFLARE_INVALID_URL,
3272
+ status: HTTP_STATUS.BAD_REQUEST,
3273
+ category: ERROR_CATEGORY.Validation,
3274
+ severity: ERROR_SEVERITY.Low,
3275
+ retryable: false,
3276
+ userMessage: "errors.cloudflare.invalid.url"
3277
+ },
3278
+ [ERROR_CODES.CLOUDFLARE_API_ERROR]: {
3279
+ code: ERROR_CODES.CLOUDFLARE_API_ERROR,
3280
+ status: HTTP_STATUS.BAD_GATEWAY,
3281
+ category: ERROR_CATEGORY.ExternalService,
3282
+ severity: ERROR_SEVERITY.High,
3283
+ retryable: true,
3284
+ userMessage: "errors.cloudflare.api.error"
3285
+ },
3286
+ // CloudFront
3287
+ [ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED]: {
3288
+ code: ERROR_CODES.CLOUDFRONT_AUTHENTICATION_FAILED,
3289
+ status: HTTP_STATUS.UNAUTHORIZED,
3290
+ category: ERROR_CATEGORY.Authentication,
3291
+ severity: ERROR_SEVERITY.High,
3292
+ retryable: false,
3293
+ userMessage: "errors.cloudfront.authentication.failed"
3294
+ },
3295
+ [ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND]: {
3296
+ code: ERROR_CODES.CLOUDFRONT_DISTRIBUTION_NOT_FOUND,
3297
+ status: HTTP_STATUS.NOT_FOUND,
3298
+ category: ERROR_CATEGORY.NotFound,
3299
+ severity: ERROR_SEVERITY.High,
3300
+ retryable: false,
3301
+ userMessage: "errors.cloudfront.distribution.not.found"
3302
+ },
3303
+ [ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED]: {
3304
+ code: ERROR_CODES.CLOUDFRONT_INVALIDATION_FAILED,
3305
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3306
+ category: ERROR_CATEGORY.Plugin,
3307
+ severity: ERROR_SEVERITY.Medium,
3308
+ retryable: true,
3309
+ userMessage: "errors.cloudfront.invalidation.failed"
3310
+ },
3311
+ [ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED]: {
3312
+ code: ERROR_CODES.CLOUDFRONT_QUOTA_EXCEEDED,
3313
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3314
+ category: ERROR_CATEGORY.Quota,
3315
+ severity: ERROR_SEVERITY.Medium,
3316
+ retryable: true,
3317
+ userMessage: "errors.cloudfront.quota.exceeded"
1980
3318
  },
1981
- // ===== Notification Package Error Definitions =====
1982
- // Provider errors (retryable)
1983
- [ERROR_CODES.NOTIFICATION_PROVIDER_SEND_FAILED]: {
1984
- code: ERROR_CODES.NOTIFICATION_PROVIDER_SEND_FAILED,
1985
- status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
1986
- category: ERROR_CATEGORY.Provider,
3319
+ [ERROR_CODES.CLOUDFRONT_INVALID_PATH]: {
3320
+ code: ERROR_CODES.CLOUDFRONT_INVALID_PATH,
3321
+ status: HTTP_STATUS.BAD_REQUEST,
3322
+ category: ERROR_CATEGORY.Validation,
3323
+ severity: ERROR_SEVERITY.Low,
3324
+ retryable: false,
3325
+ userMessage: "errors.cloudfront.invalid.path"
3326
+ },
3327
+ [ERROR_CODES.CLOUDFRONT_API_ERROR]: {
3328
+ code: ERROR_CODES.CLOUDFRONT_API_ERROR,
3329
+ status: HTTP_STATUS.BAD_GATEWAY,
3330
+ category: ERROR_CATEGORY.ExternalService,
1987
3331
  severity: ERROR_SEVERITY.High,
1988
3332
  retryable: true,
1989
- userMessage: "errors.notification.provider.send_failed"
3333
+ userMessage: "errors.cloudfront.api.error"
1990
3334
  },
1991
- [ERROR_CODES.NOTIFICATION_PROVIDER_CONFIGURATION_INVALID]: {
1992
- code: ERROR_CODES.NOTIFICATION_PROVIDER_CONFIGURATION_INVALID,
1993
- status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
1994
- category: ERROR_CATEGORY.Configuration,
1995
- severity: ERROR_SEVERITY.Critical,
3335
+ // Fastly
3336
+ [ERROR_CODES.FASTLY_AUTHENTICATION_FAILED]: {
3337
+ code: ERROR_CODES.FASTLY_AUTHENTICATION_FAILED,
3338
+ status: HTTP_STATUS.UNAUTHORIZED,
3339
+ category: ERROR_CATEGORY.Authentication,
3340
+ severity: ERROR_SEVERITY.High,
1996
3341
  retryable: false,
1997
- userMessage: "errors.notification.provider.configuration_invalid"
3342
+ userMessage: "errors.fastly.authentication.failed"
1998
3343
  },
1999
- [ERROR_CODES.NOTIFICATION_PROVIDER_RATE_LIMIT]: {
2000
- code: ERROR_CODES.NOTIFICATION_PROVIDER_RATE_LIMIT,
3344
+ [ERROR_CODES.FASTLY_SERVICE_NOT_FOUND]: {
3345
+ code: ERROR_CODES.FASTLY_SERVICE_NOT_FOUND,
3346
+ status: HTTP_STATUS.NOT_FOUND,
3347
+ category: ERROR_CATEGORY.NotFound,
3348
+ severity: ERROR_SEVERITY.High,
3349
+ retryable: false,
3350
+ userMessage: "errors.fastly.service.not.found"
3351
+ },
3352
+ [ERROR_CODES.FASTLY_PURGE_FAILED]: {
3353
+ code: ERROR_CODES.FASTLY_PURGE_FAILED,
3354
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3355
+ category: ERROR_CATEGORY.Plugin,
3356
+ severity: ERROR_SEVERITY.Medium,
3357
+ retryable: true,
3358
+ userMessage: "errors.fastly.purge.failed"
3359
+ },
3360
+ [ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED]: {
3361
+ code: ERROR_CODES.FASTLY_RATE_LIMIT_EXCEEDED,
2001
3362
  status: HTTP_STATUS.TOO_MANY_REQUESTS,
2002
3363
  category: ERROR_CATEGORY.RateLimit,
2003
3364
  severity: ERROR_SEVERITY.Medium,
2004
3365
  retryable: true,
2005
- userMessage: "errors.notification.provider.rate_limit"
3366
+ userMessage: "errors.fastly.rate.limit.exceeded"
2006
3367
  },
2007
- [ERROR_CODES.NOTIFICATION_PROVIDER_AUTH_FAILED]: {
2008
- code: ERROR_CODES.NOTIFICATION_PROVIDER_AUTH_FAILED,
2009
- status: HTTP_STATUS.UNAUTHORIZED,
2010
- category: ERROR_CATEGORY.Provider,
2011
- severity: ERROR_SEVERITY.Critical,
3368
+ [ERROR_CODES.FASTLY_INVALID_URL]: {
3369
+ code: ERROR_CODES.FASTLY_INVALID_URL,
3370
+ status: HTTP_STATUS.BAD_REQUEST,
3371
+ category: ERROR_CATEGORY.Validation,
3372
+ severity: ERROR_SEVERITY.Low,
2012
3373
  retryable: false,
2013
- userMessage: "errors.notification.provider.auth_failed"
3374
+ userMessage: "errors.fastly.invalid.url"
2014
3375
  },
2015
- [ERROR_CODES.NOTIFICATION_PROVIDER_TIMEOUT]: {
2016
- code: ERROR_CODES.NOTIFICATION_PROVIDER_TIMEOUT,
2017
- status: HTTP_STATUS.GATEWAY_TIMEOUT,
2018
- category: ERROR_CATEGORY.Network,
3376
+ [ERROR_CODES.FASTLY_API_ERROR]: {
3377
+ code: ERROR_CODES.FASTLY_API_ERROR,
3378
+ status: HTTP_STATUS.BAD_GATEWAY,
3379
+ category: ERROR_CATEGORY.ExternalService,
3380
+ severity: ERROR_SEVERITY.High,
3381
+ retryable: true,
3382
+ userMessage: "errors.fastly.api.error"
3383
+ },
3384
+ // Generic CDN
3385
+ [ERROR_CODES.CDN_INVALIDATION_FAILED]: {
3386
+ code: ERROR_CODES.CDN_INVALIDATION_FAILED,
3387
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3388
+ category: ERROR_CATEGORY.Plugin,
2019
3389
  severity: ERROR_SEVERITY.Medium,
2020
3390
  retryable: true,
2021
- userMessage: "errors.notification.provider.timeout"
3391
+ userMessage: "errors.cdn.invalidation.failed"
2022
3392
  },
2023
- [ERROR_CODES.NOTIFICATION_PROVIDER_UNAVAILABLE]: {
2024
- code: ERROR_CODES.NOTIFICATION_PROVIDER_UNAVAILABLE,
2025
- status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2026
- category: ERROR_CATEGORY.Provider,
3393
+ [ERROR_CODES.CDN_CONFIGURATION_INVALID]: {
3394
+ code: ERROR_CODES.CDN_CONFIGURATION_INVALID,
3395
+ status: HTTP_STATUS.BAD_REQUEST,
3396
+ category: ERROR_CATEGORY.Configuration,
2027
3397
  severity: ERROR_SEVERITY.High,
2028
- retryable: true,
2029
- userMessage: "errors.notification.provider.unavailable"
3398
+ retryable: false,
3399
+ userMessage: "errors.cdn.configuration.invalid"
2030
3400
  },
2031
- [ERROR_CODES.NOTIFICATION_PROVIDER_FEATURE_NOT_SUPPORTED]: {
2032
- code: ERROR_CODES.NOTIFICATION_PROVIDER_FEATURE_NOT_SUPPORTED,
2033
- status: HTTP_STATUS.NOT_IMPLEMENTED,
2034
- category: ERROR_CATEGORY.Provider,
2035
- severity: ERROR_SEVERITY.Low,
3401
+ [ERROR_CODES.CDN_PROVIDER_NOT_FOUND]: {
3402
+ code: ERROR_CODES.CDN_PROVIDER_NOT_FOUND,
3403
+ status: HTTP_STATUS.NOT_FOUND,
3404
+ category: ERROR_CATEGORY.NotFound,
3405
+ severity: ERROR_SEVERITY.High,
2036
3406
  retryable: false,
2037
- userMessage: "errors.notification.provider.feature_not_supported"
3407
+ userMessage: "errors.cdn.provider.not.found"
2038
3408
  },
2039
- [ERROR_CODES.NOTIFICATION_ALL_PROVIDERS_FAILED]: {
2040
- code: ERROR_CODES.NOTIFICATION_ALL_PROVIDERS_FAILED,
2041
- status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2042
- category: ERROR_CATEGORY.Provider,
3409
+ // Webhook Errors
3410
+ [ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID]: {
3411
+ code: ERROR_CODES.STORAGE_WEBHOOK_SIGNATURE_INVALID,
3412
+ status: HTTP_STATUS.UNAUTHORIZED,
3413
+ category: ERROR_CATEGORY.Security,
2043
3414
  severity: ERROR_SEVERITY.Critical,
2044
3415
  retryable: false,
2045
- userMessage: "errors.notification.all_providers_failed"
3416
+ userMessage: "errors.storage.webhook.signature_invalid"
2046
3417
  },
2047
- // Validation errors (non-retryable)
2048
- [ERROR_CODES.NOTIFICATION_INVALID_INPUT]: {
2049
- code: ERROR_CODES.NOTIFICATION_INVALID_INPUT,
3418
+ [ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID]: {
3419
+ code: ERROR_CODES.STORAGE_WEBHOOK_PAYLOAD_INVALID,
2050
3420
  status: HTTP_STATUS.BAD_REQUEST,
2051
3421
  category: ERROR_CATEGORY.Validation,
2052
3422
  severity: ERROR_SEVERITY.Medium,
2053
3423
  retryable: false,
2054
- userMessage: "errors.notification.validation.invalid_input"
3424
+ userMessage: "errors.storage.webhook.payload_invalid"
2055
3425
  },
2056
- [ERROR_CODES.NOTIFICATION_INVALID_RECIPIENT]: {
2057
- code: ERROR_CODES.NOTIFICATION_INVALID_RECIPIENT,
2058
- status: HTTP_STATUS.BAD_REQUEST,
2059
- category: ERROR_CATEGORY.Validation,
3426
+ [ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED]: {
3427
+ code: ERROR_CODES.STORAGE_WEBHOOK_PROCESSING_FAILED,
3428
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3429
+ category: ERROR_CATEGORY.Processing,
3430
+ severity: ERROR_SEVERITY.High,
3431
+ retryable: true,
3432
+ userMessage: "errors.storage.webhook.processing_failed"
3433
+ },
3434
+ [ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT]: {
3435
+ code: ERROR_CODES.STORAGE_WEBHOOK_TIMEOUT,
3436
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3437
+ category: ERROR_CATEGORY.Timeout,
2060
3438
  severity: ERROR_SEVERITY.Medium,
2061
- retryable: false,
2062
- userMessage: "errors.notification.validation.invalid_recipient"
3439
+ retryable: true,
3440
+ userMessage: "errors.storage.webhook.timeout"
2063
3441
  },
2064
- [ERROR_CODES.NOTIFICATION_INVALID_TEMPLATE]: {
2065
- code: ERROR_CODES.NOTIFICATION_INVALID_TEMPLATE,
2066
- status: HTTP_STATUS.BAD_REQUEST,
2067
- category: ERROR_CATEGORY.Template,
3442
+ [ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND]: {
3443
+ code: ERROR_CODES.STORAGE_WEBHOOK_ADAPTER_NOT_FOUND,
3444
+ status: HTTP_STATUS.NOT_FOUND,
3445
+ category: ERROR_CATEGORY.NotFound,
2068
3446
  severity: ERROR_SEVERITY.Medium,
2069
3447
  retryable: false,
2070
- userMessage: "errors.notification.validation.invalid_template"
3448
+ userMessage: "errors.storage.webhook.adapter_not_found"
2071
3449
  },
2072
- [ERROR_CODES.NOTIFICATION_INVALID_PAYLOAD]: {
2073
- code: ERROR_CODES.NOTIFICATION_INVALID_PAYLOAD,
2074
- status: HTTP_STATUS.BAD_REQUEST,
2075
- category: ERROR_CATEGORY.Validation,
2076
- severity: ERROR_SEVERITY.Medium,
3450
+ [ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED]: {
3451
+ code: ERROR_CODES.STORAGE_WEBHOOK_DUPLICATE_DETECTED,
3452
+ status: HTTP_STATUS.OK,
3453
+ category: ERROR_CATEGORY.Processing,
3454
+ severity: ERROR_SEVERITY.Low,
2077
3455
  retryable: false,
2078
- userMessage: "errors.notification.validation.invalid_payload"
3456
+ userMessage: "errors.storage.webhook.duplicate_detected"
2079
3457
  },
2080
- [ERROR_CODES.NOTIFICATION_MISSING_REQUIRED_FIELD]: {
2081
- code: ERROR_CODES.NOTIFICATION_MISSING_REQUIRED_FIELD,
2082
- status: HTTP_STATUS.BAD_REQUEST,
2083
- category: ERROR_CATEGORY.Validation,
3458
+ [ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR]: {
3459
+ code: ERROR_CODES.STORAGE_WEBHOOK_IDEMPOTENCY_ERROR,
3460
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3461
+ category: ERROR_CATEGORY.Processing,
2084
3462
  severity: ERROR_SEVERITY.Medium,
2085
- retryable: false,
2086
- userMessage: "errors.notification.validation.required_field_missing"
3463
+ retryable: true,
3464
+ userMessage: "errors.storage.webhook.idempotency_error"
2087
3465
  },
2088
- [ERROR_CODES.NOTIFICATION_VALIDATION_FAILED]: {
2089
- code: ERROR_CODES.NOTIFICATION_VALIDATION_FAILED,
2090
- status: HTTP_STATUS.BAD_REQUEST,
2091
- category: ERROR_CATEGORY.Validation,
3466
+ [ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED]: {
3467
+ code: ERROR_CODES.STORAGE_WEBHOOK_RATE_LIMIT_EXCEEDED,
3468
+ status: HTTP_STATUS.TOO_MANY_REQUESTS,
3469
+ category: ERROR_CATEGORY.RateLimit,
2092
3470
  severity: ERROR_SEVERITY.Medium,
3471
+ retryable: true,
3472
+ userMessage: "errors.storage.webhook.rate_limit_exceeded"
3473
+ },
3474
+ // Presigned URLs
3475
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED]: {
3476
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_GENERATION_FAILED,
3477
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3478
+ category: ERROR_CATEGORY.ExternalService,
3479
+ severity: ERROR_SEVERITY.High,
3480
+ retryable: true,
3481
+ userMessage: "errors.storage.presigned_url.generation_failed"
3482
+ },
3483
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED]: {
3484
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_EXPIRED,
3485
+ status: HTTP_STATUS.GONE,
3486
+ category: ERROR_CATEGORY.Validation,
3487
+ severity: ERROR_SEVERITY.Low,
2093
3488
  retryable: false,
2094
- userMessage: "errors.notification.validation.failed"
3489
+ userMessage: "errors.storage.presigned_url.expired"
2095
3490
  },
2096
- // User Preferences
2097
- [ERROR_CODES.NOTIFICATION_USER_OPTED_OUT]: {
2098
- code: ERROR_CODES.NOTIFICATION_USER_OPTED_OUT,
2099
- status: HTTP_STATUS.OK,
3491
+ [ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID]: {
3492
+ code: ERROR_CODES.STORAGE_PRESIGNED_URL_INVALID,
3493
+ status: HTTP_STATUS.BAD_REQUEST,
2100
3494
  category: ERROR_CATEGORY.Validation,
2101
3495
  severity: ERROR_SEVERITY.Low,
2102
3496
  retryable: false,
2103
- userMessage: "errors.notification.user.opted_out"
3497
+ userMessage: "errors.storage.presigned_url.invalid"
2104
3498
  },
2105
- // Queue errors (retryable)
2106
- [ERROR_CODES.NOTIFICATION_QUEUE_FULL]: {
2107
- code: ERROR_CODES.NOTIFICATION_QUEUE_FULL,
2108
- status: HTTP_STATUS.SERVICE_UNAVAILABLE,
2109
- category: ERROR_CATEGORY.Queue,
3499
+ // Chunked Upload
3500
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED]: {
3501
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_INIT_FAILED,
3502
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3503
+ category: ERROR_CATEGORY.FileOperation,
2110
3504
  severity: ERROR_SEVERITY.High,
2111
3505
  retryable: true,
2112
- userMessage: "errors.notification.queue.full"
3506
+ userMessage: "errors.storage.chunked_upload.init_failed"
2113
3507
  },
2114
- [ERROR_CODES.NOTIFICATION_QUEUE_PROCESSING_FAILED]: {
2115
- code: ERROR_CODES.NOTIFICATION_QUEUE_PROCESSING_FAILED,
3508
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED]: {
3509
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_PART_FAILED,
2116
3510
  status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2117
- category: ERROR_CATEGORY.Queue,
3511
+ category: ERROR_CATEGORY.FileOperation,
2118
3512
  severity: ERROR_SEVERITY.High,
2119
3513
  retryable: true,
2120
- userMessage: "errors.notification.queue.processing_failed"
3514
+ userMessage: "errors.storage.chunked_upload.part_failed"
2121
3515
  },
2122
- // Webhook errors
2123
- [ERROR_CODES.NOTIFICATION_WEBHOOK_SIGNATURE_INVALID]: {
2124
- code: ERROR_CODES.NOTIFICATION_WEBHOOK_SIGNATURE_INVALID,
2125
- status: HTTP_STATUS.UNAUTHORIZED,
2126
- category: ERROR_CATEGORY.Webhook,
3516
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED]: {
3517
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_COMPLETE_FAILED,
3518
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3519
+ category: ERROR_CATEGORY.FileOperation,
2127
3520
  severity: ERROR_SEVERITY.High,
3521
+ retryable: true,
3522
+ userMessage: "errors.storage.chunked_upload.complete_failed"
3523
+ },
3524
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED]: {
3525
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_ABORT_FAILED,
3526
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3527
+ category: ERROR_CATEGORY.FileOperation,
3528
+ severity: ERROR_SEVERITY.Medium,
3529
+ retryable: true,
3530
+ userMessage: "errors.storage.chunked_upload.abort_failed"
3531
+ },
3532
+ [ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND]: {
3533
+ code: ERROR_CODES.STORAGE_CHUNKED_UPLOAD_NOT_FOUND,
3534
+ status: HTTP_STATUS.NOT_FOUND,
3535
+ category: ERROR_CATEGORY.NotFound,
3536
+ severity: ERROR_SEVERITY.Low,
2128
3537
  retryable: false,
2129
- userMessage: "errors.notification.webhook.signature_invalid"
3538
+ userMessage: "errors.storage.chunked_upload.not_found"
2130
3539
  },
2131
- [ERROR_CODES.NOTIFICATION_WEBHOOK_VALIDATION_FAILED]: {
2132
- code: ERROR_CODES.NOTIFICATION_WEBHOOK_VALIDATION_FAILED,
2133
- status: HTTP_STATUS.BAD_REQUEST,
2134
- category: ERROR_CATEGORY.Webhook,
3540
+ // CORS
3541
+ [ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID]: {
3542
+ code: ERROR_CODES.STORAGE_CORS_CONFIGURATION_INVALID,
3543
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3544
+ category: ERROR_CATEGORY.Configuration,
3545
+ severity: ERROR_SEVERITY.High,
3546
+ retryable: false,
3547
+ userMessage: "errors.storage.cors.configuration_invalid"
3548
+ },
3549
+ [ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED]: {
3550
+ code: ERROR_CODES.STORAGE_CORS_ORIGIN_NOT_ALLOWED,
3551
+ status: HTTP_STATUS.FORBIDDEN,
3552
+ category: ERROR_CATEGORY.Authorization,
2135
3553
  severity: ERROR_SEVERITY.Medium,
2136
3554
  retryable: false,
2137
- userMessage: "errors.notification.webhook.validation_failed"
3555
+ userMessage: "errors.storage.cors.origin_not_allowed"
2138
3556
  },
2139
- [ERROR_CODES.NOTIFICATION_WEBHOOK_PROCESSING_FAILED]: {
2140
- code: ERROR_CODES.NOTIFICATION_WEBHOOK_PROCESSING_FAILED,
3557
+ // TTL
3558
+ [ERROR_CODES.STORAGE_TTL_EXPIRED]: {
3559
+ code: ERROR_CODES.STORAGE_TTL_EXPIRED,
3560
+ status: HTTP_STATUS.GONE,
3561
+ category: ERROR_CATEGORY.Validation,
3562
+ severity: ERROR_SEVERITY.Low,
3563
+ retryable: false,
3564
+ userMessage: "errors.storage.ttl.expired"
3565
+ },
3566
+ [ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED]: {
3567
+ code: ERROR_CODES.STORAGE_TTL_CLEANUP_FAILED,
2141
3568
  status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2142
- category: ERROR_CATEGORY.Webhook,
3569
+ category: ERROR_CATEGORY.Processing,
3570
+ severity: ERROR_SEVERITY.Low,
3571
+ retryable: true,
3572
+ userMessage: "errors.storage.ttl.cleanup_failed"
3573
+ },
3574
+ // Audit
3575
+ [ERROR_CODES.STORAGE_AUDIT_LOG_FAILED]: {
3576
+ code: ERROR_CODES.STORAGE_AUDIT_LOG_FAILED,
3577
+ status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
3578
+ category: ERROR_CATEGORY.System,
3579
+ severity: ERROR_SEVERITY.Low,
3580
+ retryable: false,
3581
+ userMessage: "errors.storage.audit.log_failed"
3582
+ },
3583
+ // Timeout & Network
3584
+ [ERROR_CODES.STORAGE_TIMEOUT]: {
3585
+ code: ERROR_CODES.STORAGE_TIMEOUT,
3586
+ status: HTTP_STATUS.GATEWAY_TIMEOUT,
3587
+ category: ERROR_CATEGORY.Timeout,
3588
+ severity: ERROR_SEVERITY.Medium,
3589
+ retryable: true,
3590
+ userMessage: "errors.storage.timeout"
3591
+ },
3592
+ [ERROR_CODES.STORAGE_NETWORK_ERROR]: {
3593
+ code: ERROR_CODES.STORAGE_NETWORK_ERROR,
3594
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3595
+ category: ERROR_CATEGORY.Network,
2143
3596
  severity: ERROR_SEVERITY.High,
2144
3597
  retryable: true,
2145
- userMessage: "errors.notification.webhook.processing_failed"
3598
+ userMessage: "errors.storage.network_error"
2146
3599
  },
2147
- // Template errors
2148
- [ERROR_CODES.NOTIFICATION_TEMPLATE_NOT_FOUND]: {
2149
- code: ERROR_CODES.NOTIFICATION_TEMPLATE_NOT_FOUND,
2150
- status: HTTP_STATUS.NOT_FOUND,
2151
- category: ERROR_CATEGORY.Template,
3600
+ [ERROR_CODES.STORAGE_CONNECTION_LOST]: {
3601
+ code: ERROR_CODES.STORAGE_CONNECTION_LOST,
3602
+ status: HTTP_STATUS.SERVICE_UNAVAILABLE,
3603
+ category: ERROR_CATEGORY.Network,
2152
3604
  severity: ERROR_SEVERITY.High,
3605
+ retryable: true,
3606
+ userMessage: "errors.storage.connection_lost"
3607
+ },
3608
+ // Permission & Quota
3609
+ [ERROR_CODES.STORAGE_PERMISSION_DENIED]: {
3610
+ code: ERROR_CODES.STORAGE_PERMISSION_DENIED,
3611
+ status: HTTP_STATUS.FORBIDDEN,
3612
+ category: ERROR_CATEGORY.Authorization,
3613
+ severity: ERROR_SEVERITY.Medium,
2153
3614
  retryable: false,
2154
- userMessage: "errors.notification.template.not_found"
3615
+ userMessage: "errors.storage.permission_denied"
2155
3616
  },
2156
- [ERROR_CODES.NOTIFICATION_TEMPLATE_RENDER_FAILED]: {
2157
- code: ERROR_CODES.NOTIFICATION_TEMPLATE_RENDER_FAILED,
2158
- status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2159
- category: ERROR_CATEGORY.Template,
3617
+ [ERROR_CODES.STORAGE_QUOTA_EXCEEDED]: {
3618
+ code: ERROR_CODES.STORAGE_QUOTA_EXCEEDED,
3619
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
3620
+ category: ERROR_CATEGORY.Quota,
2160
3621
  severity: ERROR_SEVERITY.High,
2161
3622
  retryable: false,
2162
- userMessage: "errors.notification.template.render_failed"
3623
+ userMessage: "errors.storage.quota_exceeded"
2163
3624
  },
2164
- // General notification errors
2165
- [ERROR_CODES.NOTIFICATION_UNKNOWN_ERROR]: {
2166
- code: ERROR_CODES.NOTIFICATION_UNKNOWN_ERROR,
2167
- status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2168
- category: ERROR_CATEGORY.Unknown,
2169
- severity: ERROR_SEVERITY.Medium,
3625
+ [ERROR_CODES.STORAGE_INSUFFICIENT_SPACE]: {
3626
+ code: ERROR_CODES.STORAGE_INSUFFICIENT_SPACE,
3627
+ status: HTTP_STATUS.INSUFFICIENT_STORAGE,
3628
+ category: ERROR_CATEGORY.Quota,
3629
+ severity: ERROR_SEVERITY.High,
2170
3630
  retryable: false,
2171
- userMessage: "errors.notification.unknown"
3631
+ userMessage: "errors.storage.insufficient_space"
2172
3632
  },
2173
- [ERROR_CODES.NOTIFICATION_INITIALIZATION_FAILED]: {
2174
- code: ERROR_CODES.NOTIFICATION_INITIALIZATION_FAILED,
2175
- status: HTTP_STATUS.INTERNAL_SERVER_ERROR,
2176
- category: ERROR_CATEGORY.Configuration,
2177
- severity: ERROR_SEVERITY.Critical,
3633
+ [ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED]: {
3634
+ code: ERROR_CODES.STORAGE_FEATURE_NOT_IMPLEMENTED,
3635
+ status: HTTP_STATUS.NOT_IMPLEMENTED,
3636
+ category: ERROR_CATEGORY.Server,
3637
+ severity: ERROR_SEVERITY.Medium,
2178
3638
  retryable: false,
2179
- userMessage: "errors.notification.initialization_failed"
3639
+ userMessage: "errors.storage.feature.not_implemented"
2180
3640
  },
2181
3641
  // ===== Errors Package Errors =====
2182
3642
  [ERROR_CODES.ERROR_SYSTEM_NOT_INITIALIZED]: {
@@ -4022,6 +5482,17 @@ var LOGGER_SERVICES = {
4022
5482
  WEBHOOK_SERVICE: "WebhookService",
4023
5483
  TEMPLATE_ENGINE: "TemplateEngine",
4024
5484
  ATTACHMENT_RESOLVER: "AttachmentResolver",
5485
+ // Storage Package Services
5486
+ STORAGE_SERVICE: "StorageService",
5487
+ STORAGE_ADAPTER: "StorageAdapter",
5488
+ CLOUDFLARE_R2_ADAPTER: "CloudflareR2Adapter",
5489
+ SUPABASE_STORAGE_ADAPTER: "SupabaseStorageAdapter",
5490
+ ADAPTER_REGISTRY: "AdapterRegistry",
5491
+ MEDIA_PROCESSOR: "MediaProcessor",
5492
+ METADATA_EXTRACTOR: "MetadataExtractor",
5493
+ VIRUS_SCANNER: "VirusScanner",
5494
+ TEMPLATE_RENDERER: "TemplateRenderer",
5495
+ COMPLIANCE_MANAGER: "ComplianceManager",
4025
5496
  // Config Package Services
4026
5497
  CONFIG_MANAGER: "ConfigManager",
4027
5498
  CONFIG_VALIDATOR: "ConfigValidator"
@@ -5352,7 +6823,631 @@ var ALERT_RULE_ID = {
5352
6823
  REPLICA_LAG: "replica-lag"
5353
6824
  };
5354
6825
 
6826
+ // src/storage/enums.ts
6827
+ var FILE_CATEGORY = /* @__PURE__ */ ((FILE_CATEGORY2) => {
6828
+ FILE_CATEGORY2["ProfileImage"] = "profile_image";
6829
+ FILE_CATEGORY2["ProfileBanner"] = "profile_banner";
6830
+ FILE_CATEGORY2["ProfileData"] = "profile_data";
6831
+ FILE_CATEGORY2["IdDocument"] = "id_document";
6832
+ FILE_CATEGORY2["PostImage"] = "post_image";
6833
+ FILE_CATEGORY2["PostVideo"] = "post_video";
6834
+ FILE_CATEGORY2["PostAudio"] = "post_audio";
6835
+ FILE_CATEGORY2["PostDocument"] = "post_document";
6836
+ FILE_CATEGORY2["PostArchive"] = "post_archive";
6837
+ FILE_CATEGORY2["GalleryImage"] = "gallery_image";
6838
+ FILE_CATEGORY2["GalleryVideo"] = "gallery_video";
6839
+ FILE_CATEGORY2["HighlightVideo"] = "highlight_video";
6840
+ FILE_CATEGORY2["TrainingVideo"] = "training_video";
6841
+ FILE_CATEGORY2["ProductImage"] = "product_image";
6842
+ FILE_CATEGORY2["ProductVideo"] = "product_video";
6843
+ FILE_CATEGORY2["MerchandiseImage"] = "merchandise_image";
6844
+ FILE_CATEGORY2["DOCUMENT"] = "document";
6845
+ FILE_CATEGORY2["ContractDocument"] = "contract_document";
6846
+ FILE_CATEGORY2["InvoiceDocument"] = "invoice_document";
6847
+ FILE_CATEGORY2["ReceiptDocument"] = "receipt_document";
6848
+ FILE_CATEGORY2["TaxDocument"] = "tax_document";
6849
+ FILE_CATEGORY2["LegalDocument"] = "legal_document";
6850
+ FILE_CATEGORY2["FinancialDocument"] = "financial_document";
6851
+ FILE_CATEGORY2["NftImage"] = "nft_image";
6852
+ FILE_CATEGORY2["NftMetadata"] = "nft_metadata";
6853
+ FILE_CATEGORY2["BrandLogo"] = "brand_logo";
6854
+ FILE_CATEGORY2["BrandAsset"] = "brand_asset";
6855
+ FILE_CATEGORY2["MarketingAsset"] = "marketing_asset";
6856
+ FILE_CATEGORY2["AVATAR"] = "avatar";
6857
+ FILE_CATEGORY2["ATTACHMENT"] = "attachment";
6858
+ FILE_CATEGORY2["TempFile"] = "temp_file";
6859
+ FILE_CATEGORY2["OTHER"] = "other";
6860
+ return FILE_CATEGORY2;
6861
+ })(FILE_CATEGORY || {});
6862
+ var ENTITY_TYPE = /* @__PURE__ */ ((ENTITY_TYPE2) => {
6863
+ ENTITY_TYPE2["USER"] = "user";
6864
+ ENTITY_TYPE2["FAN"] = "fan";
6865
+ ENTITY_TYPE2["ATHLETE"] = "athlete";
6866
+ ENTITY_TYPE2["CLUB"] = "club";
6867
+ ENTITY_TYPE2["BRAND"] = "brand";
6868
+ ENTITY_TYPE2["ORGANIZATION"] = "organization";
6869
+ ENTITY_TYPE2["EVENT"] = "event";
6870
+ ENTITY_TYPE2["POST"] = "post";
6871
+ ENTITY_TYPE2["PRODUCT"] = "product";
6872
+ ENTITY_TYPE2["NFT"] = "nft";
6873
+ ENTITY_TYPE2["SYSTEM"] = "system";
6874
+ return ENTITY_TYPE2;
6875
+ })(ENTITY_TYPE || {});
6876
+ var STORAGE_ADAPTER_TYPE = /* @__PURE__ */ ((STORAGE_ADAPTER_TYPE2) => {
6877
+ STORAGE_ADAPTER_TYPE2["CloudflareR2"] = "cloudflare_r2";
6878
+ STORAGE_ADAPTER_TYPE2["SupabaseStorage"] = "supabase_storage";
6879
+ STORAGE_ADAPTER_TYPE2["CUSTOM"] = "custom";
6880
+ STORAGE_ADAPTER_TYPE2["MOCK"] = "mock";
6881
+ return STORAGE_ADAPTER_TYPE2;
6882
+ })(STORAGE_ADAPTER_TYPE || {});
6883
+ var FILE_ACCESS_LEVEL = /* @__PURE__ */ ((FILE_ACCESS_LEVEL2) => {
6884
+ FILE_ACCESS_LEVEL2["PUBLIC"] = "public";
6885
+ FILE_ACCESS_LEVEL2["PRIVATE"] = "private";
6886
+ FILE_ACCESS_LEVEL2["SHARED"] = "shared";
6887
+ FILE_ACCESS_LEVEL2["RESTRICTED"] = "restricted";
6888
+ return FILE_ACCESS_LEVEL2;
6889
+ })(FILE_ACCESS_LEVEL || {});
6890
+ var UPLOAD_STATUS = /* @__PURE__ */ ((UPLOAD_STATUS2) => {
6891
+ UPLOAD_STATUS2["PENDING"] = "pending";
6892
+ UPLOAD_STATUS2["UPLOADING"] = "uploading";
6893
+ UPLOAD_STATUS2["PROCESSING"] = "processing";
6894
+ UPLOAD_STATUS2["COMPLETED"] = "completed";
6895
+ UPLOAD_STATUS2["FAILED"] = "failed";
6896
+ UPLOAD_STATUS2["CANCELLED"] = "cancelled";
6897
+ return UPLOAD_STATUS2;
6898
+ })(UPLOAD_STATUS || {});
6899
+ var STORAGE_EVENT_TYPE = /* @__PURE__ */ ((STORAGE_EVENT_TYPE2) => {
6900
+ STORAGE_EVENT_TYPE2["FileUploaded"] = "file_uploaded";
6901
+ STORAGE_EVENT_TYPE2["FileUploadFailed"] = "file_upload_failed";
6902
+ STORAGE_EVENT_TYPE2["UploadProgress"] = "upload_progress";
6903
+ STORAGE_EVENT_TYPE2["UploadAborted"] = "upload_aborted";
6904
+ STORAGE_EVENT_TYPE2["FileDeleted"] = "file_deleted";
6905
+ STORAGE_EVENT_TYPE2["FileDeleteFailed"] = "file_delete_failed";
6906
+ STORAGE_EVENT_TYPE2["FileAccessed"] = "file_accessed";
6907
+ STORAGE_EVENT_TYPE2["SignedUrlGenerated"] = "signed_url_generated";
6908
+ STORAGE_EVENT_TYPE2["MetadataExtracted"] = "metadata_extracted";
6909
+ STORAGE_EVENT_TYPE2["MediaProcessingStarted"] = "media_processing_started";
6910
+ STORAGE_EVENT_TYPE2["MediaProcessingCompleted"] = "media_processing_completed";
6911
+ STORAGE_EVENT_TYPE2["MediaProcessingFailed"] = "media_processing_failed";
6912
+ STORAGE_EVENT_TYPE2["TranscodeComplete"] = "transcode_complete";
6913
+ STORAGE_EVENT_TYPE2["TranscodeFailed"] = "transcode_failed";
6914
+ STORAGE_EVENT_TYPE2["TranscodeProgress"] = "transcode_progress";
6915
+ STORAGE_EVENT_TYPE2["ThumbnailGenerated"] = "thumbnail_generated";
6916
+ STORAGE_EVENT_TYPE2["ImageOptimized"] = "image_optimized";
6917
+ STORAGE_EVENT_TYPE2["VirusDetected"] = "virus_detected";
6918
+ STORAGE_EVENT_TYPE2["VirusScanCompleted"] = "virus_scan_completed";
6919
+ STORAGE_EVENT_TYPE2["AdapterHealthCheck"] = "adapter_health_check";
6920
+ STORAGE_EVENT_TYPE2["AdapterFailed"] = "adapter_failed";
6921
+ STORAGE_EVENT_TYPE2["RetentionPolicyApplied"] = "retention_policy_applied";
6922
+ STORAGE_EVENT_TYPE2["RetentionEnforced"] = "retention_enforced";
6923
+ STORAGE_EVENT_TYPE2["FileMarkedForDeletion"] = "file_marked_for_deletion";
6924
+ STORAGE_EVENT_TYPE2["ImmutabilityEnforced"] = "immutability_enforced";
6925
+ STORAGE_EVENT_TYPE2["SoftDeleteProcessed"] = "soft_delete_processed";
6926
+ STORAGE_EVENT_TYPE2["FileRestored"] = "file_restored";
6927
+ STORAGE_EVENT_TYPE2["FileArchived"] = "file_archived";
6928
+ STORAGE_EVENT_TYPE2["RetentionExpired"] = "retention_expired";
6929
+ STORAGE_EVENT_TYPE2["JurisdictionConflictResolved"] = "jurisdiction_conflict_resolved";
6930
+ STORAGE_EVENT_TYPE2["FileGenerated"] = "file_generated";
6931
+ STORAGE_EVENT_TYPE2["FileGenerationFailed"] = "file_generation_failed";
6932
+ STORAGE_EVENT_TYPE2["FileUpdated"] = "file_updated";
6933
+ STORAGE_EVENT_TYPE2["FileUpdateFailed"] = "file_update_failed";
6934
+ STORAGE_EVENT_TYPE2["FileReplaced"] = "file_replaced";
6935
+ STORAGE_EVENT_TYPE2["FileReplaceFailed"] = "file_replace_failed";
6936
+ STORAGE_EVENT_TYPE2["FileMoved"] = "file_moved";
6937
+ STORAGE_EVENT_TYPE2["FileMoveFailed"] = "file_move_failed";
6938
+ STORAGE_EVENT_TYPE2["FileCopied"] = "file_copied";
6939
+ STORAGE_EVENT_TYPE2["FileCopyFailed"] = "file_copy_failed";
6940
+ STORAGE_EVENT_TYPE2["AuditLogCreated"] = "audit_log_created";
6941
+ STORAGE_EVENT_TYPE2["QueueStarted"] = "storage.queue.started";
6942
+ STORAGE_EVENT_TYPE2["QueueStopped"] = "storage.queue.stopped";
6943
+ STORAGE_EVENT_TYPE2["OperationProcessing"] = "storage.operation.processing";
6944
+ STORAGE_EVENT_TYPE2["OperationCompleted"] = "storage.operation.completed";
6945
+ STORAGE_EVENT_TYPE2["OperationRetry"] = "storage.operation.retry";
6946
+ STORAGE_EVENT_TYPE2["OperationFailed"] = "storage.operation.failed";
6947
+ STORAGE_EVENT_TYPE2["StorageError"] = "storage_error";
6948
+ STORAGE_EVENT_TYPE2["CdnInvalidated"] = "cdn_invalidated";
6949
+ STORAGE_EVENT_TYPE2["CdnInvalidationFailed"] = "cdn_invalidation_failed";
6950
+ STORAGE_EVENT_TYPE2["IntegrityCheckFailed"] = "integrity_check_failed";
6951
+ STORAGE_EVENT_TYPE2["CorruptionDetected"] = "corruption_detected";
6952
+ STORAGE_EVENT_TYPE2["QuotaWarning"] = "quota_warning";
6953
+ STORAGE_EVENT_TYPE2["QuotaExceeded"] = "quota_exceeded";
6954
+ STORAGE_EVENT_TYPE2["WebhookReceived"] = "webhook_received";
6955
+ STORAGE_EVENT_TYPE2["WebhookProcessed"] = "webhook_processed";
6956
+ STORAGE_EVENT_TYPE2["WebhookFailed"] = "webhook_failed";
6957
+ STORAGE_EVENT_TYPE2["WebhookRetryExhausted"] = "webhook_retry_exhausted";
6958
+ return STORAGE_EVENT_TYPE2;
6959
+ })(STORAGE_EVENT_TYPE || {});
6960
+ var RETRY_STRATEGY = /* @__PURE__ */ ((RETRY_STRATEGY2) => {
6961
+ RETRY_STRATEGY2["ExponentialBackoff"] = "exponential_backoff";
6962
+ RETRY_STRATEGY2["LinearBackoff"] = "linear_backoff";
6963
+ RETRY_STRATEGY2["FixedDelay"] = "fixed_delay";
6964
+ RETRY_STRATEGY2["NoRetry"] = "no_retry";
6965
+ return RETRY_STRATEGY2;
6966
+ })(RETRY_STRATEGY || {});
6967
+ var PATH_GENERATION_STRATEGY = /* @__PURE__ */ ((PATH_GENERATION_STRATEGY2) => {
6968
+ PATH_GENERATION_STRATEGY2["HashBased"] = "hash_based";
6969
+ PATH_GENERATION_STRATEGY2["EntityBased"] = "entity_based";
6970
+ PATH_GENERATION_STRATEGY2["DateBased"] = "date_based";
6971
+ PATH_GENERATION_STRATEGY2["CategoryBased"] = "category_based";
6972
+ PATH_GENERATION_STRATEGY2["FLAT"] = "flat";
6973
+ return PATH_GENERATION_STRATEGY2;
6974
+ })(PATH_GENERATION_STRATEGY || {});
6975
+ var FILE_VALIDATION_ERROR = /* @__PURE__ */ ((FILE_VALIDATION_ERROR2) => {
6976
+ FILE_VALIDATION_ERROR2["InvalidMimeType"] = "invalid_mime_type";
6977
+ FILE_VALIDATION_ERROR2["FileTooLarge"] = "file_too_large";
6978
+ FILE_VALIDATION_ERROR2["FileTooSmall"] = "file_too_small";
6979
+ FILE_VALIDATION_ERROR2["InvalidExtension"] = "invalid_extension";
6980
+ FILE_VALIDATION_ERROR2["InvalidFilename"] = "invalid_filename";
6981
+ FILE_VALIDATION_ERROR2["ExecutableDetected"] = "executable_detected";
6982
+ FILE_VALIDATION_ERROR2["VirusDetected"] = "virus_detected";
6983
+ return FILE_VALIDATION_ERROR2;
6984
+ })(FILE_VALIDATION_ERROR || {});
6985
+ var TEMPLATE_OUTPUT_FORMAT = /* @__PURE__ */ ((TEMPLATE_OUTPUT_FORMAT2) => {
6986
+ TEMPLATE_OUTPUT_FORMAT2["PDF"] = "pdf";
6987
+ TEMPLATE_OUTPUT_FORMAT2["HTML"] = "html";
6988
+ TEMPLATE_OUTPUT_FORMAT2["MARKDOWN"] = "markdown";
6989
+ return TEMPLATE_OUTPUT_FORMAT2;
6990
+ })(TEMPLATE_OUTPUT_FORMAT || {});
6991
+ var DOCUMENT_TYPE = /* @__PURE__ */ ((DOCUMENT_TYPE2) => {
6992
+ DOCUMENT_TYPE2["INVOICE"] = "invoice";
6993
+ DOCUMENT_TYPE2["RECEIPT"] = "receipt";
6994
+ DOCUMENT_TYPE2["TAX"] = "tax";
6995
+ DOCUMENT_TYPE2["COMPLIANCE"] = "compliance";
6996
+ DOCUMENT_TYPE2["CERTIFICATE"] = "certificate";
6997
+ DOCUMENT_TYPE2["CONTRACT"] = "contract";
6998
+ DOCUMENT_TYPE2["REPORT"] = "report";
6999
+ return DOCUMENT_TYPE2;
7000
+ })(DOCUMENT_TYPE || {});
7001
+ var MEDIA_ENTITY = /* @__PURE__ */ ((MEDIA_ENTITY2) => {
7002
+ MEDIA_ENTITY2["TEAM"] = "team";
7003
+ MEDIA_ENTITY2["CLUB"] = "club";
7004
+ MEDIA_ENTITY2["ATHLETE"] = "athlete";
7005
+ MEDIA_ENTITY2["MATCH"] = "match";
7006
+ MEDIA_ENTITY2["LEAGUE"] = "league";
7007
+ MEDIA_ENTITY2["POST"] = "post";
7008
+ MEDIA_ENTITY2["CAMPAIGN"] = "campaign";
7009
+ MEDIA_ENTITY2["PRODUCT"] = "product";
7010
+ MEDIA_ENTITY2["BRAND"] = "brand";
7011
+ MEDIA_ENTITY2["USER"] = "user";
7012
+ return MEDIA_ENTITY2;
7013
+ })(MEDIA_ENTITY || {});
7014
+ var STORAGE_VISIBILITY = /* @__PURE__ */ ((STORAGE_VISIBILITY2) => {
7015
+ STORAGE_VISIBILITY2["PUBLIC"] = "public";
7016
+ STORAGE_VISIBILITY2["PRIVATE"] = "private";
7017
+ return STORAGE_VISIBILITY2;
7018
+ })(STORAGE_VISIBILITY || {});
7019
+ var STORAGE_ENVIRONMENT = /* @__PURE__ */ ((STORAGE_ENVIRONMENT2) => {
7020
+ STORAGE_ENVIRONMENT2["PRODUCTION"] = "prod";
7021
+ STORAGE_ENVIRONMENT2["STAGING"] = "stg";
7022
+ STORAGE_ENVIRONMENT2["DEVELOPMENT"] = "dev";
7023
+ return STORAGE_ENVIRONMENT2;
7024
+ })(STORAGE_ENVIRONMENT || {});
7025
+ var BUSINESS_MODEL = /* @__PURE__ */ ((BUSINESS_MODEL2) => {
7026
+ BUSINESS_MODEL2["B2B"] = "b2b";
7027
+ BUSINESS_MODEL2["B2C"] = "b2c";
7028
+ BUSINESS_MODEL2["B2B2C"] = "b2b2c";
7029
+ BUSINESS_MODEL2["INTERNAL"] = "internal";
7030
+ return BUSINESS_MODEL2;
7031
+ })(BUSINESS_MODEL || {});
7032
+ var ORGANIZATION_TIER = /* @__PURE__ */ ((ORGANIZATION_TIER2) => {
7033
+ ORGANIZATION_TIER2["ENTERPRISE"] = "enterprise";
7034
+ ORGANIZATION_TIER2["PROFESSIONAL"] = "professional";
7035
+ ORGANIZATION_TIER2["STANDARD"] = "standard";
7036
+ ORGANIZATION_TIER2["STARTER"] = "starter";
7037
+ return ORGANIZATION_TIER2;
7038
+ })(ORGANIZATION_TIER || {});
7039
+ var BUCKET_PURPOSE = /* @__PURE__ */ ((BUCKET_PURPOSE2) => {
7040
+ BUCKET_PURPOSE2["COMPLIANCE"] = "compliance";
7041
+ BUCKET_PURPOSE2["MediaImages"] = "media-images";
7042
+ BUCKET_PURPOSE2["MediaVideos"] = "media-videos";
7043
+ BUCKET_PURPOSE2["MediaStatic"] = "media-static";
7044
+ BUCKET_PURPOSE2["UserUploads"] = "user-uploads";
7045
+ BUCKET_PURPOSE2["TEMPORARY"] = "temporary";
7046
+ BUCKET_PURPOSE2["ARCHIVES"] = "archives";
7047
+ BUCKET_PURPOSE2["BACKUPS"] = "backups";
7048
+ return BUCKET_PURPOSE2;
7049
+ })(BUCKET_PURPOSE || {});
7050
+ var PATH_STRATEGY = /* @__PURE__ */ ((PATH_STRATEGY2) => {
7051
+ PATH_STRATEGY2["COMPLIANCE"] = "compliance";
7052
+ PATH_STRATEGY2["MEDIA"] = "media";
7053
+ PATH_STRATEGY2["GENERAL"] = "general";
7054
+ return PATH_STRATEGY2;
7055
+ })(PATH_STRATEGY || {});
7056
+ var MEDIA_VARIANT_TYPE = /* @__PURE__ */ ((MEDIA_VARIANT_TYPE2) => {
7057
+ MEDIA_VARIANT_TYPE2["THUMBNAIL"] = "thumbnail";
7058
+ MEDIA_VARIANT_TYPE2["SMALL"] = "small";
7059
+ MEDIA_VARIANT_TYPE2["MEDIUM"] = "medium";
7060
+ MEDIA_VARIANT_TYPE2["LARGE"] = "large";
7061
+ MEDIA_VARIANT_TYPE2["MOBILE"] = "mobile";
7062
+ MEDIA_VARIANT_TYPE2["TABLET"] = "tablet";
7063
+ MEDIA_VARIANT_TYPE2["DESKTOP"] = "desktop";
7064
+ MEDIA_VARIANT_TYPE2["HD"] = "hd";
7065
+ MEDIA_VARIANT_TYPE2["FourK"] = "4k";
7066
+ MEDIA_VARIANT_TYPE2["Video360p"] = "360p";
7067
+ MEDIA_VARIANT_TYPE2["Video480p"] = "480p";
7068
+ MEDIA_VARIANT_TYPE2["Video720p"] = "720p";
7069
+ MEDIA_VARIANT_TYPE2["Video1080p"] = "1080p";
7070
+ return MEDIA_VARIANT_TYPE2;
7071
+ })(MEDIA_VARIANT_TYPE || {});
7072
+ var STORAGE_QUEUE_PRIORITY = /* @__PURE__ */ ((STORAGE_QUEUE_PRIORITY2) => {
7073
+ STORAGE_QUEUE_PRIORITY2["HIGH"] = "high";
7074
+ STORAGE_QUEUE_PRIORITY2["NORMAL"] = "normal";
7075
+ STORAGE_QUEUE_PRIORITY2["LOW"] = "low";
7076
+ return STORAGE_QUEUE_PRIORITY2;
7077
+ })(STORAGE_QUEUE_PRIORITY || {});
7078
+ var STORAGE_DEVICE_TYPE = /* @__PURE__ */ ((STORAGE_DEVICE_TYPE2) => {
7079
+ STORAGE_DEVICE_TYPE2["MOBILE"] = "mobile";
7080
+ STORAGE_DEVICE_TYPE2["TABLET"] = "tablet";
7081
+ STORAGE_DEVICE_TYPE2["DESKTOP"] = "desktop";
7082
+ STORAGE_DEVICE_TYPE2["FourK"] = "4k";
7083
+ STORAGE_DEVICE_TYPE2["TV"] = "tv";
7084
+ STORAGE_DEVICE_TYPE2["WATCH"] = "watch";
7085
+ STORAGE_DEVICE_TYPE2["AUTO"] = "auto";
7086
+ return STORAGE_DEVICE_TYPE2;
7087
+ })(STORAGE_DEVICE_TYPE || {});
7088
+ var STORAGE_VARIANT_NAME = /* @__PURE__ */ ((STORAGE_VARIANT_NAME2) => {
7089
+ STORAGE_VARIANT_NAME2["THUMBNAIL"] = "thumbnail";
7090
+ STORAGE_VARIANT_NAME2["SMALL"] = "small";
7091
+ STORAGE_VARIANT_NAME2["MEDIUM"] = "medium";
7092
+ STORAGE_VARIANT_NAME2["LARGE"] = "large";
7093
+ STORAGE_VARIANT_NAME2["XLARGE"] = "xlarge";
7094
+ STORAGE_VARIANT_NAME2["MOBILE"] = "mobile";
7095
+ STORAGE_VARIANT_NAME2["TABLET"] = "tablet";
7096
+ STORAGE_VARIANT_NAME2["DESKTOP"] = "desktop";
7097
+ STORAGE_VARIANT_NAME2["HD"] = "hd";
7098
+ STORAGE_VARIANT_NAME2["FourK"] = "4k";
7099
+ STORAGE_VARIANT_NAME2["RETINA"] = "retina";
7100
+ STORAGE_VARIANT_NAME2["Video360p"] = "360p";
7101
+ STORAGE_VARIANT_NAME2["Video480p"] = "480p";
7102
+ STORAGE_VARIANT_NAME2["Video720p"] = "720p";
7103
+ STORAGE_VARIANT_NAME2["Video1080p"] = "1080p";
7104
+ STORAGE_VARIANT_NAME2["Video4k"] = "4k-video";
7105
+ return STORAGE_VARIANT_NAME2;
7106
+ })(STORAGE_VARIANT_NAME || {});
7107
+ var ADAPTER_HEALTH_STATUS = /* @__PURE__ */ ((ADAPTER_HEALTH_STATUS2) => {
7108
+ ADAPTER_HEALTH_STATUS2["HEALTHY"] = "healthy";
7109
+ ADAPTER_HEALTH_STATUS2["DEGRADED"] = "degraded";
7110
+ ADAPTER_HEALTH_STATUS2["UNHEALTHY"] = "unhealthy";
7111
+ ADAPTER_HEALTH_STATUS2["UNKNOWN"] = "unknown";
7112
+ return ADAPTER_HEALTH_STATUS2;
7113
+ })(ADAPTER_HEALTH_STATUS || {});
7114
+ var STORAGE_RENDERER_TYPE = /* @__PURE__ */ ((STORAGE_RENDERER_TYPE2) => {
7115
+ STORAGE_RENDERER_TYPE2["PUPPETEER"] = "puppeteer";
7116
+ STORAGE_RENDERER_TYPE2["PLAYWRIGHT"] = "playwright";
7117
+ STORAGE_RENDERER_TYPE2["PDFKIT"] = "pdfkit";
7118
+ STORAGE_RENDERER_TYPE2["JSPDF"] = "jspdf";
7119
+ STORAGE_RENDERER_TYPE2["WKHTMLTOPDF"] = "wkhtmltopdf";
7120
+ STORAGE_RENDERER_TYPE2["EXCELJS"] = "exceljs";
7121
+ STORAGE_RENDERER_TYPE2["DOCXTEMPLATER"] = "docxtemplater";
7122
+ return STORAGE_RENDERER_TYPE2;
7123
+ })(STORAGE_RENDERER_TYPE || {});
7124
+ var OUTPUT_FORMAT = /* @__PURE__ */ ((OUTPUT_FORMAT2) => {
7125
+ OUTPUT_FORMAT2["PDF"] = "pdf";
7126
+ OUTPUT_FORMAT2["HTML"] = "html";
7127
+ OUTPUT_FORMAT2["PNG"] = "png";
7128
+ OUTPUT_FORMAT2["JPEG"] = "jpeg";
7129
+ OUTPUT_FORMAT2["EXCEL"] = "excel";
7130
+ OUTPUT_FORMAT2["WORD"] = "word";
7131
+ OUTPUT_FORMAT2["CSV"] = "csv";
7132
+ OUTPUT_FORMAT2["JSON"] = "json";
7133
+ return OUTPUT_FORMAT2;
7134
+ })(OUTPUT_FORMAT || {});
7135
+ var STORAGE_JURISDICTION = /* @__PURE__ */ ((STORAGE_JURISDICTION2) => {
7136
+ STORAGE_JURISDICTION2["GLOBAL"] = "GLOBAL";
7137
+ STORAGE_JURISDICTION2["US"] = "US";
7138
+ STORAGE_JURISDICTION2["UsCa"] = "US-CA";
7139
+ STORAGE_JURISDICTION2["UsNy"] = "US-NY";
7140
+ STORAGE_JURISDICTION2["UsTx"] = "US-TX";
7141
+ STORAGE_JURISDICTION2["UsFl"] = "US-FL";
7142
+ STORAGE_JURISDICTION2["UsIl"] = "US-IL";
7143
+ STORAGE_JURISDICTION2["EU"] = "EU";
7144
+ STORAGE_JURISDICTION2["EuDe"] = "EU-DE";
7145
+ STORAGE_JURISDICTION2["EuFr"] = "EU-FR";
7146
+ STORAGE_JURISDICTION2["EuGb"] = "EU-GB";
7147
+ STORAGE_JURISDICTION2["EuIt"] = "EU-IT";
7148
+ STORAGE_JURISDICTION2["EuEs"] = "EU-ES";
7149
+ STORAGE_JURISDICTION2["EuNl"] = "EU-NL";
7150
+ STORAGE_JURISDICTION2["EuCh"] = "EU-CH";
7151
+ STORAGE_JURISDICTION2["JP"] = "JP";
7152
+ STORAGE_JURISDICTION2["SG"] = "SG";
7153
+ STORAGE_JURISDICTION2["HK"] = "HK";
7154
+ STORAGE_JURISDICTION2["AU"] = "AU";
7155
+ STORAGE_JURISDICTION2["NZ"] = "NZ";
7156
+ STORAGE_JURISDICTION2["KR"] = "KR";
7157
+ STORAGE_JURISDICTION2["CN"] = "CN";
7158
+ STORAGE_JURISDICTION2["AE"] = "AE";
7159
+ STORAGE_JURISDICTION2["SA"] = "SA";
7160
+ STORAGE_JURISDICTION2["IL"] = "IL";
7161
+ STORAGE_JURISDICTION2["ZA"] = "ZA";
7162
+ STORAGE_JURISDICTION2["CA"] = "CA";
7163
+ STORAGE_JURISDICTION2["BR"] = "BR";
7164
+ STORAGE_JURISDICTION2["MX"] = "MX";
7165
+ STORAGE_JURISDICTION2["AR"] = "AR";
7166
+ return STORAGE_JURISDICTION2;
7167
+ })(STORAGE_JURISDICTION || {});
7168
+ var STORAGE_REGULATORY_FRAMEWORK = /* @__PURE__ */ ((STORAGE_REGULATORY_FRAMEWORK2) => {
7169
+ STORAGE_REGULATORY_FRAMEWORK2["IRS"] = "IRS";
7170
+ STORAGE_REGULATORY_FRAMEWORK2["SEC"] = "SEC";
7171
+ STORAGE_REGULATORY_FRAMEWORK2["FINRA"] = "FINRA";
7172
+ STORAGE_REGULATORY_FRAMEWORK2["SOX"] = "SOX";
7173
+ STORAGE_REGULATORY_FRAMEWORK2["GLBA"] = "GLBA";
7174
+ STORAGE_REGULATORY_FRAMEWORK2["FCRA"] = "FCRA";
7175
+ STORAGE_REGULATORY_FRAMEWORK2["FINCEN"] = "FinCEN";
7176
+ STORAGE_REGULATORY_FRAMEWORK2["BSA"] = "BSA";
7177
+ STORAGE_REGULATORY_FRAMEWORK2["AML"] = "AML";
7178
+ STORAGE_REGULATORY_FRAMEWORK2["OFAC"] = "OFAC";
7179
+ STORAGE_REGULATORY_FRAMEWORK2["NYDFS"] = "NYDFS";
7180
+ STORAGE_REGULATORY_FRAMEWORK2["CCPA"] = "CCPA";
7181
+ STORAGE_REGULATORY_FRAMEWORK2["CPRA"] = "CPRA";
7182
+ STORAGE_REGULATORY_FRAMEWORK2["GDPR"] = "GDPR";
7183
+ STORAGE_REGULATORY_FRAMEWORK2["MICA"] = "MiCA";
7184
+ STORAGE_REGULATORY_FRAMEWORK2["AMLD5"] = "5AMLD";
7185
+ STORAGE_REGULATORY_FRAMEWORK2["AMLD6"] = "6AMLD";
7186
+ STORAGE_REGULATORY_FRAMEWORK2["PSD2"] = "PSD2";
7187
+ STORAGE_REGULATORY_FRAMEWORK2["EMIR"] = "EMIR";
7188
+ STORAGE_REGULATORY_FRAMEWORK2["FATF"] = "FATF";
7189
+ STORAGE_REGULATORY_FRAMEWORK2["BaselIii"] = "Basel III";
7190
+ STORAGE_REGULATORY_FRAMEWORK2["ISO27001"] = "ISO27001";
7191
+ STORAGE_REGULATORY_FRAMEWORK2["SOC2"] = "SOC2";
7192
+ STORAGE_REGULATORY_FRAMEWORK2["HIPAA"] = "HIPAA";
7193
+ STORAGE_REGULATORY_FRAMEWORK2["HITECH"] = "HITECH";
7194
+ STORAGE_REGULATORY_FRAMEWORK2["PciDss"] = "PCI DSS";
7195
+ STORAGE_REGULATORY_FRAMEWORK2["FERPA"] = "FERPA";
7196
+ STORAGE_REGULATORY_FRAMEWORK2["COPPA"] = "COPPA";
7197
+ STORAGE_REGULATORY_FRAMEWORK2["InternalSecurity"] = "Internal Security Policy";
7198
+ STORAGE_REGULATORY_FRAMEWORK2["IndustryBestPractices"] = "Industry Best Practices";
7199
+ return STORAGE_REGULATORY_FRAMEWORK2;
7200
+ })(STORAGE_REGULATORY_FRAMEWORK || {});
7201
+ var STORAGE_PLUGIN_TYPE = /* @__PURE__ */ ((STORAGE_PLUGIN_TYPE2) => {
7202
+ STORAGE_PLUGIN_TYPE2["VALIDATION"] = "validation";
7203
+ STORAGE_PLUGIN_TYPE2["SECURITY"] = "security";
7204
+ STORAGE_PLUGIN_TYPE2["METADATA"] = "metadata";
7205
+ STORAGE_PLUGIN_TYPE2["CDN"] = "cdn";
7206
+ STORAGE_PLUGIN_TYPE2["PROCESSING"] = "processing";
7207
+ STORAGE_PLUGIN_TYPE2["MONITORING"] = "monitoring";
7208
+ STORAGE_PLUGIN_TYPE2["COMPLIANCE"] = "compliance";
7209
+ STORAGE_PLUGIN_TYPE2["AUDIT"] = "audit";
7210
+ STORAGE_PLUGIN_TYPE2["CUSTOM"] = "custom";
7211
+ return STORAGE_PLUGIN_TYPE2;
7212
+ })(STORAGE_PLUGIN_TYPE || {});
7213
+ var STORAGE_WEBHOOK_EVENT_TYPE = /* @__PURE__ */ ((STORAGE_WEBHOOK_EVENT_TYPE2) => {
7214
+ STORAGE_WEBHOOK_EVENT_TYPE2["ObjectCreated"] = "object.created";
7215
+ STORAGE_WEBHOOK_EVENT_TYPE2["ObjectUpdated"] = "object.updated";
7216
+ STORAGE_WEBHOOK_EVENT_TYPE2["ObjectDeleted"] = "object.deleted";
7217
+ STORAGE_WEBHOOK_EVENT_TYPE2["ObjectRestored"] = "object.restored";
7218
+ STORAGE_WEBHOOK_EVENT_TYPE2["ObjectArchived"] = "object.archived";
7219
+ STORAGE_WEBHOOK_EVENT_TYPE2["TranscodeComplete"] = "transcode.complete";
7220
+ STORAGE_WEBHOOK_EVENT_TYPE2["TranscodeFailed"] = "transcode.failed";
7221
+ STORAGE_WEBHOOK_EVENT_TYPE2["TranscodeProgress"] = "transcode.progress";
7222
+ STORAGE_WEBHOOK_EVENT_TYPE2["ThumbnailComplete"] = "thumbnail.complete";
7223
+ STORAGE_WEBHOOK_EVENT_TYPE2["ImageOptimizationComplete"] = "image.optimization.complete";
7224
+ STORAGE_WEBHOOK_EVENT_TYPE2["CdnInvalidationComplete"] = "cdn.invalidation.complete";
7225
+ STORAGE_WEBHOOK_EVENT_TYPE2["CdnInvalidationFailed"] = "cdn.invalidation.failed";
7226
+ STORAGE_WEBHOOK_EVENT_TYPE2["ChecksumMismatch"] = "checksum.mismatch";
7227
+ STORAGE_WEBHOOK_EVENT_TYPE2["ObjectCorrupted"] = "object.corrupted";
7228
+ STORAGE_WEBHOOK_EVENT_TYPE2["QuotaWarning"] = "quota.warning";
7229
+ STORAGE_WEBHOOK_EVENT_TYPE2["QuotaExceeded"] = "quota.exceeded";
7230
+ return STORAGE_WEBHOOK_EVENT_TYPE2;
7231
+ })(STORAGE_WEBHOOK_EVENT_TYPE || {});
7232
+ var STORAGE_OPERATION = /* @__PURE__ */ ((STORAGE_OPERATION2) => {
7233
+ STORAGE_OPERATION2["UPLOAD"] = "upload";
7234
+ STORAGE_OPERATION2["DELETE"] = "delete";
7235
+ STORAGE_OPERATION2["UPDATE"] = "update";
7236
+ STORAGE_OPERATION2["RESTORE"] = "restore";
7237
+ STORAGE_OPERATION2["ARCHIVE"] = "archive";
7238
+ return STORAGE_OPERATION2;
7239
+ })(STORAGE_OPERATION || {});
7240
+ var STORAGE_SIGNATURE_METHOD = /* @__PURE__ */ ((STORAGE_SIGNATURE_METHOD2) => {
7241
+ STORAGE_SIGNATURE_METHOD2["HmacSha256"] = "hmac-sha256";
7242
+ STORAGE_SIGNATURE_METHOD2["HmacSha512"] = "hmac-sha512";
7243
+ STORAGE_SIGNATURE_METHOD2["HmacSha1"] = "hmac-sha1";
7244
+ STORAGE_SIGNATURE_METHOD2["AwsSignatureV4"] = "aws-signature-v4";
7245
+ STORAGE_SIGNATURE_METHOD2["JWT"] = "jwt";
7246
+ STORAGE_SIGNATURE_METHOD2["Custom"] = "custom";
7247
+ return STORAGE_SIGNATURE_METHOD2;
7248
+ })(STORAGE_SIGNATURE_METHOD || {});
7249
+
7250
+ // src/storage/event-handler-mapping.ts
7251
+ var STORAGE_EVENT_HANDLER_MAPPING = {
7252
+ // Upload events
7253
+ onFileUploaded: "file_uploaded" /* FileUploaded */,
7254
+ onFileUploadFailed: "file_upload_failed" /* FileUploadFailed */,
7255
+ onUploadProgress: "upload_progress" /* UploadProgress */,
7256
+ onUploadAborted: "upload_aborted" /* UploadAborted */,
7257
+ // Delete events
7258
+ onFileDeleted: "file_deleted" /* FileDeleted */,
7259
+ onFileDeleteFailed: "file_delete_failed" /* FileDeleteFailed */,
7260
+ // Access events
7261
+ onFileAccessed: "file_accessed" /* FileAccessed */,
7262
+ onSignedUrlGenerated: "signed_url_generated" /* SignedUrlGenerated */,
7263
+ // Processing events
7264
+ onMetadataExtracted: "metadata_extracted" /* MetadataExtracted */,
7265
+ onMediaProcessingStarted: "media_processing_started" /* MediaProcessingStarted */,
7266
+ onMediaProcessingCompleted: "media_processing_completed" /* MediaProcessingCompleted */,
7267
+ onMediaProcessingFailed: "media_processing_failed" /* MediaProcessingFailed */,
7268
+ // Security events
7269
+ onVirusDetected: "virus_detected" /* VirusDetected */,
7270
+ onVirusScanCompleted: "virus_scan_completed" /* VirusScanCompleted */,
7271
+ // Adapter events
7272
+ onAdapterHealthCheck: "adapter_health_check" /* AdapterHealthCheck */,
7273
+ onAdapterFailed: "adapter_failed" /* AdapterFailed */,
7274
+ // Compliance events
7275
+ onRetentionPolicyApplied: "retention_policy_applied" /* RetentionPolicyApplied */,
7276
+ onFileMarkedForDeletion: "file_marked_for_deletion" /* FileMarkedForDeletion */,
7277
+ onImmutabilityEnforced: "immutability_enforced" /* ImmutabilityEnforced */,
7278
+ // File operations events
7279
+ onFileReplaced: "file_replaced" /* FileReplaced */,
7280
+ onFileReplaceFailed: "file_replace_failed" /* FileReplaceFailed */,
7281
+ onFileMoved: "file_moved" /* FileMoved */,
7282
+ onFileMoveFailed: "file_move_failed" /* FileMoveFailed */,
7283
+ onFileCopied: "file_copied" /* FileCopied */,
7284
+ onFileCopyFailed: "file_copy_failed" /* FileCopyFailed */,
7285
+ // Audit events
7286
+ onAuditLogCreated: "audit_log_created" /* AuditLogCreated */,
7287
+ // Queue events
7288
+ onQueueStarted: "storage.queue.started" /* QueueStarted */,
7289
+ onQueueStopped: "storage.queue.stopped" /* QueueStopped */,
7290
+ onOperationProcessing: "storage.operation.processing" /* OperationProcessing */,
7291
+ onOperationCompleted: "storage.operation.completed" /* OperationCompleted */,
7292
+ onOperationRetry: "storage.operation.retry" /* OperationRetry */,
7293
+ onOperationFailed: "storage.operation.failed" /* OperationFailed */,
7294
+ // Error events
7295
+ onStorageError: "storage_error" /* StorageError */
7296
+ };
7297
+ var WEBHOOK_EVENT_TYPE_MAPPING = {
7298
+ "object.created": "file_uploaded" /* FileUploaded */,
7299
+ "object.updated": "file_updated" /* FileUpdated */,
7300
+ "object.deleted": "file_deleted" /* FileDeleted */,
7301
+ "object.restored": "file_restored" /* FileRestored */,
7302
+ "object.archived": "file_archived" /* FileArchived */,
7303
+ "transcode.complete": "transcode_complete" /* TranscodeComplete */,
7304
+ "transcode.failed": "transcode_failed" /* TranscodeFailed */,
7305
+ "transcode.progress": "transcode_progress" /* TranscodeProgress */,
7306
+ "thumbnail.complete": "thumbnail_generated" /* ThumbnailGenerated */,
7307
+ "image.optimization.complete": "image_optimized" /* ImageOptimized */,
7308
+ "cdn.invalidation.complete": "cdn_invalidated" /* CdnInvalidated */,
7309
+ "cdn.invalidation.failed": "cdn_invalidation_failed" /* CdnInvalidationFailed */,
7310
+ "checksum.mismatch": "integrity_check_failed" /* IntegrityCheckFailed */,
7311
+ "object.corrupted": "corruption_detected" /* CorruptionDetected */,
7312
+ "quota.warning": "quota_warning" /* QuotaWarning */,
7313
+ "quota.exceeded": "quota_exceeded" /* QuotaExceeded */
7314
+ };
7315
+ var STORAGE_EVENT_TYPE_TO_HANDLER_NAME = Object.entries(STORAGE_EVENT_HANDLER_MAPPING).reduce(
7316
+ (acc, [handlerName, eventType]) => {
7317
+ acc[eventType] = handlerName;
7318
+ return acc;
7319
+ },
7320
+ {}
7321
+ );
7322
+ var MAX_PROGRESS_PERCENTAGE = 100;
7323
+ var STORAGE_PROCESSING_STATUS = /* @__PURE__ */ ((STORAGE_PROCESSING_STATUS2) => {
7324
+ STORAGE_PROCESSING_STATUS2["Queued"] = "queued";
7325
+ STORAGE_PROCESSING_STATUS2["Processing"] = "processing";
7326
+ STORAGE_PROCESSING_STATUS2["Completed"] = "completed";
7327
+ STORAGE_PROCESSING_STATUS2["Failed"] = "failed";
7328
+ return STORAGE_PROCESSING_STATUS2;
7329
+ })(STORAGE_PROCESSING_STATUS || {});
7330
+ var StorageProcessingOutputSchema = zod.z.object({
7331
+ url: zod.z.string().url(),
7332
+ format: zod.z.string(),
7333
+ width: zod.z.number().optional(),
7334
+ height: zod.z.number().optional(),
7335
+ duration: zod.z.number().optional(),
7336
+ size: zod.z.number(),
7337
+ bitrate: zod.z.number().optional(),
7338
+ codec: zod.z.string().optional()
7339
+ });
7340
+ var StorageMediaProcessingPayloadSchema = zod.z.object({
7341
+ jobId: zod.z.string(),
7342
+ status: zod.z.nativeEnum(STORAGE_PROCESSING_STATUS),
7343
+ input: zod.z.object({
7344
+ url: zod.z.string().url(),
7345
+ objectKey: zod.z.string(),
7346
+ bucket: zod.z.string().optional()
7347
+ }),
7348
+ output: zod.z.object({
7349
+ primary: StorageProcessingOutputSchema.optional(),
7350
+ thumbnail: StorageProcessingOutputSchema.optional(),
7351
+ variants: zod.z.array(StorageProcessingOutputSchema).optional()
7352
+ }).optional(),
7353
+ metadata: zod.z.object({
7354
+ duration: zod.z.number().optional(),
7355
+ width: zod.z.number().optional(),
7356
+ height: zod.z.number().optional(),
7357
+ format: zod.z.string().optional(),
7358
+ codec: zod.z.string().optional()
7359
+ }).optional(),
7360
+ progress: zod.z.number().min(0).max(MAX_PROGRESS_PERCENTAGE).optional(),
7361
+ error: zod.z.object({
7362
+ code: zod.z.string(),
7363
+ message: zod.z.string(),
7364
+ details: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
7365
+ }).optional(),
7366
+ timestamp: zod.z.union([zod.z.string(), zod.z.number()]),
7367
+ provider: zod.z.string().optional()
7368
+ });
7369
+ var R2EventRecordSchema = zod.z.object({
7370
+ eventVersion: zod.z.string(),
7371
+ // "2.1"
7372
+ eventSource: zod.z.string(),
7373
+ // "aws:s3" or "cloudflare:r2"
7374
+ awsRegion: zod.z.string().optional(),
7375
+ // R2 may not include this
7376
+ eventTime: zod.z.string(),
7377
+ // ISO 8601 timestamp
7378
+ eventName: zod.z.string(),
7379
+ // e.g., "ObjectCreated:Put", "ObjectRemoved:Delete"
7380
+ userIdentity: zod.z.object({
7381
+ principalId: zod.z.string()
7382
+ }).optional(),
7383
+ requestParameters: zod.z.object({
7384
+ sourceIPAddress: zod.z.string()
7385
+ }).optional(),
7386
+ responseElements: zod.z.object({
7387
+ "x-amz-request-id": zod.z.string().optional(),
7388
+ "x-amz-id-2": zod.z.string().optional()
7389
+ }).optional(),
7390
+ s3: zod.z.object({
7391
+ s3SchemaVersion: zod.z.string(),
7392
+ // "1.0"
7393
+ configurationId: zod.z.string().optional(),
7394
+ bucket: zod.z.object({
7395
+ name: zod.z.string(),
7396
+ // Bucket name
7397
+ ownerIdentity: zod.z.object({
7398
+ principalId: zod.z.string()
7399
+ }).optional(),
7400
+ arn: zod.z.string().optional()
7401
+ }),
7402
+ object: zod.z.object({
7403
+ key: zod.z.string(),
7404
+ // Object key
7405
+ size: zod.z.number().optional(),
7406
+ // File size in bytes
7407
+ eTag: zod.z.string().optional(),
7408
+ // Entity tag
7409
+ versionId: zod.z.string().optional(),
7410
+ sequencer: zod.z.string().optional()
7411
+ })
7412
+ })
7413
+ });
7414
+ var R2WebhookPayloadSchema = zod.z.object({
7415
+ Records: zod.z.array(R2EventRecordSchema)
7416
+ });
7417
+ var SupabaseStorageObjectSchema = zod.z.object({
7418
+ id: zod.z.uuid(),
7419
+ // Object UUID
7420
+ bucket_id: zod.z.string(),
7421
+ // Bucket name
7422
+ name: zod.z.string(),
7423
+ // Object path/key
7424
+ owner: zod.z.uuid().optional().nullable(),
7425
+ // Owner UUID
7426
+ created_at: zod.z.string(),
7427
+ // ISO timestamp
7428
+ updated_at: zod.z.string().optional().nullable(),
7429
+ // ISO timestamp
7430
+ last_accessed_at: zod.z.string().optional().nullable(),
7431
+ metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional().nullable(),
7432
+ // Custom metadata
7433
+ version: zod.z.string().optional().nullable(),
7434
+ owner_id: zod.z.string().optional().nullable()
7435
+ });
7436
+ var SupabaseWebhookPayloadSchema = zod.z.object({
7437
+ type: zod.z.enum(["INSERT", "UPDATE", "DELETE"]),
7438
+ // Database event type
7439
+ table: zod.z.literal("objects"),
7440
+ // Always 'objects' for storage
7441
+ schema: zod.z.literal("storage"),
7442
+ // Always 'storage'
7443
+ record: SupabaseStorageObjectSchema.optional().nullable(),
7444
+ // New/updated record
7445
+ old_record: SupabaseStorageObjectSchema.optional().nullable()
7446
+ // Old record (for UPDATE/DELETE)
7447
+ });
7448
+
5355
7449
  exports.ADAPTERS = ADAPTERS;
7450
+ exports.ADAPTER_HEALTH_STATUS = ADAPTER_HEALTH_STATUS;
5356
7451
  exports.ADAPTER_TYPES = ADAPTER_TYPES;
5357
7452
  exports.ALERT_RULE_ID = ALERT_RULE_ID;
5358
7453
  exports.ALERT_SEVERITIES = ALERT_SEVERITIES;
@@ -5366,6 +7461,8 @@ exports.AUDIT_OPERATION = AUDIT_OPERATION;
5366
7461
  exports.AUTH_PROVIDER = AUTH_PROVIDER;
5367
7462
  exports.AUTH_PROVIDER_TYPE = AUTH_PROVIDER_TYPE;
5368
7463
  exports.BASIC_PROFILE_ERRORS = BASIC_PROFILE_ERRORS;
7464
+ exports.BUCKET_PURPOSE = BUCKET_PURPOSE;
7465
+ exports.BUSINESS_MODEL = BUSINESS_MODEL;
5369
7466
  exports.CACHE_DURATION_MS = CACHE_DURATION_MS;
5370
7467
  exports.CACHE_EVENTS = CACHE_EVENTS;
5371
7468
  exports.CHAIN_ID = CHAIN_ID;
@@ -5395,8 +7492,10 @@ exports.DB_POOL_EVENTS = DB_POOL_EVENTS;
5395
7492
  exports.DEBUGGER_CONFIG_SOURCES = DEBUGGER_CONFIG_SOURCES;
5396
7493
  exports.DEBUG_EVENTS = DEBUG_EVENTS;
5397
7494
  exports.DEFAULT_THRESHOLDS = DEFAULT_THRESHOLDS;
7495
+ exports.DOCUMENT_TYPE = DOCUMENT_TYPE;
5398
7496
  exports.DeviceTokenSchema = DeviceTokenSchema;
5399
7497
  exports.ENCRYPTION_DEFAULTS = ENCRYPTION_DEFAULTS;
7498
+ exports.ENTITY_TYPE = ENTITY_TYPE;
5400
7499
  exports.ERROR_CATEGORY = ERROR_CATEGORY;
5401
7500
  exports.ERROR_CATEGORY_TO_EMITTER_KEY = ERROR_CATEGORY_TO_EMITTER_KEY;
5402
7501
  exports.ERROR_CODES = ERROR_CODES;
@@ -5427,7 +7526,10 @@ exports.FEATURE_FLAG_METADATA = FEATURE_FLAG_METADATA;
5427
7526
  exports.FEATURE_FLAG_PROVIDERS = FEATURE_FLAG_PROVIDERS;
5428
7527
  exports.FEATURE_FLAG_RULE_FIELD = FEATURE_FLAG_RULE_FIELD;
5429
7528
  exports.FEATURE_FLAG_TYPES = FEATURE_FLAG_TYPES;
7529
+ exports.FILE_ACCESS_LEVEL = FILE_ACCESS_LEVEL;
7530
+ exports.FILE_CATEGORY = FILE_CATEGORY;
5430
7531
  exports.FILE_EXTENSIONS = FILE_EXTENSIONS;
7532
+ exports.FILE_VALIDATION_ERROR = FILE_VALIDATION_ERROR;
5431
7533
  exports.HANDLER_SCOPES = HANDLER_SCOPES;
5432
7534
  exports.HEADER_EVENTS = HEADER_EVENTS;
5433
7535
  exports.HEADER_STAGES = HEADER_STAGES;
@@ -5449,8 +7551,10 @@ exports.InfobipTrackingWebhookSchema = InfobipTrackingWebhookSchema;
5449
7551
  exports.LOAD_BALANCING_STRATEGY = LOAD_BALANCING_STRATEGY;
5450
7552
  exports.LOGGER_SERVICES = LOGGER_SERVICES;
5451
7553
  exports.LocaleSchema = LocaleSchema;
7554
+ exports.MEDIA_ENTITY = MEDIA_ENTITY;
5452
7555
  exports.MEDIA_EXTENSIONS = MEDIA_EXTENSIONS;
5453
7556
  exports.MEDIA_MIME_PREFIXES = MEDIA_MIME_PREFIXES;
7557
+ exports.MEDIA_VARIANT_TYPE = MEDIA_VARIANT_TYPE;
5454
7558
  exports.MIME_TYPES = MIME_TYPES;
5455
7559
  exports.NETWORK_CONFIDENCE_LEVELS = NETWORK_CONFIDENCE_LEVELS;
5456
7560
  exports.NETWORK_EVENTS = NETWORK_EVENTS;
@@ -5463,7 +7567,11 @@ exports.NOTIFICATION_PROVIDERS = NOTIFICATION_PROVIDERS;
5463
7567
  exports.NetworkPresetNames = NetworkPresetNames;
5464
7568
  exports.NotificationCategorySchema = NotificationCategorySchema;
5465
7569
  exports.OPERATIONS = COMMON_OPERATIONS;
7570
+ exports.ORGANIZATION_TIER = ORGANIZATION_TIER;
7571
+ exports.OUTPUT_FORMAT = OUTPUT_FORMAT;
5466
7572
  exports.PACKAGE_STATUS_CODES = INTERNAL_STATUS_CODES;
7573
+ exports.PATH_GENERATION_STRATEGY = PATH_GENERATION_STRATEGY;
7574
+ exports.PATH_STRATEGY = PATH_STRATEGY;
5467
7575
  exports.PAYMENT_ERROR_CATEGORY = PAYMENT_ERROR_CATEGORY;
5468
7576
  exports.PAYMENT_ERROR_CODES = PAYMENT_ERROR_CODES;
5469
7577
  exports.PAYMENT_EVENT_CATEGORY = PAYMENT_EVENT_CATEGORY;
@@ -5482,6 +7590,8 @@ exports.PUB_SUB_EVENT = PUB_SUB_EVENT;
5482
7590
  exports.PhoneSchema = PhoneSchema;
5483
7591
  exports.QUEUE_OPERATIONS = QUEUE_OPERATIONS;
5484
7592
  exports.QueuePrioritySchema = QueuePrioritySchema;
7593
+ exports.R2EventRecordSchema = R2EventRecordSchema;
7594
+ exports.R2WebhookPayloadSchema = R2WebhookPayloadSchema;
5485
7595
  exports.REFUND_ERROR_TYPES = REFUND_ERROR_TYPES;
5486
7596
  exports.REFUND_NOT_ALLOWED_REASON = REFUND_NOT_ALLOWED_REASON;
5487
7597
  exports.REGIONAL_CONFIDENCE_LEVELS = REGIONAL_CONFIDENCE_LEVELS;
@@ -5490,6 +7600,7 @@ exports.REGION_TO_PRESET = REGION_TO_PRESET;
5490
7600
  exports.REGULATORY_FRAMEWORK = REGULATORY_FRAMEWORK;
5491
7601
  exports.REPLICA_STRATEGY = REPLICA_STRATEGY;
5492
7602
  exports.REQUIREDACTIONTYPE = REQUIREDACTIONTYPE;
7603
+ exports.RETRY_STRATEGY = RETRY_STRATEGY;
5493
7604
  exports.ROUTER_RULE_NAME = ROUTER_RULE_NAME;
5494
7605
  exports.ROUTING_STRATEGY = ROUTING_STRATEGY;
5495
7606
  exports.RTT_THRESHOLDS = RTT_THRESHOLDS;
@@ -5497,18 +7608,42 @@ exports.SECURITY_THREAT_TYPE = SECURITY_THREAT_TYPE;
5497
7608
  exports.SIGNATURE_METHOD = SIGNATURE_METHOD;
5498
7609
  exports.SORT_DIRECTION = SORT_DIRECTION;
5499
7610
  exports.SPEED_THRESHOLDS = SPEED_THRESHOLDS;
7611
+ exports.STORAGE_ADAPTER_TYPE = STORAGE_ADAPTER_TYPE;
7612
+ exports.STORAGE_DEVICE_TYPE = STORAGE_DEVICE_TYPE;
7613
+ exports.STORAGE_ENVIRONMENT = STORAGE_ENVIRONMENT;
7614
+ exports.STORAGE_ERROR_CODES = STORAGE_ERROR_CODES;
7615
+ exports.STORAGE_EVENT_HANDLER_MAPPING = STORAGE_EVENT_HANDLER_MAPPING;
7616
+ exports.STORAGE_EVENT_TYPE = STORAGE_EVENT_TYPE;
7617
+ exports.STORAGE_EVENT_TYPE_TO_HANDLER_NAME = STORAGE_EVENT_TYPE_TO_HANDLER_NAME;
7618
+ exports.STORAGE_JURISDICTION = STORAGE_JURISDICTION;
7619
+ exports.STORAGE_OPERATION = STORAGE_OPERATION;
7620
+ exports.STORAGE_PLUGIN_TYPE = STORAGE_PLUGIN_TYPE;
7621
+ exports.STORAGE_PROCESSING_STATUS = STORAGE_PROCESSING_STATUS;
7622
+ exports.STORAGE_QUEUE_PRIORITY = STORAGE_QUEUE_PRIORITY;
7623
+ exports.STORAGE_REGULATORY_FRAMEWORK = STORAGE_REGULATORY_FRAMEWORK;
7624
+ exports.STORAGE_RENDERER_TYPE = STORAGE_RENDERER_TYPE;
7625
+ exports.STORAGE_SIGNATURE_METHOD = STORAGE_SIGNATURE_METHOD;
5500
7626
  exports.STORAGE_TYPES = COMMON_STORAGE_TYPES;
7627
+ exports.STORAGE_VARIANT_NAME = STORAGE_VARIANT_NAME;
7628
+ exports.STORAGE_VISIBILITY = STORAGE_VISIBILITY;
7629
+ exports.STORAGE_WEBHOOK_EVENT_TYPE = STORAGE_WEBHOOK_EVENT_TYPE;
5501
7630
  exports.SYSTEM_USERS = SYSTEM_USERS;
5502
7631
  exports.SendGridEventSchema = SendGridEventSchema;
5503
7632
  exports.SendGridWebhookSchema = SendGridWebhookSchema;
5504
7633
  exports.SignupFormSchema = SignupFormSchema;
7634
+ exports.StorageMediaProcessingPayloadSchema = StorageMediaProcessingPayloadSchema;
7635
+ exports.StorageProcessingOutputSchema = StorageProcessingOutputSchema;
7636
+ exports.SupabaseStorageObjectSchema = SupabaseStorageObjectSchema;
7637
+ exports.SupabaseWebhookPayloadSchema = SupabaseWebhookPayloadSchema;
5505
7638
  exports.TABLES = TABLES;
7639
+ exports.TEMPLATE_OUTPUT_FORMAT = TEMPLATE_OUTPUT_FORMAT;
5506
7640
  exports.TRACKING_PHASES = TRACKING_PHASES;
5507
7641
  exports.TRANSACTION_TYPE = TRANSACTION_TYPE;
5508
7642
  exports.TemplateDataSchema = TemplateDataSchema;
5509
7643
  exports.TemplateIdSchema = TemplateIdSchema;
5510
7644
  exports.UNIFIED_OPERATIONS = UNIFIED_OPERATIONS;
5511
7645
  exports.UPDATE_STRATEGIES = UPDATE_STRATEGIES;
7646
+ exports.UPLOAD_STATUS = UPLOAD_STATUS;
5512
7647
  exports.USER_ROLE = USER_ROLE;
5513
7648
  exports.USER_STATUS = USER_STATUS;
5514
7649
  exports.USER_TYPE = USER_TYPE;
@@ -5516,6 +7651,7 @@ exports.UserIdSchema = UserIdSchema;
5516
7651
  exports.VALIDATION_RANGES = VALIDATION_RANGES;
5517
7652
  exports.WEBHOOK_ENCRYPTION_METHOD = WEBHOOK_ENCRYPTION_METHOD;
5518
7653
  exports.WEBHOOK_EVENT_TYPE = WEBHOOK_EVENT_TYPE;
7654
+ exports.WEBHOOK_EVENT_TYPE_MAPPING = WEBHOOK_EVENT_TYPE_MAPPING;
5519
7655
  exports.WEBHOOK_VERIFICATION_REASON = WEBHOOK_VERIFICATION_REASON;
5520
7656
  exports.athleteProfileSchema = athleteProfileSchema;
5521
7657
  exports.basicProfileSchema = basicProfileSchema;