diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/resolve-path | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/resolve-path')
| -rw-r--r-- | node_modules/resolve-path/HISTORY.md | 66 | ||||
| -rw-r--r-- | node_modules/resolve-path/LICENSE | 23 | ||||
| -rw-r--r-- | node_modules/resolve-path/README.md | 111 | ||||
| -rw-r--r-- | node_modules/resolve-path/index.js | 88 | ||||
| -rw-r--r-- | node_modules/resolve-path/node_modules/http-errors/HISTORY.md | 132 | ||||
| -rw-r--r-- | node_modules/resolve-path/node_modules/http-errors/LICENSE | 23 | ||||
| -rw-r--r-- | node_modules/resolve-path/node_modules/http-errors/README.md | 135 | ||||
| -rw-r--r-- | node_modules/resolve-path/node_modules/http-errors/index.js | 260 | ||||
| -rw-r--r-- | node_modules/resolve-path/node_modules/http-errors/package.json | 48 | ||||
| -rw-r--r-- | node_modules/resolve-path/package.json | 46 |
10 files changed, 932 insertions, 0 deletions
diff --git a/node_modules/resolve-path/HISTORY.md b/node_modules/resolve-path/HISTORY.md new file mode 100644 index 00000000..ea4328aa --- /dev/null +++ b/node_modules/resolve-path/HISTORY.md @@ -0,0 +1,66 @@ +1.4.0 / 2018-02-13 +================== + + * Fix resolving paths with certain special characters + * deps: http-errors@~1.6.2 + - Make `message` property enumerable for `HttpError`s + - deps: depd@1.1.1 + - deps: setprototypeof@1.0.3 + +1.3.3 / 2016-11-14 +================== + + * deps: path-is-absolute@1.0.1 + +1.3.2 / 2016-06-17 +================== + + * deps: http-errors@~1.5.0 + - Use `setprototypeof` module to replace `__proto__` setting + - deps: inherits@2.0.1 + - deps: statuses@'>= 1.3.0 < 2' + - perf: enable strict mode + +1.3.1 / 2016-02-28 +================== + + * deps: http-errors@~1.4.0 + +1.3.0 / 2015-06-15 +================== + + * Use `path-is-absolute` to better detect absolute paths + * perf: enable strict mode + * perf: skip a variable reassignment + +1.2.2 / 2015-02-16 +================== + + * deps: http-errors@~1.3.1 + - Construct errors using defined constructors from `createError` + - Fix error names that are not identifiers + - Set a meaningful `name` property on constructed errors + +1.2.1 / 2015-01-19 +================== + + * Fix root path disclosure + +1.2.0 / 2015-01-05 +================== + + * Change error to 403 Forbidden when outside root + * Fix argument type errors to be consistent + * Fix path traversal vulnerability + * Use `http-errors` module directly + +1.1.0 / 2014-12-27 +================== + + * Resolve the root path argument + * Use `http-assert` module + +1.0.0 / 2014-03-23 +================== + + * Initial release diff --git a/node_modules/resolve-path/LICENSE b/node_modules/resolve-path/LICENSE new file mode 100644 index 00000000..88e217bf --- /dev/null +++ b/node_modules/resolve-path/LICENSE @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong <me@jongleberry.com> +Copyright (c) 2015-2018 Douglas Christopher Wilson <doug@somethingdoug.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/resolve-path/README.md b/node_modules/resolve-path/README.md new file mode 100644 index 00000000..aaa8bd74 --- /dev/null +++ b/node_modules/resolve-path/README.md @@ -0,0 +1,111 @@ +# resolve-path + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-image]][node-url] +[![Linux Build][travis-image]][travis-url] +[![Windows Build][appveyor-image]][appveyor-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Resolve a relative path against a root path with validation. + +This module would protect against commons attacks like `GET /../file.js` +which reaches outside the root folder. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install resolve-path +``` + +## API + +``` +var resolvePath = require('resolve-path') +``` + +### resolvePath(relativePath) + +Resolve a relative path against `process.cwd()` (the process's current working +directory) and return an absolute path. *This will throw* if the resulting resolution +seems malicious. The following are malicious: + + - The relative path is an absolute path + - The relative path contains a NULL byte + - The relative path resolves to a path outside of `process.cwd()` + - The relative path traverses above `process.cwd()` and back down + +### resolvePath(rootPath, relativePath) + +Resolve a relative path against the provided root path and return an absolute path. +*This will throw* if the resulting resolution seems malicious. The following are +malicious: + + - The relative path is an absolute path + - The relative path contains a NULL byte + - The relative path resolves to a path outside of the root path + - The relative path traverses above the root and back down + +## Example + +### Safely resolve paths in a public directory + +```js +var http = require('http') +var parseUrl = require('parseurl') +var path = require('path') +var resolvePath = require('resolve-path') + +// the public directory +var publicDir = path.join(__dirname, 'public') + +// the server +var server = http.createServer(function onRequest (req, res) { + try { + // get the pathname from the URL (decoded) + var pathname = decodeURIComponent(parseUrl(req).pathname) + + if (!pathname) { + res.statusCode = 400 + res.end('path required') + return + } + + // remove leading slash + var filename = pathname.substr(1) + + // resolve the full path + var fullpath = resolvePath(publicDir, filename) + + // echo the resolved path + res.statusCode = 200 + res.end('resolved to ' + fullpath) + } catch (err) { + res.statusCode = err.status || 500 + res.end(err.message) + } +}) + +server.listen(3000) +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/resolve-path.svg +[npm-url]: https://npmjs.org/package/resolve-path +[node-image]: https://img.shields.io/node/v/resolve-path.svg +[node-url]: http://nodejs.org/download/ +[travis-image]: https://img.shields.io/travis/pillarjs/resolve-path/master.svg?label=linux +[travis-url]: https://travis-ci.org/pillarjs/resolve-path +[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/resolve-path/master.svg?label=windows +[appveyor-url]: https://ci.appveyor.com/project/dougwilson/resolve-path +[coveralls-image]: https://img.shields.io/coveralls/pillarjs/resolve-path/master.svg +[coveralls-url]: https://coveralls.io/r/pillarjs/resolve-path?branch=master +[downloads-image]: https://img.shields.io/npm/dm/resolve-path.svg +[downloads-url]: https://npmjs.org/package/resolve-path diff --git a/node_modules/resolve-path/index.js b/node_modules/resolve-path/index.js new file mode 100644 index 00000000..e889d9b6 --- /dev/null +++ b/node_modules/resolve-path/index.js @@ -0,0 +1,88 @@ +/*! + * resolve-path + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2018 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var createError = require('http-errors') +var join = require('path').join +var normalize = require('path').normalize +var pathIsAbsolute = require('path-is-absolute') +var resolve = require('path').resolve +var sep = require('path').sep + +/** + * Module exports. + * @public + */ + +module.exports = resolvePath + +/** + * Module variables. + * @private + */ + +var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/ + +/** + * Resolve relative path against a root path + * + * @param {string} rootPath + * @param {string} relativePath + * @return {string} + * @public + */ + +function resolvePath (rootPath, relativePath) { + var path = relativePath + var root = rootPath + + // root is optional, similar to root.resolve + if (arguments.length === 1) { + path = rootPath + root = process.cwd() + } + + if (root == null) { + throw new TypeError('argument rootPath is required') + } + + if (typeof root !== 'string') { + throw new TypeError('argument rootPath must be a string') + } + + if (path == null) { + throw new TypeError('argument relativePath is required') + } + + if (typeof path !== 'string') { + throw new TypeError('argument relativePath must be a string') + } + + // containing NULL bytes is malicious + if (path.indexOf('\0') !== -1) { + throw createError(400, 'Malicious Path') + } + + // path should never be absolute + if (pathIsAbsolute.posix(path) || pathIsAbsolute.win32(path)) { + throw createError(400, 'Malicious Path') + } + + // path outside root + if (UP_PATH_REGEXP.test(normalize('.' + sep + path))) { + throw createError(403) + } + + // join the relative path + return normalize(join(resolve(root), path)) +} diff --git a/node_modules/resolve-path/node_modules/http-errors/HISTORY.md b/node_modules/resolve-path/node_modules/http-errors/HISTORY.md new file mode 100644 index 00000000..cba86e2d --- /dev/null +++ b/node_modules/resolve-path/node_modules/http-errors/HISTORY.md @@ -0,0 +1,132 @@ +2018-03-29 / 1.6.3 +================== + + * deps: depd@~1.1.2 + - perf: remove argument reassignment + * deps: setprototypeof@1.1.0 + * deps: statuses@'>= 1.3.1 < 2' + +2017-08-04 / 1.6.2 +================== + + * deps: depd@1.1.1 + - Remove unnecessary `Buffer` loading + +2017-02-20 / 1.6.1 +================== + + * deps: setprototypeof@1.0.3 + - Fix shim for old browsers + +2017-02-14 / 1.6.0 +================== + + * Accept custom 4xx and 5xx status codes in factory + * Add deprecation message to `"I'mateapot"` export + * Deprecate passing status code as anything except first argument in factory + * Deprecate using non-error status codes + * Make `message` property enumerable for `HttpError`s + +2016-11-16 / 1.5.1 +================== + + * deps: inherits@2.0.3 + - Fix issue loading in browser + * deps: setprototypeof@1.0.2 + * deps: statuses@'>= 1.3.1 < 2' + +2016-05-18 / 1.5.0 +================== + + * Support new code `421 Misdirected Request` + * Use `setprototypeof` module to replace `__proto__` setting + * deps: statuses@'>= 1.3.0 < 2' + - Add `421 Misdirected Request` + - perf: enable strict mode + * perf: enable strict mode + +2016-01-28 / 1.4.0 +================== + + * Add `HttpError` export, for `err instanceof createError.HttpError` + * deps: inherits@2.0.1 + * deps: statuses@'>= 1.2.1 < 2' + - Fix message for status 451 + - Remove incorrect nginx status code + +2015-02-02 / 1.3.1 +================== + + * Fix regression where status can be overwritten in `createError` `props` + +2015-02-01 / 1.3.0 +================== + + * Construct errors using defined constructors from `createError` + * Fix error names that are not identifiers + - `createError["I'mateapot"]` is now `createError.ImATeapot` + * Set a meaningful `name` property on constructed errors + +2014-12-09 / 1.2.8 +================== + + * Fix stack trace from exported function + * Remove `arguments.callee` usage + +2014-10-14 / 1.2.7 +================== + + * Remove duplicate line + +2014-10-02 / 1.2.6 +================== + + * Fix `expose` to be `true` for `ClientError` constructor + +2014-09-28 / 1.2.5 +================== + + * deps: statuses@1 + +2014-09-21 / 1.2.4 +================== + + * Fix dependency version to work with old `npm`s + +2014-09-21 / 1.2.3 +================== + + * deps: statuses@~1.1.0 + +2014-09-21 / 1.2.2 +================== + + * Fix publish error + +2014-09-21 / 1.2.1 +================== + + * Support Node.js 0.6 + * Use `inherits` instead of `util` + +2014-09-09 / 1.2.0 +================== + + * Fix the way inheriting functions + * Support `expose` being provided in properties argument + +2014-09-08 / 1.1.0 +================== + + * Default status to 500 + * Support provided `error` to extend + +2014-09-08 / 1.0.1 +================== + + * Fix accepting string message + +2014-09-08 / 1.0.0 +================== + + * Initial release diff --git a/node_modules/resolve-path/node_modules/http-errors/LICENSE b/node_modules/resolve-path/node_modules/http-errors/LICENSE new file mode 100644 index 00000000..82af4df5 --- /dev/null +++ b/node_modules/resolve-path/node_modules/http-errors/LICENSE @@ -0,0 +1,23 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com +Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/resolve-path/node_modules/http-errors/README.md b/node_modules/resolve-path/node_modules/http-errors/README.md new file mode 100644 index 00000000..79663d82 --- /dev/null +++ b/node_modules/resolve-path/node_modules/http-errors/README.md @@ -0,0 +1,135 @@ +# http-errors + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Create HTTP errors for Express, Koa, Connect, etc. with ease. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install http-errors +``` + +## Example + +```js +var createError = require('http-errors') +var express = require('express') +var app = express() + +app.use(function (req, res, next) { + if (!req.user) return next(createError(401, 'Please login to view this page.')) + next() +}) +``` + +## API + +This is the current API, currently extracted from Koa and subject to change. + +All errors inherit from JavaScript `Error` and the exported `createError.HttpError`. + +### Error Properties + +- `expose` - can be used to signal if `message` should be sent to the client, + defaulting to `false` when `status` >= 500 +- `headers` - can be an object of header names to values to be sent to the + client, defaulting to `undefined`. When defined, the key names should all + be lower-cased +- `message` - the traditional error message, which should be kept short and all + single line +- `status` - the status code of the error, mirroring `statusCode` for general + compatibility +- `statusCode` - the status code of the error, defaulting to `500` + +### createError([status], [message], [properties]) + +<!-- eslint-disable no-undef, no-unused-vars --> + +```js +var err = createError(404, 'This video does not exist!') +``` + +- `status: 500` - the status code as a number +- `message` - the message of the error, defaulting to node's text for that status code. +- `properties` - custom properties to attach to the object + +### new createError\[code || name\](\[msg]\)) + +<!-- eslint-disable no-undef, no-unused-vars --> + +```js +var err = new createError.NotFound() +``` + +- `code` - the status code as a number +- `name` - the name of the error as a "bumpy case", i.e. `NotFound` or `InternalServerError`. + +#### List of all constructors + +|Status Code|Constructor Name | +|-----------|-----------------------------| +|400 |BadRequest | +|401 |Unauthorized | +|402 |PaymentRequired | +|403 |Forbidden | +|404 |NotFound | +|405 |MethodNotAllowed | +|406 |NotAcceptable | +|407 |ProxyAuthenticationRequired | +|408 |RequestTimeout | +|409 |Conflict | +|410 |Gone | +|411 |LengthRequired | +|412 |PreconditionFailed | +|413 |PayloadTooLarge | +|414 |URITooLong | +|415 |UnsupportedMediaType | +|416 |RangeNotSatisfiable | +|417 |ExpectationFailed | +|418 |ImATeapot | +|421 |MisdirectedRequest | +|422 |UnprocessableEntity | +|423 |Locked | +|424 |FailedDependency | +|425 |UnorderedCollection | +|426 |UpgradeRequired | +|428 |PreconditionRequired | +|429 |TooManyRequests | +|431 |RequestHeaderFieldsTooLarge | +|451 |UnavailableForLegalReasons | +|500 |InternalServerError | +|501 |NotImplemented | +|502 |BadGateway | +|503 |ServiceUnavailable | +|504 |GatewayTimeout | +|505 |HTTPVersionNotSupported | +|506 |VariantAlsoNegotiates | +|507 |InsufficientStorage | +|508 |LoopDetected | +|509 |BandwidthLimitExceeded | +|510 |NotExtended | +|511 |NetworkAuthenticationRequired| + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/http-errors.svg +[npm-url]: https://npmjs.org/package/http-errors +[node-version-image]: https://img.shields.io/node/v/http-errors.svg +[node-version-url]: https://nodejs.org/en/download/ +[travis-image]: https://img.shields.io/travis/jshttp/http-errors.svg +[travis-url]: https://travis-ci.org/jshttp/http-errors +[coveralls-image]: https://img.shields.io/coveralls/jshttp/http-errors.svg +[coveralls-url]: https://coveralls.io/r/jshttp/http-errors +[downloads-image]: https://img.shields.io/npm/dm/http-errors.svg +[downloads-url]: https://npmjs.org/package/http-errors diff --git a/node_modules/resolve-path/node_modules/http-errors/index.js b/node_modules/resolve-path/node_modules/http-errors/index.js new file mode 100644 index 00000000..9509303e --- /dev/null +++ b/node_modules/resolve-path/node_modules/http-errors/index.js @@ -0,0 +1,260 @@ +/*! + * http-errors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var deprecate = require('depd')('http-errors') +var setPrototypeOf = require('setprototypeof') +var statuses = require('statuses') +var inherits = require('inherits') + +/** + * Module exports. + * @public + */ + +module.exports = createError +module.exports.HttpError = createHttpErrorConstructor() + +// Populate exports for all constructors +populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError) + +/** + * Get the code class of a status code. + * @private + */ + +function codeClass (status) { + return Number(String(status).charAt(0) + '00') +} + +/** + * Create a new HTTP Error. + * + * @returns {Error} + * @public + */ + +function createError () { + // so much arity going on ~_~ + var err + var msg + var status = 500 + var props = {} + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i] + if (arg instanceof Error) { + err = arg + status = err.status || err.statusCode || status + continue + } + switch (typeof arg) { + case 'string': + msg = arg + break + case 'number': + status = arg + if (i !== 0) { + deprecate('non-first-argument status code; replace with createError(' + arg + ', ...)') + } + break + case 'object': + props = arg + break + } + } + + if (typeof status === 'number' && (status < 400 || status >= 600)) { + deprecate('non-error status code; use only 4xx or 5xx status codes') + } + + if (typeof status !== 'number' || + (!statuses[status] && (status < 400 || status >= 600))) { + status = 500 + } + + // constructor + var HttpError = createError[status] || createError[codeClass(status)] + + if (!err) { + // create error + err = HttpError + ? new HttpError(msg) + : new Error(msg || statuses[status]) + Error.captureStackTrace(err, createError) + } + + if (!HttpError || !(err instanceof HttpError) || err.status !== status) { + // add properties to generic error + err.expose = status < 500 + err.status = err.statusCode = status + } + + for (var key in props) { + if (key !== 'status' && key !== 'statusCode') { + err[key] = props[key] + } + } + + return err +} + +/** + * Create HTTP error abstract base class. + * @private + */ + +function createHttpErrorConstructor () { + function HttpError () { + throw new TypeError('cannot construct abstract class') + } + + inherits(HttpError, Error) + + return HttpError +} + +/** + * Create a constructor for a client error. + * @private + */ + +function createClientErrorConstructor (HttpError, name, code) { + var className = name.match(/Error$/) ? name : name + 'Error' + + function ClientError (message) { + // create the error object + var msg = message != null ? message : statuses[code] + var err = new Error(msg) + + // capture a stack trace to the construction point + Error.captureStackTrace(err, ClientError) + + // adjust the [[Prototype]] + setPrototypeOf(err, ClientError.prototype) + + // redefine the error message + Object.defineProperty(err, 'message', { + enumerable: true, + configurable: true, + value: msg, + writable: true + }) + + // redefine the error name + Object.defineProperty(err, 'name', { + enumerable: false, + configurable: true, + value: className, + writable: true + }) + + return err + } + + inherits(ClientError, HttpError) + + ClientError.prototype.status = code + ClientError.prototype.statusCode = code + ClientError.prototype.expose = true + + return ClientError +} + +/** + * Create a constructor for a server error. + * @private + */ + +function createServerErrorConstructor (HttpError, name, code) { + var className = name.match(/Error$/) ? name : name + 'Error' + + function ServerError (message) { + // create the error object + var msg = message != null ? message : statuses[code] + var err = new Error(msg) + + // capture a stack trace to the construction point + Error.captureStackTrace(err, ServerError) + + // adjust the [[Prototype]] + setPrototypeOf(err, ServerError.prototype) + + // redefine the error message + Object.defineProperty(err, 'message', { + enumerable: true, + configurable: true, + value: msg, + writable: true + }) + + // redefine the error name + Object.defineProperty(err, 'name', { + enumerable: false, + configurable: true, + value: className, + writable: true + }) + + return err + } + + inherits(ServerError, HttpError) + + ServerError.prototype.status = code + ServerError.prototype.statusCode = code + ServerError.prototype.expose = false + + return ServerError +} + +/** + * Populate the exports object with constructors for every error class. + * @private + */ + +function populateConstructorExports (exports, codes, HttpError) { + codes.forEach(function forEachCode (code) { + var CodeError + var name = toIdentifier(statuses[code]) + + switch (codeClass(code)) { + case 400: + CodeError = createClientErrorConstructor(HttpError, name, code) + break + case 500: + CodeError = createServerErrorConstructor(HttpError, name, code) + break + } + + if (CodeError) { + // export the constructor + exports[code] = CodeError + exports[name] = CodeError + } + }) + + // backwards-compatibility + exports["I'mateapot"] = deprecate.function(exports.ImATeapot, + '"I\'mateapot"; use "ImATeapot" instead') +} + +/** + * Convert a string of words to a JavaScript identifier. + * @private + */ + +function toIdentifier (str) { + return str.split(' ').map(function (token) { + return token.slice(0, 1).toUpperCase() + token.slice(1) + }).join('').replace(/[^ _0-9a-z]/gi, '') +} diff --git a/node_modules/resolve-path/node_modules/http-errors/package.json b/node_modules/resolve-path/node_modules/http-errors/package.json new file mode 100644 index 00000000..a8d28e4f --- /dev/null +++ b/node_modules/resolve-path/node_modules/http-errors/package.json @@ -0,0 +1,48 @@ +{ + "name": "http-errors", + "description": "Create HTTP error objects", + "version": "1.6.3", + "author": "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)", + "contributors": [ + "Alan Plum <me@pluma.io>", + "Douglas Christopher Wilson <doug@somethingdoug.com>" + ], + "license": "MIT", + "repository": "jshttp/http-errors", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "devDependencies": { + "eslint": "4.18.1", + "eslint-config-standard": "11.0.0", + "eslint-plugin-import": "2.9.0", + "eslint-plugin-markdown": "1.0.0-beta.6", + "eslint-plugin-node": "6.0.1", + "eslint-plugin-promise": "3.6.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "1.21.5" + }, + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot" + }, + "keywords": [ + "http", + "error" + ], + "files": [ + "index.js", + "HISTORY.md", + "LICENSE", + "README.md" + ] +} diff --git a/node_modules/resolve-path/package.json b/node_modules/resolve-path/package.json new file mode 100644 index 00000000..1823da0f --- /dev/null +++ b/node_modules/resolve-path/package.json @@ -0,0 +1,46 @@ +{ + "name": "resolve-path", + "description": "Resolve a relative path against a root path with validation", + "version": "1.4.0", + "author": "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)", + "contributors": [ + "Douglas Christopher Wilson <doug@somethingdoug.com>" + ], + "license": "MIT", + "repository": "pillarjs/resolve-path", + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "devDependencies": { + "eslint": "3.19.0", + "eslint-config-standard": "10.2.1", + "eslint-plugin-import": "2.8.0", + "eslint-plugin-markdown": "1.0.0-beta.6", + "eslint-plugin-node": "5.2.1", + "eslint-plugin-promise": "3.6.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "2.5.3" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" + }, + "keywords": [ + "resolve", + "path", + "safe" + ] +} |
