JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 12846
  • Score
    100M100P100Q136823F
  • License MIT

Create consistent error objects around the codebase

Package Exports

  • @directus/errors
  • @directus/errors/package.json

Readme

@directus/errors

Utility functions to help creating and checking against Directus errors.

Installation

pnpm add @directus/errors

Usage

Creating a new Error class

createError(code: string, message: string | (T) => string, status = 500): DirectusErrorConstructor<T>
import { createError } from '@directus/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 '@directus/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 '@directus/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 DirectusError instance

import { isDirectusError, createError } from '@directus/errors';

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

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