@forestadmin/datasource-toolkit
Version:
121 lines • 9.52 kB
JavaScript
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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
;