/** * Canonical NextlyError codes and their HTTP status mappings. * * Plugin codes outside this enum must always pass an explicit `statusCode` * to the NextlyError constructor (no enum lookup happens for unknown codes). */ declare const NEXTLY_ERROR_STATUS: { readonly VALIDATION_ERROR: 400; readonly INVALID_INPUT: 400; readonly AUTH_REQUIRED: 401; readonly AUTH_INVALID_CREDENTIALS: 401; readonly TOKEN_EXPIRED: 401; readonly FORBIDDEN: 403; readonly BUILDER_DISABLED: 403; readonly NOT_FOUND: 404; readonly CONFLICT: 409; readonly DUPLICATE: 409; readonly RATE_LIMITED: 429; readonly PAYLOAD_TOO_LARGE: 413; readonly UNSUPPORTED_MEDIA_TYPE: 415; readonly BUSINESS_RULE_VIOLATION: 422; readonly INTERNAL_ERROR: 500; readonly DATABASE_ERROR: 500; readonly EXTERNAL_SERVICE_ERROR: 502; readonly SERVICE_UNAVAILABLE: 503; readonly EXTERNAL_URL_BLOCKED: 400; readonly EXTERNAL_REQUEST_FAILED: 502; readonly FILENAME_INVALID: 400; readonly EXTENSION_BLOCKED: 400; readonly MIME_BLOCKED: 415; readonly MIME_NOT_ALLOWED: 415; readonly SIZE_EXCEEDED: 413; readonly MAGIC_BYTE_MISMATCH: 400; readonly SVG_SANITIZATION_FAILED: 400; readonly UNSUPPORTED_FOR_BACKEND: 415; readonly NEXTLY_LEGACY_BOOKKEEPING_DETECTED: 409; readonly NEXTLY_UPGRADE_TABLE_NAME_COLLISION: 409; readonly NEXTLY_UPGRADE_IN_PROGRESS: 409; readonly NEXTLY_MIGRATE_LOCK_BUSY: 409; readonly NEXTLY_BASELINE_LOCK_NOT_HELD: 409; readonly NEXTLY_RESOLVE_LOCK_NOT_HELD: 409; readonly NEXTLY_BOOT_MIGRATIONS_NOT_RUN: 503; readonly NEXTLY_BOOT_MIGRATIONS_PENDING: 503; readonly NEXTLY_CORE_DESTRUCTIVE_REFUSED: 409; readonly NEXTLY_MIGRATION_DRIFT: 409; readonly NEXTLY_MIGRATION_APPLY_FAILED: 500; readonly NEXTLY_MIGRATION_FILE_MISSING: 404; readonly NEXTLY_MIGRATION_SNAPSHOT_MISSING: 404; readonly NEXTLY_MIGRATION_RESOLVE_DRIFT: 409; readonly NEXTLY_MIGRATION_RESOLVE_PRECONDITION: 409; readonly NEXTLY_UI_SCHEMA_INVALID: 400; readonly NEXTLY_SCHEMA_SLUG_COLLISION: 409; readonly NEXTLY_SCHEMA_RELATION_TARGET_MISSING: 400; readonly NEXTLY_SCHEMA_EXTEND_TARGET_UNKNOWN: 400; readonly NEXTLY_SCHEMA_EXTEND_FIELD_DUPLICATE: 409; readonly NEXTLY_SCHEMA_CROSS_PLUGIN_RELATION: 409; readonly NEXTLY_SCHEMA_RENAME_UNKNOWN_TARGET: 400; readonly NEXTLY_PLUGIN_CLIENT_CONFIG_INVALID: 500; readonly PLUGIN_RESOLUTION_ERROR: 500; readonly NEXTLY_ROUTE_COLLISION: 409; readonly NEXTLY_ROUTE_INVALID_PATH: 400; }; type NextlyErrorCode = keyof typeof NEXTLY_ERROR_STATUS; /** * The canonical error code a service names when it knows which one it means. * * A status is coarser than a code -- 409 covers both a name clash and a stale * write, and they need opposite advice -- so a failure that knows the * difference says so, and the boundary believes it instead of inferring the * safer reading from the number alone. * * Widened to `string` rather than `NextlyErrorCode`: a plugin declares codes * outside the canonical set, and the converter already carries those through. */ type ServiceErrorCode = string; export { NEXTLY_ERROR_STATUS as N }; export type { ServiceErrorCode as S, NextlyErrorCode as a };