UNPKG

@forestadmin/datasource-toolkit

Version:
121 lines 9.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlreadyDefinedFieldError = exports.MissingRelationError = exports.MissingColumnError = exports.MissingFieldError = exports.RelationFieldAccessDeniedError = exports.MissingCollectionError = exports.MissingSchemaElementError = exports.IntrospectionFormatError = exports.NotFoundError = exports.ForbiddenError = exports.UnprocessableError = exports.BadRequestError = exports.ValidationError = exports.BusinessError = void 0; // eslint-disable-next-line max-classes-per-file class BusinessError extends Error { constructor(message, data, name) { super(message); // INTERNAL USAGES this.isBusinessError = true; this.name = name ?? this.constructor.name; this.data = data; } /** * We cannot rely on `instanceof` because there can be some mismatch between * packages versions as dependencies of different packages. * So this function is a workaround to check if an error is of a specific type. */ static isOfType(error, ErrorConstructor) { return (error.name === ErrorConstructor.name || error.baseBusinessErrorName === ErrorConstructor.name); } } exports.BusinessError = BusinessError; class ValidationError extends BusinessError { constructor(message, data, name) { super(message, data, name); this.baseBusinessErrorName = 'ValidationError'; } } exports.ValidationError = ValidationError; class BadRequestError extends BusinessError { constructor(message, data, name) { super(message, data, name); this.baseBusinessErrorName = 'BadRequestError'; } } exports.BadRequestError = BadRequestError; class UnprocessableError extends BusinessError { constructor(message, data, name) { super(message, data, name); this.baseBusinessErrorName = 'UnprocessableError'; } } exports.UnprocessableError = UnprocessableError; class ForbiddenError extends BusinessError { constructor(message, data, name) { super(message, data, name); this.baseBusinessErrorName = 'ForbiddenError'; } } exports.ForbiddenError = ForbiddenError; class NotFoundError extends BusinessError { constructor(message, data, name) { super(message, data, name); this.baseBusinessErrorName = 'NotFoundError'; } } exports.NotFoundError = NotFoundError; class IntrospectionFormatError extends BusinessError { constructor(sourcePackageName) { const message = `This version of introspection is newer than this package version. ` + `Please update ${sourcePackageName}`; super(message); this.baseBusinessErrorName = 'IntrospectionFormatError'; } /** @deprecated use name instead */ get type() { return this.name; } } exports.IntrospectionFormatError = IntrospectionFormatError; // ==== Other errors ==== class MissingSchemaElementError extends ValidationError { } exports.MissingSchemaElementError = MissingSchemaElementError; class MissingCollectionError extends MissingSchemaElementError { } exports.MissingCollectionError = MissingCollectionError; function buildPath(fieldName, collectionName) { return collectionName ? `${collectionName}.${fieldName}` : fieldName; } function buildMessageMissingElement(options) { const { typeOfField, fieldName, availableFields, collectionName } = options; const path = buildPath(fieldName, collectionName); return `The '${path}' ${typeOfField.toLowerCase()} was not found. Available ${typeOfField.toLowerCase()}s are: [${availableFields}]. Please check if the ${typeOfField.toLowerCase()} name is correct.`; } class RelationFieldAccessDeniedError extends ValidationError { constructor(options) { const { fieldName, collectionName } = options; const path = buildPath(fieldName, collectionName); super(`Access to the '${path}' field is denied. You are trying to access a field from a related entity, but this is not allowed in the current context. Please verify the field name and context of use.`); } } exports.RelationFieldAccessDeniedError = RelationFieldAccessDeniedError; class MissingFieldError extends MissingSchemaElementError { constructor(options) { super(buildMessageMissingElement({ typeOfField: 'Field', ...options })); } } exports.MissingFieldError = MissingFieldError; class MissingColumnError extends MissingSchemaElementError { constructor(options) { super(buildMessageMissingElement({ typeOfField: 'Column', ...options })); } } exports.MissingColumnError = MissingColumnError; class MissingRelationError extends MissingSchemaElementError { constructor(options) { super(buildMessageMissingElement({ typeOfField: 'Relation', ...options })); } } exports.MissingRelationError = MissingRelationError; class AlreadyDefinedFieldError extends ValidationError { constructor(options) { const { fieldName, collectionName } = options; const path = buildPath(fieldName, collectionName); super(`The '${path}' field is already defined. Please check if the field name is correct and unique.`); } } exports.AlreadyDefinedFieldError = AlreadyDefinedFieldError; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBZ0Q7QUFDaEQsTUFBYSxhQUFjLFNBQVEsS0FBSztJQU90QyxZQUFZLE9BQWdCLEVBQUUsSUFBOEIsRUFBRSxJQUFhO1FBQ3pFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVBqQixrQkFBa0I7UUFDRixvQkFBZSxHQUFHLElBQUksQ0FBQztRQU9yQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBWSxFQUFFLGdCQUFpRDtRQUM3RSxPQUFPLENBQ0wsS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO1lBQ25DLEtBQXVCLENBQUMscUJBQXFCLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUN6RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeEJELHNDQXdCQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxhQUFhO0lBQ2hELFlBQVksT0FBZ0IsRUFBRSxJQUE4QixFQUFFLElBQWE7UUFDekUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQUxELDBDQUtDO0FBQ0QsTUFBYSxlQUFnQixTQUFRLGFBQWE7SUFDaEQsWUFBWSxPQUFnQixFQUFFLElBQThCLEVBQUUsSUFBYTtRQUN6RSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMscUJBQXFCLEdBQUcsaUJBQWlCLENBQUM7SUFD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