ya funcionando el mcp, vamos a continuar
This commit is contained in:
54
mcp/node_modules/send/HISTORY.md
generated
vendored
54
mcp/node_modules/send/HISTORY.md
generated
vendored
@@ -1,3 +1,57 @@
|
||||
1.2.0 / 2025-03-27
|
||||
==================
|
||||
|
||||
* deps:
|
||||
* `mime-types@^3.0.1`
|
||||
* `fresh@^2.0.0`
|
||||
* removed `destroy`
|
||||
* remove `getHeaderNames()` polyfill and refactor `clearHeaders()`
|
||||
|
||||
1.1.0 / 2024-09-10
|
||||
==================
|
||||
|
||||
* Changes from 0.19.0
|
||||
|
||||
1.0.0 / 2024-07-25
|
||||
==================
|
||||
|
||||
* Drop support for Node.js <18.0
|
||||
* `statuses@^2.0.1`
|
||||
* `range-parser@^1.2.1`
|
||||
* `on-finished@^2.4.1`
|
||||
* `ms@^2.1.3`
|
||||
* `mime-types@^2.1.35`
|
||||
* `http-errors@^2.0.0`
|
||||
* `fresh@^0.5.2`
|
||||
* `etag@^1.8.1`
|
||||
* `escape-html@^1.0.3`
|
||||
* `encodeurl@^2.0.0`
|
||||
* `destroy@^1.2.0`
|
||||
* `debug@^4.3.5`
|
||||
|
||||
1.0.0-beta.2 / 2024-03-04
|
||||
=========================
|
||||
|
||||
* Changes from 0.18.0
|
||||
|
||||
1.0.0-beta.1 / 2022-02-04
|
||||
=========================
|
||||
|
||||
* Drop support for Node.js 0.8
|
||||
* Remove `hidden` option -- use `dotfiles` option
|
||||
* Remove `from` alias to `root` -- use `root` directly
|
||||
* Remove `send.etag()` -- use `etag` in `options`
|
||||
* Remove `send.index()` -- use `index` in `options`
|
||||
* Remove `send.maxage()` -- use `maxAge` in `options`
|
||||
* Remove `send.root()` -- use `root` in `options`
|
||||
* Use `mime-types` for file to content type mapping -- removed `send.mime`
|
||||
* deps: debug@3.1.0
|
||||
- Add `DEBUG_HIDE_DATE` environment variable
|
||||
- Change timer to per-namespace instead of global
|
||||
- Change non-TTY date format
|
||||
- Remove `DEBUG_FD` environment variable support
|
||||
- Support 256 namespace colors
|
||||
|
||||
0.19.0 / 2024-09-10
|
||||
===================
|
||||
|
||||
|
||||
36
mcp/node_modules/send/README.md
generated
vendored
36
mcp/node_modules/send/README.md
generated
vendored
@@ -2,8 +2,7 @@
|
||||
|
||||
[![NPM Version][npm-version-image]][npm-url]
|
||||
[![NPM Downloads][npm-downloads-image]][npm-url]
|
||||
[![Linux Build][github-actions-ci-image]][github-actions-ci-url]
|
||||
[![Windows Build][appveyor-image]][appveyor-url]
|
||||
[![CI][github-actions-ci-image]][github-actions-ci-url]
|
||||
[![Test Coverage][coveralls-image]][coveralls-url]
|
||||
|
||||
Send is a library for streaming files from the file system as a http response
|
||||
@@ -55,7 +54,7 @@ Set how "dotfiles" are treated when encountered. A dotfile is a file
|
||||
or directory that begins with a dot ("."). Note this check is done on
|
||||
the path itself without checking if the path actually exists on the
|
||||
disk. If `root` is specified, only the dotfiles above the root are
|
||||
checked (i.e. the root itself can be within a dotfile when when set
|
||||
checked (i.e. the root itself can be within a dotfile when set
|
||||
to "deny").
|
||||
|
||||
- `'allow'` No special treatment for dotfiles.
|
||||
@@ -133,15 +132,6 @@ The `SendStream` is an event emitter and will emit the following events:
|
||||
The `pipe` method is used to pipe the response into the Node.js HTTP response
|
||||
object, typically `send(req, path, options).pipe(res)`.
|
||||
|
||||
### .mime
|
||||
|
||||
The `mime` export is the global instance of of the
|
||||
[`mime` npm module](https://www.npmjs.com/package/mime).
|
||||
|
||||
This is used to configure the MIME types that are associated with file extensions
|
||||
as well as other options for how to resolve the MIME type of a file (like the
|
||||
default type to use for an unknown file extension).
|
||||
|
||||
## Error-handling
|
||||
|
||||
By default when no `error` listeners are present an automatic response will be
|
||||
@@ -210,20 +200,22 @@ server.listen(3000)
|
||||
### Custom file types
|
||||
|
||||
```js
|
||||
var extname = require('path').extname
|
||||
var http = require('http')
|
||||
var parseUrl = require('parseurl')
|
||||
var send = require('send')
|
||||
|
||||
// Default unknown types to text/plain
|
||||
send.mime.default_type = 'text/plain'
|
||||
|
||||
// Add a custom type
|
||||
send.mime.define({
|
||||
'application/x-my-type': ['x-mt', 'x-mtt']
|
||||
})
|
||||
|
||||
var server = http.createServer(function onRequest (req, res) {
|
||||
send(req, parseUrl(req).pathname, { root: '/www/public' })
|
||||
.on('headers', function (res, path) {
|
||||
switch (extname(path)) {
|
||||
case '.x-mt':
|
||||
case '.x-mtt':
|
||||
// custom type for these extensions
|
||||
res.setHeader('Content-Type', 'application/x-my-type')
|
||||
break
|
||||
}
|
||||
})
|
||||
.pipe(res)
|
||||
})
|
||||
|
||||
@@ -232,7 +224,7 @@ server.listen(3000)
|
||||
|
||||
### Custom directory index view
|
||||
|
||||
This is a example of serving up a structure of directories with a
|
||||
This is an example of serving up a structure of directories with a
|
||||
custom function to render a listing of a directory.
|
||||
|
||||
```js
|
||||
@@ -314,8 +306,6 @@ server.listen(3000)
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
||||
[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/send/master?label=windows
|
||||
[appveyor-url]: https://ci.appveyor.com/project/dougwilson/send
|
||||
[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/send/master
|
||||
[coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master
|
||||
[github-actions-ci-image]: https://badgen.net/github/checks/pillarjs/send/master?label=linux
|
||||
|
||||
24
mcp/node_modules/send/SECURITY.md
generated
vendored
24
mcp/node_modules/send/SECURITY.md
generated
vendored
@@ -1,24 +0,0 @@
|
||||
# Security Policies and Procedures
|
||||
|
||||
## Reporting a Bug
|
||||
|
||||
The `send` team and community take all security bugs seriously. Thank you
|
||||
for improving the security of Express. We appreciate your efforts and
|
||||
responsible disclosure and will make every effort to acknowledge your
|
||||
contributions.
|
||||
|
||||
Report security bugs by emailing the current owner(s) of `send`. This information
|
||||
can be found in the npm registry using the command `npm owner ls send`.
|
||||
If unsure or unable to get the information from the above, open an issue
|
||||
in the [project issue tracker](https://github.com/pillarjs/send/issues)
|
||||
asking for the current contact information.
|
||||
|
||||
To ensure the timely response to your report, please ensure that the entirety
|
||||
of the report is contained within the email body and not solely behind a web
|
||||
link or an attachment.
|
||||
|
||||
At least one owner will acknowledge your email within 48 hours, and will send a
|
||||
more detailed response within 48 hours indicating the next steps in handling
|
||||
your report. After the initial reply to your report, the owners will
|
||||
endeavor to keep you informed of the progress towards a fix and full
|
||||
announcement, and may ask for additional information or guidance.
|
||||
173
mcp/node_modules/send/index.js
generated
vendored
173
mcp/node_modules/send/index.js
generated
vendored
@@ -14,14 +14,12 @@
|
||||
|
||||
var createError = require('http-errors')
|
||||
var debug = require('debug')('send')
|
||||
var deprecate = require('depd')('send')
|
||||
var destroy = require('destroy')
|
||||
var encodeUrl = require('encodeurl')
|
||||
var escapeHtml = require('escape-html')
|
||||
var etag = require('etag')
|
||||
var fresh = require('fresh')
|
||||
var fs = require('fs')
|
||||
var mime = require('mime')
|
||||
var mime = require('mime-types')
|
||||
var ms = require('ms')
|
||||
var onFinished = require('on-finished')
|
||||
var parseRange = require('range-parser')
|
||||
@@ -68,7 +66,6 @@ var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/
|
||||
*/
|
||||
|
||||
module.exports = send
|
||||
module.exports.mime = mime
|
||||
|
||||
/**
|
||||
* Return a `SendStream` for `req` and `path`.
|
||||
@@ -122,17 +119,6 @@ function SendStream (req, path, options) {
|
||||
throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"')
|
||||
}
|
||||
|
||||
this._hidden = Boolean(opts.hidden)
|
||||
|
||||
if (opts.hidden !== undefined) {
|
||||
deprecate('hidden: use dotfiles: \'' + (this._hidden ? 'allow' : 'ignore') + '\' instead')
|
||||
}
|
||||
|
||||
// legacy support
|
||||
if (opts.dotfiles === undefined) {
|
||||
this._dotfiles = undefined
|
||||
}
|
||||
|
||||
this._extensions = opts.extensions !== undefined
|
||||
? normalizeList(opts.extensions, 'extensions option')
|
||||
: []
|
||||
@@ -160,10 +146,6 @@ function SendStream (req, path, options) {
|
||||
this._root = opts.root
|
||||
? resolve(opts.root)
|
||||
: null
|
||||
|
||||
if (!this._root && opts.from) {
|
||||
this.from(opts.from)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -172,90 +154,6 @@ function SendStream (req, path, options) {
|
||||
|
||||
util.inherits(SendStream, Stream)
|
||||
|
||||
/**
|
||||
* Enable or disable etag generation.
|
||||
*
|
||||
* @param {Boolean} val
|
||||
* @return {SendStream}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SendStream.prototype.etag = deprecate.function(function etag (val) {
|
||||
this._etag = Boolean(val)
|
||||
debug('etag %s', this._etag)
|
||||
return this
|
||||
}, 'send.etag: pass etag as option')
|
||||
|
||||
/**
|
||||
* Enable or disable "hidden" (dot) files.
|
||||
*
|
||||
* @param {Boolean} path
|
||||
* @return {SendStream}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SendStream.prototype.hidden = deprecate.function(function hidden (val) {
|
||||
this._hidden = Boolean(val)
|
||||
this._dotfiles = undefined
|
||||
debug('hidden %s', this._hidden)
|
||||
return this
|
||||
}, 'send.hidden: use dotfiles option')
|
||||
|
||||
/**
|
||||
* Set index `paths`, set to a falsy
|
||||
* value to disable index support.
|
||||
*
|
||||
* @param {String|Boolean|Array} paths
|
||||
* @return {SendStream}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SendStream.prototype.index = deprecate.function(function index (paths) {
|
||||
var index = !paths ? [] : normalizeList(paths, 'paths argument')
|
||||
debug('index %o', paths)
|
||||
this._index = index
|
||||
return this
|
||||
}, 'send.index: pass index as option')
|
||||
|
||||
/**
|
||||
* Set root `path`.
|
||||
*
|
||||
* @param {String} path
|
||||
* @return {SendStream}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SendStream.prototype.root = function root (path) {
|
||||
this._root = resolve(String(path))
|
||||
debug('root %s', this._root)
|
||||
return this
|
||||
}
|
||||
|
||||
SendStream.prototype.from = deprecate.function(SendStream.prototype.root,
|
||||
'send.from: pass root as option')
|
||||
|
||||
SendStream.prototype.root = deprecate.function(SendStream.prototype.root,
|
||||
'send.root: pass root as option')
|
||||
|
||||
/**
|
||||
* Set max-age to `maxAge`.
|
||||
*
|
||||
* @param {Number} maxAge
|
||||
* @return {SendStream}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
SendStream.prototype.maxage = deprecate.function(function maxage (maxAge) {
|
||||
this._maxage = typeof maxAge === 'string'
|
||||
? ms(maxAge)
|
||||
: Number(maxAge)
|
||||
this._maxage = !isNaN(this._maxage)
|
||||
? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)
|
||||
: 0
|
||||
debug('max-age %d', this._maxage)
|
||||
return this
|
||||
}, 'send.maxage: pass maxAge as option')
|
||||
|
||||
/**
|
||||
* Emit error with `status`.
|
||||
*
|
||||
@@ -558,17 +456,8 @@ SendStream.prototype.pipe = function pipe (res) {
|
||||
|
||||
// dotfile handling
|
||||
if (containsDotFile(parts)) {
|
||||
var access = this._dotfiles
|
||||
|
||||
// legacy support
|
||||
if (access === undefined) {
|
||||
access = parts[parts.length - 1][0] === '.'
|
||||
? (this._hidden ? 'allow' : 'ignore')
|
||||
: 'allow'
|
||||
}
|
||||
|
||||
debug('%s dotfile "%s"', access, path)
|
||||
switch (access) {
|
||||
debug('%s dotfile "%s"', this._dotfiles, path)
|
||||
switch (this._dotfiles) {
|
||||
case 'allow':
|
||||
break
|
||||
case 'deny':
|
||||
@@ -607,7 +496,7 @@ SendStream.prototype.send = function send (path, stat) {
|
||||
var ranges = req.headers.range
|
||||
var offset = options.start || 0
|
||||
|
||||
if (headersSent(res)) {
|
||||
if (res.headersSent) {
|
||||
// impossible to send now
|
||||
this.headersAlreadySent()
|
||||
return
|
||||
@@ -714,12 +603,14 @@ SendStream.prototype.sendFile = function sendFile (path) {
|
||||
|
||||
debug('stat "%s"', path)
|
||||
fs.stat(path, function onstat (err, stat) {
|
||||
if (err && err.code === 'ENOENT' && !extname(path) && path[path.length - 1] !== sep) {
|
||||
var pathEndsWithSep = path[path.length - 1] === sep
|
||||
if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) {
|
||||
// not found, check extensions
|
||||
return next(err)
|
||||
}
|
||||
if (err) return self.onStatError(err)
|
||||
if (stat.isDirectory()) return self.redirect(path)
|
||||
if (pathEndsWithSep) return self.error(404)
|
||||
self.emit('file', path, stat)
|
||||
self.send(path, stat)
|
||||
})
|
||||
@@ -792,7 +683,7 @@ SendStream.prototype.stream = function stream (path, options) {
|
||||
|
||||
// cleanup
|
||||
function cleanup () {
|
||||
destroy(stream, true)
|
||||
stream.destroy()
|
||||
}
|
||||
|
||||
// response finished, cleanup
|
||||
@@ -826,17 +717,11 @@ SendStream.prototype.type = function type (path) {
|
||||
|
||||
if (res.getHeader('Content-Type')) return
|
||||
|
||||
var type = mime.lookup(path)
|
||||
|
||||
if (!type) {
|
||||
debug('no content-type')
|
||||
return
|
||||
}
|
||||
|
||||
var charset = mime.charsets.lookup(type)
|
||||
var ext = extname(path)
|
||||
var type = mime.contentType(ext) || 'application/octet-stream'
|
||||
|
||||
debug('content-type %s', type)
|
||||
res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : ''))
|
||||
res.setHeader('Content-Type', type)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -890,10 +775,8 @@ SendStream.prototype.setHeader = function setHeader (path, stat) {
|
||||
*/
|
||||
|
||||
function clearHeaders (res) {
|
||||
var headers = getHeaderNames(res)
|
||||
|
||||
for (var i = 0; i < headers.length; i++) {
|
||||
res.removeHeader(headers[i])
|
||||
for (const header of res.getHeaderNames()) {
|
||||
res.removeHeader(header)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1001,24 +884,10 @@ function decode (path) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the header names on a respnse.
|
||||
*
|
||||
* @param {object} res
|
||||
* @returns {array[string]}
|
||||
* @private
|
||||
*/
|
||||
|
||||
function getHeaderNames (res) {
|
||||
return typeof res.getHeaderNames !== 'function'
|
||||
? Object.keys(res._headers || {})
|
||||
: res.getHeaderNames()
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if emitter has listeners of a given type.
|
||||
*
|
||||
* The way to do this check is done three different ways in Node.js >= 0.8
|
||||
* The way to do this check is done three different ways in Node.js >= 0.10
|
||||
* so this consolidates them into a minimal set using instance methods.
|
||||
*
|
||||
* @param {EventEmitter} emitter
|
||||
@@ -1035,20 +904,6 @@ function hasListeners (emitter, type) {
|
||||
return count > 0
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the response headers have been sent.
|
||||
*
|
||||
* @param {object} res
|
||||
* @returns {boolean}
|
||||
* @private
|
||||
*/
|
||||
|
||||
function headersSent (res) {
|
||||
return typeof res.headersSent !== 'boolean'
|
||||
? Boolean(res._header)
|
||||
: res.headersSent
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize the index option into an array.
|
||||
*
|
||||
|
||||
14
mcp/node_modules/send/node_modules/encodeurl/HISTORY.md
generated
vendored
14
mcp/node_modules/send/node_modules/encodeurl/HISTORY.md
generated
vendored
@@ -1,14 +0,0 @@
|
||||
1.0.2 / 2018-01-21
|
||||
==================
|
||||
|
||||
* Fix encoding `%` as last character
|
||||
|
||||
1.0.1 / 2016-06-09
|
||||
==================
|
||||
|
||||
* Fix encoding unpaired surrogates at start/end of string
|
||||
|
||||
1.0.0 / 2016-06-08
|
||||
==================
|
||||
|
||||
* Initial release
|
||||
22
mcp/node_modules/send/node_modules/encodeurl/LICENSE
generated
vendored
22
mcp/node_modules/send/node_modules/encodeurl/LICENSE
generated
vendored
@@ -1,22 +0,0 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2016 Douglas Christopher Wilson
|
||||
|
||||
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.
|
||||
128
mcp/node_modules/send/node_modules/encodeurl/README.md
generated
vendored
128
mcp/node_modules/send/node_modules/encodeurl/README.md
generated
vendored
@@ -1,128 +0,0 @@
|
||||
# encodeurl
|
||||
|
||||
[![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]
|
||||
|
||||
Encode a URL to a percent-encoded form, excluding already-encoded sequences
|
||||
|
||||
## 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 encodeurl
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
```js
|
||||
var encodeUrl = require('encodeurl')
|
||||
```
|
||||
|
||||
### encodeUrl(url)
|
||||
|
||||
Encode a URL to a percent-encoded form, excluding already-encoded sequences.
|
||||
|
||||
This function will take an already-encoded URL and encode all the non-URL
|
||||
code points (as UTF-8 byte sequences). This function will not encode the
|
||||
"%" character unless it is not part of a valid sequence (`%20` will be
|
||||
left as-is, but `%foo` will be encoded as `%25foo`).
|
||||
|
||||
This encode is meant to be "safe" and does not throw errors. It will try as
|
||||
hard as it can to properly encode the given URL, including replacing any raw,
|
||||
unpaired surrogate pairs with the Unicode replacement character prior to
|
||||
encoding.
|
||||
|
||||
This function is _similar_ to the intrinsic function `encodeURI`, except it
|
||||
will not encode the `%` character if that is part of a valid sequence, will
|
||||
not encode `[` and `]` (for IPv6 hostnames) and will replace raw, unpaired
|
||||
surrogate pairs with the Unicode replacement character (instead of throwing).
|
||||
|
||||
## Examples
|
||||
|
||||
### Encode a URL containing user-controled data
|
||||
|
||||
```js
|
||||
var encodeUrl = require('encodeurl')
|
||||
var escapeHtml = require('escape-html')
|
||||
|
||||
http.createServer(function onRequest (req, res) {
|
||||
// get encoded form of inbound url
|
||||
var url = encodeUrl(req.url)
|
||||
|
||||
// create html message
|
||||
var body = '<p>Location ' + escapeHtml(url) + ' not found</p>'
|
||||
|
||||
// send a 404
|
||||
res.statusCode = 404
|
||||
res.setHeader('Content-Type', 'text/html; charset=UTF-8')
|
||||
res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8')))
|
||||
res.end(body, 'utf-8')
|
||||
})
|
||||
```
|
||||
|
||||
### Encode a URL for use in a header field
|
||||
|
||||
```js
|
||||
var encodeUrl = require('encodeurl')
|
||||
var escapeHtml = require('escape-html')
|
||||
var url = require('url')
|
||||
|
||||
http.createServer(function onRequest (req, res) {
|
||||
// parse inbound url
|
||||
var href = url.parse(req)
|
||||
|
||||
// set new host for redirect
|
||||
href.host = 'localhost'
|
||||
href.protocol = 'https:'
|
||||
href.slashes = true
|
||||
|
||||
// create location header
|
||||
var location = encodeUrl(url.format(href))
|
||||
|
||||
// create html message
|
||||
var body = '<p>Redirecting to new site: ' + escapeHtml(location) + '</p>'
|
||||
|
||||
// send a 301
|
||||
res.statusCode = 301
|
||||
res.setHeader('Content-Type', 'text/html; charset=UTF-8')
|
||||
res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8')))
|
||||
res.setHeader('Location', location)
|
||||
res.end(body, 'utf-8')
|
||||
})
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
```sh
|
||||
$ npm test
|
||||
$ npm run lint
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986]
|
||||
- [WHATWG URL Living Standard][whatwg-url]
|
||||
|
||||
[rfc-3986]: https://tools.ietf.org/html/rfc3986
|
||||
[whatwg-url]: https://url.spec.whatwg.org/
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
||||
[npm-image]: https://img.shields.io/npm/v/encodeurl.svg
|
||||
[npm-url]: https://npmjs.org/package/encodeurl
|
||||
[node-version-image]: https://img.shields.io/node/v/encodeurl.svg
|
||||
[node-version-url]: https://nodejs.org/en/download
|
||||
[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg
|
||||
[travis-url]: https://travis-ci.org/pillarjs/encodeurl
|
||||
[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg
|
||||
[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master
|
||||
[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg
|
||||
[downloads-url]: https://npmjs.org/package/encodeurl
|
||||
60
mcp/node_modules/send/node_modules/encodeurl/index.js
generated
vendored
60
mcp/node_modules/send/node_modules/encodeurl/index.js
generated
vendored
@@ -1,60 +0,0 @@
|
||||
/*!
|
||||
* encodeurl
|
||||
* Copyright(c) 2016 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
* @public
|
||||
*/
|
||||
|
||||
module.exports = encodeUrl
|
||||
|
||||
/**
|
||||
* RegExp to match non-URL code points, *after* encoding (i.e. not including "%")
|
||||
* and including invalid escape sequences.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g
|
||||
|
||||
/**
|
||||
* RegExp to match unmatched surrogate pair.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g
|
||||
|
||||
/**
|
||||
* String to replace unmatched surrogate pair with.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2'
|
||||
|
||||
/**
|
||||
* Encode a URL to a percent-encoded form, excluding already-encoded sequences.
|
||||
*
|
||||
* This function will take an already-encoded URL and encode all the non-URL
|
||||
* code points. This function will not encode the "%" character unless it is
|
||||
* not part of a valid sequence (`%20` will be left as-is, but `%foo` will
|
||||
* be encoded as `%25foo`).
|
||||
*
|
||||
* This encode is meant to be "safe" and does not throw errors. It will try as
|
||||
* hard as it can to properly encode the given URL, including replacing any raw,
|
||||
* unpaired surrogate pairs with the Unicode replacement character prior to
|
||||
* encoding.
|
||||
*
|
||||
* @param {string} url
|
||||
* @return {string}
|
||||
* @public
|
||||
*/
|
||||
|
||||
function encodeUrl (url) {
|
||||
return String(url)
|
||||
.replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)
|
||||
.replace(ENCODE_CHARS_REGEXP, encodeURI)
|
||||
}
|
||||
40
mcp/node_modules/send/node_modules/encodeurl/package.json
generated
vendored
40
mcp/node_modules/send/node_modules/encodeurl/package.json
generated
vendored
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"name": "encodeurl",
|
||||
"description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences",
|
||||
"version": "1.0.2",
|
||||
"contributors": [
|
||||
"Douglas Christopher Wilson <doug@somethingdoug.com>"
|
||||
],
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"encode",
|
||||
"encodeurl",
|
||||
"url"
|
||||
],
|
||||
"repository": "pillarjs/encodeurl",
|
||||
"devDependencies": {
|
||||
"eslint": "3.19.0",
|
||||
"eslint-config-standard": "10.2.1",
|
||||
"eslint-plugin-import": "2.8.0",
|
||||
"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": [
|
||||
"LICENSE",
|
||||
"HISTORY.md",
|
||||
"README.md",
|
||||
"index.js"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"test": "mocha --reporter spec --bail --check-leaks test/",
|
||||
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
|
||||
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
|
||||
}
|
||||
}
|
||||
162
mcp/node_modules/send/node_modules/ms/index.js
generated
vendored
162
mcp/node_modules/send/node_modules/ms/index.js
generated
vendored
@@ -1,162 +0,0 @@
|
||||
/**
|
||||
* Helpers.
|
||||
*/
|
||||
|
||||
var s = 1000;
|
||||
var m = s * 60;
|
||||
var h = m * 60;
|
||||
var d = h * 24;
|
||||
var w = d * 7;
|
||||
var y = d * 365.25;
|
||||
|
||||
/**
|
||||
* Parse or format the given `val`.
|
||||
*
|
||||
* Options:
|
||||
*
|
||||
* - `long` verbose formatting [false]
|
||||
*
|
||||
* @param {String|Number} val
|
||||
* @param {Object} [options]
|
||||
* @throws {Error} throw an error if val is not a non-empty string or a number
|
||||
* @return {String|Number}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
module.exports = function (val, options) {
|
||||
options = options || {};
|
||||
var type = typeof val;
|
||||
if (type === 'string' && val.length > 0) {
|
||||
return parse(val);
|
||||
} else if (type === 'number' && isFinite(val)) {
|
||||
return options.long ? fmtLong(val) : fmtShort(val);
|
||||
}
|
||||
throw new Error(
|
||||
'val is not a non-empty string or a valid number. val=' +
|
||||
JSON.stringify(val)
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Parse the given `str` and return milliseconds.
|
||||
*
|
||||
* @param {String} str
|
||||
* @return {Number}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function parse(str) {
|
||||
str = String(str);
|
||||
if (str.length > 100) {
|
||||
return;
|
||||
}
|
||||
var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
|
||||
str
|
||||
);
|
||||
if (!match) {
|
||||
return;
|
||||
}
|
||||
var n = parseFloat(match[1]);
|
||||
var type = (match[2] || 'ms').toLowerCase();
|
||||
switch (type) {
|
||||
case 'years':
|
||||
case 'year':
|
||||
case 'yrs':
|
||||
case 'yr':
|
||||
case 'y':
|
||||
return n * y;
|
||||
case 'weeks':
|
||||
case 'week':
|
||||
case 'w':
|
||||
return n * w;
|
||||
case 'days':
|
||||
case 'day':
|
||||
case 'd':
|
||||
return n * d;
|
||||
case 'hours':
|
||||
case 'hour':
|
||||
case 'hrs':
|
||||
case 'hr':
|
||||
case 'h':
|
||||
return n * h;
|
||||
case 'minutes':
|
||||
case 'minute':
|
||||
case 'mins':
|
||||
case 'min':
|
||||
case 'm':
|
||||
return n * m;
|
||||
case 'seconds':
|
||||
case 'second':
|
||||
case 'secs':
|
||||
case 'sec':
|
||||
case 's':
|
||||
return n * s;
|
||||
case 'milliseconds':
|
||||
case 'millisecond':
|
||||
case 'msecs':
|
||||
case 'msec':
|
||||
case 'ms':
|
||||
return n;
|
||||
default:
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Short format for `ms`.
|
||||
*
|
||||
* @param {Number} ms
|
||||
* @return {String}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function fmtShort(ms) {
|
||||
var msAbs = Math.abs(ms);
|
||||
if (msAbs >= d) {
|
||||
return Math.round(ms / d) + 'd';
|
||||
}
|
||||
if (msAbs >= h) {
|
||||
return Math.round(ms / h) + 'h';
|
||||
}
|
||||
if (msAbs >= m) {
|
||||
return Math.round(ms / m) + 'm';
|
||||
}
|
||||
if (msAbs >= s) {
|
||||
return Math.round(ms / s) + 's';
|
||||
}
|
||||
return ms + 'ms';
|
||||
}
|
||||
|
||||
/**
|
||||
* Long format for `ms`.
|
||||
*
|
||||
* @param {Number} ms
|
||||
* @return {String}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function fmtLong(ms) {
|
||||
var msAbs = Math.abs(ms);
|
||||
if (msAbs >= d) {
|
||||
return plural(ms, msAbs, d, 'day');
|
||||
}
|
||||
if (msAbs >= h) {
|
||||
return plural(ms, msAbs, h, 'hour');
|
||||
}
|
||||
if (msAbs >= m) {
|
||||
return plural(ms, msAbs, m, 'minute');
|
||||
}
|
||||
if (msAbs >= s) {
|
||||
return plural(ms, msAbs, s, 'second');
|
||||
}
|
||||
return ms + ' ms';
|
||||
}
|
||||
|
||||
/**
|
||||
* Pluralization helper.
|
||||
*/
|
||||
|
||||
function plural(ms, msAbs, n, name) {
|
||||
var isPlural = msAbs >= n * 1.5;
|
||||
return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
|
||||
}
|
||||
21
mcp/node_modules/send/node_modules/ms/license.md
generated
vendored
21
mcp/node_modules/send/node_modules/ms/license.md
generated
vendored
@@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2020 Vercel, Inc.
|
||||
|
||||
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.
|
||||
38
mcp/node_modules/send/node_modules/ms/package.json
generated
vendored
38
mcp/node_modules/send/node_modules/ms/package.json
generated
vendored
@@ -1,38 +0,0 @@
|
||||
{
|
||||
"name": "ms",
|
||||
"version": "2.1.3",
|
||||
"description": "Tiny millisecond conversion utility",
|
||||
"repository": "vercel/ms",
|
||||
"main": "./index",
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"scripts": {
|
||||
"precommit": "lint-staged",
|
||||
"lint": "eslint lib/* bin/*",
|
||||
"test": "mocha tests.js"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "eslint:recommended",
|
||||
"env": {
|
||||
"node": true,
|
||||
"es6": true
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.js": [
|
||||
"npm run lint",
|
||||
"prettier --single-quote --write",
|
||||
"git add"
|
||||
]
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"eslint": "4.18.2",
|
||||
"expect.js": "0.3.1",
|
||||
"husky": "0.14.3",
|
||||
"lint-staged": "5.0.0",
|
||||
"mocha": "4.0.1",
|
||||
"prettier": "2.0.5"
|
||||
}
|
||||
}
|
||||
59
mcp/node_modules/send/node_modules/ms/readme.md
generated
vendored
59
mcp/node_modules/send/node_modules/ms/readme.md
generated
vendored
@@ -1,59 +0,0 @@
|
||||
# ms
|
||||
|
||||

|
||||
|
||||
Use this package to easily convert various time formats to milliseconds.
|
||||
|
||||
## Examples
|
||||
|
||||
```js
|
||||
ms('2 days') // 172800000
|
||||
ms('1d') // 86400000
|
||||
ms('10h') // 36000000
|
||||
ms('2.5 hrs') // 9000000
|
||||
ms('2h') // 7200000
|
||||
ms('1m') // 60000
|
||||
ms('5s') // 5000
|
||||
ms('1y') // 31557600000
|
||||
ms('100') // 100
|
||||
ms('-3 days') // -259200000
|
||||
ms('-1h') // -3600000
|
||||
ms('-200') // -200
|
||||
```
|
||||
|
||||
### Convert from Milliseconds
|
||||
|
||||
```js
|
||||
ms(60000) // "1m"
|
||||
ms(2 * 60000) // "2m"
|
||||
ms(-3 * 60000) // "-3m"
|
||||
ms(ms('10 hours')) // "10h"
|
||||
```
|
||||
|
||||
### Time Format Written-Out
|
||||
|
||||
```js
|
||||
ms(60000, { long: true }) // "1 minute"
|
||||
ms(2 * 60000, { long: true }) // "2 minutes"
|
||||
ms(-3 * 60000, { long: true }) // "-3 minutes"
|
||||
ms(ms('10 hours'), { long: true }) // "10 hours"
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
- Works both in [Node.js](https://nodejs.org) and in the browser
|
||||
- If a number is supplied to `ms`, a string with a unit is returned
|
||||
- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
|
||||
- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
|
||||
|
||||
## Related Packages
|
||||
|
||||
- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
|
||||
|
||||
## Caught a Bug?
|
||||
|
||||
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
|
||||
2. Link the package to the global module directory: `npm link`
|
||||
3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
|
||||
|
||||
As always, you can run the tests using: `npm test`
|
||||
42
mcp/node_modules/send/package.json
generated
vendored
42
mcp/node_modules/send/package.json
generated
vendored
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "send",
|
||||
"description": "Better streaming static file server with Range and conditional-GET support",
|
||||
"version": "0.19.0",
|
||||
"version": "1.2.0",
|
||||
"author": "TJ Holowaychuk <tj@vision-media.ca>",
|
||||
"contributors": [
|
||||
"Douglas Christopher Wilson <doug@somethingdoug.com>",
|
||||
@@ -16,22 +16,20 @@
|
||||
"server"
|
||||
],
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
"destroy": "1.2.0",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "2.0.0",
|
||||
"mime": "1.6.0",
|
||||
"ms": "2.1.3",
|
||||
"on-finished": "2.4.1",
|
||||
"range-parser": "~1.2.1",
|
||||
"statuses": "2.0.1"
|
||||
"debug": "^4.3.5",
|
||||
"encodeurl": "^2.0.0",
|
||||
"escape-html": "^1.0.3",
|
||||
"etag": "^1.8.1",
|
||||
"fresh": "^2.0.0",
|
||||
"http-errors": "^2.0.0",
|
||||
"mime-types": "^3.0.1",
|
||||
"ms": "^2.1.3",
|
||||
"on-finished": "^2.4.1",
|
||||
"range-parser": "^1.2.1",
|
||||
"statuses": "^2.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"after": "0.8.2",
|
||||
"after": "^0.8.2",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-standard": "14.1.1",
|
||||
"eslint-plugin-import": "2.25.4",
|
||||
@@ -39,24 +37,24 @@
|
||||
"eslint-plugin-node": "11.1.0",
|
||||
"eslint-plugin-promise": "5.2.0",
|
||||
"eslint-plugin-standard": "4.1.0",
|
||||
"mocha": "9.2.2",
|
||||
"nyc": "15.1.0",
|
||||
"mocha": "^10.7.0",
|
||||
"nyc": "^17.0.0",
|
||||
"supertest": "6.2.2"
|
||||
},
|
||||
"files": [
|
||||
"HISTORY.md",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"SECURITY.md",
|
||||
"index.js"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
"node": ">= 18"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"test": "mocha --check-leaks --reporter spec --bail",
|
||||
"test-ci": "nyc --reporter=lcov --reporter=text npm test",
|
||||
"test-cov": "nyc --reporter=html --reporter=text npm test"
|
||||
"test": "mocha --check-leaks --reporter spec",
|
||||
"test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
|
||||
"test-cov": "nyc --reporter=html --reporter=text npm test",
|
||||
"version": "node scripts/version-history.js && git add HISTORY.md"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user