@inaiat/fastify-papr
Version:
Fastify Papr Plugin Integration
81 lines (80 loc) • 3.78 kB
TypeScript
import { MongoServerError } from "mongodb";
//#region src/mongo-validation-error.d.ts
/**
* Represents details about a property that failed validation
*/
type ValidationDetail = {
/** The validation operator that failed (e.g., 'maxLength', 'minimum') */operatorName?: string; /** The specification that was violated */
specifiedAs?: Record<string, unknown>; /** Human-readable reason for the validation failure */
reason?: string; /** The actual value that was rejected */
consideredValue?: unknown; /** The type of the value that was rejected */
consideredType?: unknown;
};
/**
* Represents a property that failed MongoDB validation
*/
type ValidationProperty = {
/** Name of the property that failed validation */propertyName: string; /** Details about why validation failed */
details: ValidationDetail[];
};
/**
* MongoDB validation error structure as returned by the server
*/
type DocumentValidationError = {
/** ID of the document that failed validation */failingDocumentId?: string; /** Error details from MongoDB */
details?: {
/** The validation operator (usually '$jsonSchema') */operatorName?: string; /** Rules that weren't satisfied by the document */
schemaRulesNotSatisfied?: [{
/** The specific rule operator that failed */operatorName: string; /** Properties that didn't satisfy the validation rules */
propertiesNotSatisfied?: readonly ValidationProperty[] | null; /** Names of properties that were present but not allowed by the schema (for the `additionalProperties` rule) */
additionalProperties?: readonly string[] | null; /** The specification that was violated for this rule */
specifiedAs?: Record<string, unknown>;
}];
};
};
/**
* A simplified representation of MongoDB validation errors
* Maps operator names to property details for easier client-side handling
*/
type ValidationErrors = Record<string, Record<string, ValidationDetail[]>[]>[] | undefined;
/**
* Checks if an error is a MongoDB server error
* @param error The error to check
* @returns True if the error is a MongoDB server error
*/
declare function isMongoServerError(error: unknown): error is MongoServerError;
/**
* Attempts to extract validation error details from a MongoDB server error
* @param error The error to process — may be any unknown value
* @returns A simplified representation of validation errors or undefined if not a validation error
*/
declare function extractValidationErrors(error: unknown): ValidationErrors | undefined;
/**
* Error class that simplifies handling of MongoDB validation errors
* Extracts and provides easy access to validation details
*/
declare class MongoValidationError extends Error {
/** The extracted validation rules that weren't satisfied */
validationErrors?: ValidationErrors;
/** Flag indicating whether this is a document validation error */
hasValidationFailures: boolean;
/**
* Creates an instance from a MongoDB server error
* @param mongoError The original MongoDB error
*/
constructor(mongoError: Readonly<MongoServerError>);
/**
* Returns the validation errors as a JSON string
* @returns A JSON string of the validation errors or undefined if not a validation error
*/
getValidationErrorsAsString(): string | undefined;
/**
* Finds validation errors for a specific field
* @param fieldName The field name to find errors for
* @returns Array of validation details for the field or undefined if none found
*/
getFieldErrors(fieldName: string): ValidationDetail[] | undefined;
}
//#endregion
export { DocumentValidationError, MongoValidationError, ValidationDetail, ValidationErrors, ValidationProperty, extractValidationErrors, isMongoServerError };
//# sourceMappingURL=mongo-validation-error.d.ts.map