1.0.0 • Published 10 months ago

samba-bo-errors v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
10 months ago

samba-bo-errors

Utility functions to help creating and checking against SambaBO errors.

Installation

pnpm add samba-bo-errors

Usage

Creating a new Error class

createError(code: string, message: string | (T) => string, status = 500): SambaBOErrorConstructor<T>
import { createError } from 'samba-bo-errors';

const ForbiddenError = createError('FORBIDDEN', "You don't have permissions to see this.", 403);

throw new ForbiddenError();

You can configure additional extensions for the error class which should be communicated to the end user:

import { createError } from 'samba-bo-errors';

interface ForbiddenErrorExtensions {
	collection: string;
	field: string;
}

const ForbiddenError = createError<ForbiddenErrorExtensions>(
	'FORBIDDEN',
	"You don't have permissions to see this.",
	403,
);

throw new ForbiddenError({
	collection: 'articles',
	field: 'title',
});

You can then also use those extensions to generate out the error message:

import { createError } from 'samba-bo-errors';

interface ForbiddenErrorExtensions {
	collection: string;
	field: string;
}

const messageConstructor = (extensions: ForbiddenErrorExtensions) =>
	`You don't have permissions to see "${extensions.field}" in "${extensions.collection}".`;

const ForbiddenError = createError<ForbiddenErrorExtensions>('FORBIDDEN', messageConstructor, 403);

throw new ForbiddenError({
	collection: 'articles',
	field: 'title',
});

Checking if a given param is a valid SambaBOError instance

import { isSambaBOError, createError } from 'samba-bo-errors';

const ForbiddenError = createError('FORBIDDEN', "You don't have permissions to see this.", 403);

isSambaBOError(new ForbiddenError()); // true
isSambaBOError(new Error()); // false