Skip to content

Commit f7511fa

Browse files
committed
Use error-http-response
1 parent 0e1cffe commit f7511fa

File tree

7 files changed

+56
-342
lines changed

7 files changed

+56
-342
lines changed

package-lock.json

Lines changed: 25 additions & 114 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,10 @@
5151
"test": "test"
5252
},
5353
"dependencies": {
54-
"is-plain-obj": "^4.1.0",
55-
"safe-json-value": "^1.10.0"
54+
"error-http-response": "^1.0.0"
5655
},
5756
"devDependencies": {
58-
"@ehmicky/dev-tasks": "^1.0.102",
59-
"test-each": "^5.6.0"
57+
"@ehmicky/dev-tasks": "^1.0.102"
6058
},
6159
"peerDependencies": {
6260
"modern-errors": "^5.1.1"

src/main.js

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,14 @@
1-
import safeJsonValue from 'safe-json-value'
1+
import errorHttpResponse from 'error-http-response'
22

3-
import { getOptions } from './options.js'
4-
5-
// Turn `error` into a RFC 7807 problem details object.
6-
// Object keys order is significant.
7-
const httpResponse = function ({
8-
// eslint-disable-next-line no-unused-vars
9-
error: { name, message, stack, cause, errors, ...errorProps },
10-
options,
11-
}) {
12-
return safeJsonValue({
13-
...getOptionalProp(options, 'type'),
14-
...getOptionalProp(options, 'status'),
15-
...getDefaultedProp(options, 'title', String(name)),
16-
...getDefaultedProp(options, 'detail', String(message)),
17-
...getOptionalProp(options, 'instance'),
18-
...getDefaultedProp(options, 'stack', String(stack)),
19-
...getExtra(options, errorProps),
20-
}).value
21-
}
22-
23-
const getOptionalProp = function (options, optName) {
24-
return options[optName] === undefined ? {} : { [optName]: options[optName] }
3+
// Validate options
4+
const getOptions = function (options) {
5+
errorHttpResponse('', options)
6+
return options
257
}
268

27-
const getDefaultedProp = function (options, optName, defaultValue) {
28-
return { [optName]: options[optName] ?? defaultValue }
29-
}
30-
31-
const getExtra = function ({ extra }, errorProps) {
32-
if (extra !== undefined) {
33-
return { extra }
34-
}
35-
36-
return Object.keys(errorProps).length === 0 ? {} : { extra: errorProps }
9+
// Turn `error` into a RFC 7807 problem details object
10+
const httpResponse = function ({ error, options }) {
11+
return errorHttpResponse(error, options)
3712
}
3813

3914
export default {

src/options.js

Lines changed: 0 additions & 87 deletions
This file was deleted.

test/helpers/main.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)