New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

modern-errors

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

modern-errors - npm Package Compare versions

Comparing version 2.0.0 to 2.0.1

97

build/src/main.d.ts
import {
ErrorName,
ErrorConstructor as RawErrorConstructor,
ErrorInstance as RawErrorInstance,
CustomError as RawCustomError,
ErrorParams,

@@ -25,3 +24,3 @@ Options as CreateErrorTypesOptions,

/**
* Called on any `new ErrorType('message', parameters)`.
* Called on any `new CustomErrorType('message', parameters)`.
* Can be used to customize error parameters or to set error type properties.

@@ -47,3 +46,3 @@ * By default, any `parameters` are set as error properties.

readonly onCreate?: (
error: ErrorInstance<ErrorNames>,
error: CustomError<ErrorNames, ErrorParamsArg>,
params: Parameters<

@@ -72,3 +71,3 @@ NonNullable<

> = {
[errorName in ErrorNames]: ErrorConstructor<errorName, ErrorParamsArg>
[errorName in ErrorNames]: typeof CustomError<errorName, ErrorParamsArg>
} & {

@@ -90,3 +89,3 @@ /**

*/
errorHandler: ErrorHandler<ErrorNames>
errorHandler: ErrorHandler<ErrorNames, ErrorParamsArg>

@@ -126,54 +125,50 @@ /**

export type ErrorConstructor<
export declare class CustomError<
ErrorNames extends ErrorName = ErrorName,
ErrorParamsArg extends ErrorParams = ErrorParams,
> = new (
...args: ConstructorParameters<
RawErrorConstructor<ErrorNames, ErrorParamsArg>
> extends RawCustomError<ErrorNames, ErrorParamsArg> {
/**
* Convert errors to plain objects that are
* [always safe](https://github.com/ehmicky/error-serializer#json-safety) to
* serialize with JSON
* ([or YAML](https://github.com/ehmicky/error-serializer#custom-serializationparsing),
* etc.). All error properties
* [are kept](https://github.com/ehmicky/error-serializer#additional-error-properties),
* including
* [`cause`](https://github.com/ehmicky/error-serializer#errorcause-and-aggregateerror).
*
* @example
* ```js
* try {
* await readFile(filePath)
* } catch (cause) {
* const error = new InputError('Could not read the file.', {
* cause,
* filePath: '/path',
* })
* const errorObject = error.toJSON()
* // {
* // name: 'InputError',
* // message: 'Could not read the file',
* // stack: '...',
* // cause: { name: 'Error', ... },
* // filePath: '/path'
* // }
* const errorString = JSON.stringify(error)
* // '{"name":"InputError",...}'
* }
* ```
*/
toJSON: () => ReturnType<
typeof serialize<RawCustomError<ErrorNames, ErrorParamsArg>>
>
) => ErrorInstance<ErrorNames>
}
export type ErrorInstance<ErrorNames extends ErrorName = ErrorName> =
RawErrorInstance<ErrorNames> & {
/**
* Convert errors to plain objects that are
* [always safe](https://github.com/ehmicky/error-serializer#json-safety) to
* serialize with JSON
* ([or YAML](https://github.com/ehmicky/error-serializer#custom-serializationparsing),
* etc.). All error properties
* [are kept](https://github.com/ehmicky/error-serializer#additional-error-properties),
* including
* [`cause`](https://github.com/ehmicky/error-serializer#errorcause-and-aggregateerror).
*
* @example
* ```js
* try {
* await readFile(filePath)
* } catch (cause) {
* const error = new InputError('Could not read the file.', {
* cause,
* filePath: '/path',
* })
* const errorObject = error.toJSON()
* // {
* // name: 'InputError',
* // message: 'Could not read the file',
* // stack: '...',
* // cause: { name: 'Error', ... },
* // filePath: '/path'
* // }
* const errorString = JSON.stringify(error)
* // '{"name":"InputError",...}'
* }
* ```
*/
toJSON: () => ReturnType<typeof serialize<RawErrorInstance<ErrorNames>>>
}
/**
* Type of `errorHandler()`
*/
export type ErrorHandler<ErrorNames extends ErrorName = ErrorName> = (
error: unknown,
) => ErrorInstance<ErrorNames>
export type ErrorHandler<
ErrorNames extends ErrorName = ErrorName,
ErrorParamsArg extends ErrorParams = ErrorParams,
> = (error: unknown) => CustomError<ErrorNames, ErrorParamsArg>

@@ -180,0 +175,0 @@ /**

@@ -15,3 +15,3 @@ import createErrorTypes from"create-error-types";

const{onCreate,bugsUrl}=getOpts(opts);
const{errorHandler:innerHandler,...ErrorTypes}=createErrorTypes(
const{errorHandler:innerHandler,...CustomErrorTypes}=createErrorTypes(
errorNames,

@@ -21,5 +21,5 @@ {onCreate,bugsUrl});

const errorHandler=callErrorHandler.bind(undefined,innerHandler);
setErrorTypesToJSON(ErrorTypes);
const parse=parseValue.bind(undefined,ErrorTypes);
return{...ErrorTypes,errorHandler,parse};
setErrorTypesToJSON(CustomErrorTypes);
const parse=parseValue.bind(undefined,CustomErrorTypes);
return{...CustomErrorTypes,errorHandler,parse};
}

@@ -26,0 +26,0 @@

import{serialize,parse as parseLib}from"error-serializer";
export const setErrorTypesToJSON=function(ErrorTypes){
Object.values(ErrorTypes).forEach(setErrorTypeToJSON);
export const setErrorTypesToJSON=function(CustomErrorTypes){
Object.values(CustomErrorTypes).forEach(setErrorTypeToJSON);
};
const setErrorTypeToJSON=function(ErrorType){
const setErrorTypeToJSON=function(CustomErrorType){
Object.defineProperty(ErrorType.prototype,"toJSON",{
Object.defineProperty(CustomErrorType.prototype,"toJSON",{
value:toJSON,

@@ -24,5 +24,5 @@ enumerable:false,

export const parseValue=function(ErrorTypes,value){
return parseLib(value,{types:ErrorTypes,loose:true});
export const parseValue=function(CustomErrorTypes,value){
return parseLib(value,{types:CustomErrorTypes,loose:true});
};
//# sourceMappingURL=serialize.js.map
{
"name": "modern-errors",
"version": "2.0.0",
"version": "2.0.1",
"type": "module",

@@ -49,3 +49,3 @@ "exports": "./build/src/main.js",

"dependencies": {
"create-error-types": "^2.0.0",
"create-error-types": "^2.0.1",
"error-cause-polyfill": "^1.1.0",

@@ -52,0 +52,0 @@ "error-serializer": "^1.3.2",

@@ -96,3 +96,3 @@ <picture>

_Type_: `ErrorType`
_Type_: `CustomErrorType`

@@ -125,4 +125,5 @@ Any error name passed as argument is returned as an error type.

Called on any [`new ErrorType('message', parameters)`](#set-error-properties).
Can be used to [customize error parameters](#customize-error-parameters) or set
Called on any
[`new CustomErrorType('message', parameters)`](#set-error-properties). Can be
used to [customize error parameters](#customize-error-parameters) or set
[error type properties](#error-type-properties). By default, any `parameters`

@@ -481,7 +482,8 @@ are [set as error properties](#set-error-properties).

`error.toJSON()` converts custom errors to plain objects that are
[always safe](https://github.com/ehmicky/error-serializer#json-safety) to
serialize with JSON
`error.toJSON()` converts errors to plain objects that are
[serializable](https://github.com/ehmicky/error-serializer#json-safety) to JSON
([or YAML](https://github.com/ehmicky/error-serializer#custom-serializationparsing),
etc.). All error properties
etc.). It is
[automatically called](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#tojson_behavior)
by `JSON.stringify()`. All error properties
[are kept](https://github.com/ehmicky/error-serializer#additional-error-properties),

@@ -491,2 +493,10 @@ including

The `error` must be from [one of the types](#any-error-type) created by
[`modernErrors()`](#modernerrorserrornames-options). However, any other error
type (including `Error`, `TypeError`, etc.) is also serializable if it has been
either:
- Handled by [`errorHandler()`](#errorhandler)
- Wrapped [as an `error.cause`](#re-throw-errors)
```js

@@ -518,2 +528,9 @@ try {

The original error type is generically preserved. However, it is converted to a
generic `Error` if it is neither:
- From [one of the types](#any-error-type) created by
[`modernErrors()`](#modernerrorserrornames-options)
- Native (`Error`, `TypeError`, etc.)
```js

@@ -520,0 +537,0 @@ const newErrorObject = JSON.parse(errorString)

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc