UNPKG

@sprucelabs/schema

Version:

Static and dynamic binding plus runtime validation and transformation to ensure your app is sound. 🤓

86 lines (85 loc) • 3.27 kB
import AbstractSpruceError, { ErrorOptions as ISpruceErrorOptions } from '@sprucelabs/error'; import { FieldType } from '../fields/field.static.types'; export type SchemaErrorOptions = DuplicateSchemaErrorOptions | SchemaErrorOptionsNotFound | TransformationFailedErrorOptions | InvalidSchemaDefinitionErrorOptions | NotImplementedErrorOptions | InvalidFieldRegistrationErrorOptions | VersionRequiredErrorOptions | MissingParametersOptions | InvalidParametersOptions | UnexpectedParametersOptions | ValidationFailedErrorOptions | InvalidSchemaReferenceErrorOptions | FieldsNotMappedErrorOptions; export type FieldErrorCode = 'MISSING_PARAMETER' | 'INVALID_PARAMETER' | 'UNEXPECTED_PARAMETER'; export interface FieldError { code: FieldErrorCode; errors?: FieldError[]; friendlyMessage?: string; originalError?: Error; name: string; label?: string; } export interface SchemaErrorOptionsNotFound extends ISpruceErrorOptions { /** * Could not find a schema by id */ code: 'SCHEMA_NOT_FOUND'; schemaId: string; version?: string; namespace?: string; } export interface DuplicateSchemaErrorOptions extends ISpruceErrorOptions { /** * A schema with this id already exists */ code: 'DUPLICATE_SCHEMA'; schemaId: string; version?: string; namespace?: string; } export interface TransformationFailedErrorOptions extends ISpruceErrorOptions { code: 'TRANSFORMATION_ERROR'; fieldType: FieldType; incomingTypeof: string; incomingValue: string; errors?: FieldError[]; name: string; } export interface InvalidSchemaDefinitionErrorOptions extends ISpruceErrorOptions { code: 'INVALID_SCHEMA'; schemaId: string; errors: string[]; } export interface NotImplementedErrorOptions extends ISpruceErrorOptions { code: 'NOT_IMPLEMENTED'; instructions: string; } export interface FieldsNotMappedErrorOptions extends ISpruceErrorOptions { code: 'FIELDS_NOT_MAPPED'; fields: string[]; } export interface InvalidFieldRegistrationErrorOptions extends ISpruceErrorOptions { code: 'INVALID_FIELD_REGISTRATION'; package: string; className: string; type: string; importAs: string; description: string; } export interface VersionRequiredErrorOptions extends ISpruceErrorOptions { code: 'VERSION_NOT_FOUND'; schemaId?: string; namespace?: string; } interface ParameterOptions extends ISpruceErrorOptions { parameters: string[]; friendlyMessages?: string[]; errors?: FieldError[]; } export interface MissingParametersOptions extends ParameterOptions { code: 'MISSING_PARAMETERS'; } export interface InvalidParametersOptions extends ParameterOptions { code: 'INVALID_PARAMETERS'; } export interface UnexpectedParametersOptions extends ParameterOptions { code: 'UNEXPECTED_PARAMETERS'; } export interface ValidationFailedErrorOptions extends ISpruceErrorOptions { code: 'VALIDATION_FAILED'; schemaId: string; schemaName?: string; errors: FieldError[]; } export interface InvalidSchemaReferenceErrorOptions extends ISpruceErrorOptions { code: 'INVALID_SCHEMA_REFERENCE'; } export type ValidationError = AbstractSpruceError<MissingParametersOptions | InvalidParametersOptions | UnexpectedParametersOptions>; export {};