MACHIN
This commit is contained in:
		
							
								
								
									
										8
									
								
								1/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								1/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| const http = require('http'); | ||||
| http.createServer(function (request, response) { | ||||
|     response.end('Hello NodeJS!'); | ||||
| }).listen(3000, '127.0.0.1', function () { | ||||
|     console.log( | ||||
|         'Сервер начал прослушивание запросов на порту 3000' | ||||
|     ); | ||||
| }); | ||||
							
								
								
									
										17
									
								
								10/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								10/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| const EventEmitter = require('events'); | ||||
|  | ||||
| let eventName = 'greet'; | ||||
|  | ||||
| class User extends EventEmitter { | ||||
|     sayHi(data) { | ||||
|         this.emit(eventName, data); | ||||
|     } | ||||
| } | ||||
|  | ||||
| let user = new User(); | ||||
| // добавляем к объекту user обработку события "greet" | ||||
| user.on(eventName, function (data) { | ||||
|     console.log(data); | ||||
| }); | ||||
|  | ||||
| user.sayHi('Мне нужна твоя одежда...'); | ||||
							
								
								
									
										14
									
								
								11/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								11/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| const fs = require('fs'); | ||||
|  | ||||
| let writeableStream = fs.createWriteStream('hello.txt'); | ||||
| writeableStream.write('Привет мир!'); | ||||
| writeableStream.write('Продолжение записи \n'); | ||||
| writeableStream.end('Завершение записи'); | ||||
| let readableStream = fs.createReadStream( | ||||
|     'hello.txt', | ||||
|     'utf8' | ||||
| ); | ||||
|  | ||||
| readableStream.on('data', function (chunk) { | ||||
|     console.log(chunk); | ||||
| }); | ||||
							
								
								
									
										2
									
								
								11/hello.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								11/hello.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| Привет мир!Продолжение записи  | ||||
| Завершение записи | ||||
							
								
								
									
										13
									
								
								12/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								12/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| const fs = require('fs'); | ||||
| const zlib = require('zlib'); | ||||
|  | ||||
| let readableStream = fs.createReadStream( | ||||
|     'hello.txt', | ||||
|     'utf8' | ||||
| ); | ||||
|  | ||||
| let writeableStream = fs.createWriteStream('hello.txt.gz'); | ||||
|  | ||||
| let gzip = zlib.createGzip(); | ||||
|  | ||||
| readableStream.pipe(gzip).pipe(writeableStream); | ||||
							
								
								
									
										0
									
								
								12/hello.txt.gz
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								12/hello.txt.gz
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								12/some.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								12/some.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| hello 1 | ||||
							
								
								
									
										1
									
								
								12/some2.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								12/some2.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| hello 2 | ||||
							
								
								
									
										13
									
								
								13/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								13/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| var http = require('http'); | ||||
|  | ||||
| http.createServer(function (request, response) { | ||||
|     console.log('Url: ' + request.url); | ||||
|     console.log('Тип запроса: ' + request.method); | ||||
|     console.log( | ||||
|         'User-Agent: ' + request.headers['user-agent'] | ||||
|     ); | ||||
|     console.log('Все заголовки'); | ||||
|     console.log(request.headers); | ||||
|  | ||||
|     response.end(); | ||||
| }).listen(3000); | ||||
							
								
								
									
										11
									
								
								14/about.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								14/about.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>О сайте</title> | ||||
|         <meta charset="utf-8" /> | ||||
|     </head> | ||||
|     <body> | ||||
|         <h1>О сайте</h1> | ||||
|     </body> | ||||
|     <html></html> | ||||
| </html> | ||||
							
								
								
									
										18
									
								
								14/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								14/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| const http = require('http'); | ||||
| const fs = require('fs'); | ||||
|  | ||||
| http.createServer(function (request, response) { | ||||
|     console.log(`Запрошенный адрес: ${request.url}`); | ||||
|     // получаем путь после слешаW | ||||
|     const filePath = request.url.substr(1); | ||||
|     fs.readFile(filePath, function (error, data) { | ||||
|         if (error) { | ||||
|             response.statusCode = 404; | ||||
|             response.end('Resourse not found!'); | ||||
|         } else { | ||||
|             response.end(data); | ||||
|         } | ||||
|     });W | ||||
| }).listen(3000, function () { | ||||
|     console.log('Server started at 3000'); | ||||
| }); | ||||
							
								
								
									
										16
									
								
								14/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								14/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>Главная</title> | ||||
|         <meta charset="utf-8" /> | ||||
|         <link | ||||
|             href="public/styles.css" | ||||
|             rel="stylesheet" | ||||
|             type="text/css" | ||||
|         /> | ||||
|     </head> | ||||
|     <body> | ||||
|         <h1>Главная</h1> | ||||
|     </body> | ||||
|     <html></html> | ||||
| </html> | ||||
							
								
								
									
										4
									
								
								14/styles.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								14/styles.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| body { | ||||
|     font-family: Verdana; | ||||
|     color: rgb(48, 48, 92); | ||||
| } | ||||
							
								
								
									
										11
									
								
								15/about.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								15/about.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| !DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>О сайте</title> | ||||
|         <meta charset="utf-8" /> | ||||
|     </head> | ||||
|     <body> | ||||
|         <h1>О сайте</h1> | ||||
|     </body> | ||||
|     <html></html> | ||||
| </html> | ||||
							
								
								
									
										25
									
								
								15/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								15/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| const http = require('http'); | ||||
| const fs = require('fs'); | ||||
|  | ||||
| http.createServer(function (request, response) { | ||||
|     console.log(`Запрошенный адрес: ${request.url}`); | ||||
|     if (request.url.startsWith('/public/')) { | ||||
|         // получаем путь после слеша | ||||
|         const filePath = request.url.substr(1); | ||||
|         fs.readFile(filePath, function (error, data) { | ||||
|             if (error) { | ||||
|                 response.statusCode = 404; | ||||
|                 response.end('Resourse not found!'); | ||||
|             } else { | ||||
|                 response.setHeader( | ||||
|                     'Content-Type', | ||||
|                     'text/html' | ||||
|                 ); | ||||
|                 response.end(data); | ||||
|             } | ||||
|         }); | ||||
|     } else { | ||||
|         // во всех остальных случаях отправляем строку hello world! | ||||
|         response.end('Hello World!'); | ||||
|     } | ||||
| }).listen(3000); | ||||
							
								
								
									
										11
									
								
								15/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								15/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>Главная</title> | ||||
|         <meta charset="utf-8" /> | ||||
|     </head> | ||||
|     <body> | ||||
|         <h1>Главная</h1> | ||||
|     </body> | ||||
|     <html></html> | ||||
| </html> | ||||
							
								
								
									
										16
									
								
								16/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								16/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| const http = require('http'); | ||||
| const fs = require('fs'); | ||||
|  | ||||
| http.createServer(function (request, response) { | ||||
|     fs.readFile('index.html', 'utf8', function ( | ||||
|         error, | ||||
|         data | ||||
|     ) { | ||||
|         let message = 'Изучаем Node.js'; | ||||
|         let header = 'Главная страница'; | ||||
|         data = data | ||||
|             .replace('{header}', header) | ||||
|             .replace('{message}', message); | ||||
|         response.end(data); | ||||
|     }); | ||||
| }).listen(3000); | ||||
							
								
								
									
										12
									
								
								16/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								16/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>Главная</title> | ||||
|         <meta charset="utf-8" /> | ||||
|     </head> | ||||
|     <body> | ||||
|         <h1>{header}</h1> | ||||
|         <p>{message}</p> | ||||
|     </body> | ||||
|     <html></html> | ||||
| </html> | ||||
							
								
								
									
										13
									
								
								17/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								17/app.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| const express = require('express'); | ||||
|  | ||||
| const app = express(); | ||||
| app.get('/', function (request, response) { | ||||
|     response.send('<h1>Главная страница</h1>'); | ||||
| }); | ||||
| app.get('/about', function (request, response) { | ||||
|     response.send('<h1>О сайте</h1>'); | ||||
| }); | ||||
| app.get('/contact', function (request, response) { | ||||
|     response.send('<h1>Контакты</h1>'); | ||||
| }); | ||||
| app.listen(3000); | ||||
							
								
								
									
										12
									
								
								17/node_modules/.bin/mime
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								17/node_modules/.bin/mime
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| #!/bin/sh | ||||
| basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") | ||||
|  | ||||
| case `uname` in | ||||
|     *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; | ||||
| esac | ||||
|  | ||||
| if [ -x "$basedir/node" ]; then | ||||
|   exec "$basedir/node"  "$basedir/../mime/cli.js" "$@" | ||||
| else  | ||||
|   exec node  "$basedir/../mime/cli.js" "$@" | ||||
| fi | ||||
							
								
								
									
										17
									
								
								17/node_modules/.bin/mime.cmd
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								17/node_modules/.bin/mime.cmd
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| @ECHO off | ||||
| GOTO start | ||||
| :find_dp0 | ||||
| SET dp0=%~dp0 | ||||
| EXIT /b | ||||
| :start | ||||
| SETLOCAL | ||||
| CALL :find_dp0 | ||||
|  | ||||
| IF EXIST "%dp0%\node.exe" ( | ||||
|   SET "_prog=%dp0%\node.exe" | ||||
| ) ELSE ( | ||||
|   SET "_prog=node" | ||||
|   SET PATHEXT=%PATHEXT:;.JS;=;% | ||||
| ) | ||||
|  | ||||
| endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\mime\cli.js" %* | ||||
							
								
								
									
										28
									
								
								17/node_modules/.bin/mime.ps1
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								17/node_modules/.bin/mime.ps1
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| #!/usr/bin/env pwsh | ||||
| $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent | ||||
|  | ||||
| $exe="" | ||||
| if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { | ||||
|   # Fix case when both the Windows and Linux builds of Node | ||||
|   # are installed in the same directory | ||||
|   $exe=".exe" | ||||
| } | ||||
| $ret=0 | ||||
| if (Test-Path "$basedir/node$exe") { | ||||
|   # Support pipeline input | ||||
|   if ($MyInvocation.ExpectingInput) { | ||||
|     $input | & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args | ||||
|   } else { | ||||
|     & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args | ||||
|   } | ||||
|   $ret=$LASTEXITCODE | ||||
| } else { | ||||
|   # Support pipeline input | ||||
|   if ($MyInvocation.ExpectingInput) { | ||||
|     $input | & "node$exe"  "$basedir/../mime/cli.js" $args | ||||
|   } else { | ||||
|     & "node$exe"  "$basedir/../mime/cli.js" $args | ||||
|   } | ||||
|   $ret=$LASTEXITCODE | ||||
| } | ||||
| exit $ret | ||||
							
								
								
									
										596
									
								
								17/node_modules/.package-lock.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										596
									
								
								17/node_modules/.package-lock.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,596 @@ | ||||
| { | ||||
|     "name": "expressapp", | ||||
|     "version": "1.0.0", | ||||
|     "lockfileVersion": 3, | ||||
|     "requires": true, | ||||
|     "packages": { | ||||
|         "node_modules/accepts": { | ||||
|             "version": "1.3.8", | ||||
|             "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", | ||||
|             "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", | ||||
|             "dependencies": { | ||||
|                 "mime-types": "~2.1.34", | ||||
|                 "negotiator": "0.6.3" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/array-flatten": { | ||||
|             "version": "1.1.1", | ||||
|             "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||||
|             "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" | ||||
|         }, | ||||
|         "node_modules/body-parser": { | ||||
|             "version": "1.20.1", | ||||
|             "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", | ||||
|             "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", | ||||
|             "dependencies": { | ||||
|                 "bytes": "3.1.2", | ||||
|                 "content-type": "~1.0.4", | ||||
|                 "debug": "2.6.9", | ||||
|                 "depd": "2.0.0", | ||||
|                 "destroy": "1.2.0", | ||||
|                 "http-errors": "2.0.0", | ||||
|                 "iconv-lite": "0.4.24", | ||||
|                 "on-finished": "2.4.1", | ||||
|                 "qs": "6.11.0", | ||||
|                 "raw-body": "2.5.1", | ||||
|                 "type-is": "~1.6.18", | ||||
|                 "unpipe": "1.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8", | ||||
|                 "npm": "1.2.8000 || >= 1.4.16" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/bytes": { | ||||
|             "version": "3.1.2", | ||||
|             "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", | ||||
|             "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/call-bind": { | ||||
|             "version": "1.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", | ||||
|             "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", | ||||
|             "dependencies": { | ||||
|                 "function-bind": "^1.1.1", | ||||
|                 "get-intrinsic": "^1.0.2" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/content-disposition": { | ||||
|             "version": "0.5.4", | ||||
|             "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", | ||||
|             "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", | ||||
|             "dependencies": { | ||||
|                 "safe-buffer": "5.2.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/content-type": { | ||||
|             "version": "1.0.5", | ||||
|             "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", | ||||
|             "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/cookie": { | ||||
|             "version": "0.5.0", | ||||
|             "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", | ||||
|             "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/cookie-signature": { | ||||
|             "version": "1.0.6", | ||||
|             "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||||
|             "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" | ||||
|         }, | ||||
|         "node_modules/debug": { | ||||
|             "version": "2.6.9", | ||||
|             "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | ||||
|             "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", | ||||
|             "dependencies": { | ||||
|                 "ms": "2.0.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/depd": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | ||||
|             "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/destroy": { | ||||
|             "version": "1.2.0", | ||||
|             "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", | ||||
|             "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8", | ||||
|                 "npm": "1.2.8000 || >= 1.4.16" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/ee-first": { | ||||
|             "version": "1.1.1", | ||||
|             "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||||
|             "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" | ||||
|         }, | ||||
|         "node_modules/encodeurl": { | ||||
|             "version": "1.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | ||||
|             "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/escape-html": { | ||||
|             "version": "1.0.3", | ||||
|             "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||||
|             "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" | ||||
|         }, | ||||
|         "node_modules/etag": { | ||||
|             "version": "1.8.1", | ||||
|             "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | ||||
|             "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/express": { | ||||
|             "version": "4.18.2", | ||||
|             "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", | ||||
|             "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", | ||||
|             "dependencies": { | ||||
|                 "accepts": "~1.3.8", | ||||
|                 "array-flatten": "1.1.1", | ||||
|                 "body-parser": "1.20.1", | ||||
|                 "content-disposition": "0.5.4", | ||||
|                 "content-type": "~1.0.4", | ||||
|                 "cookie": "0.5.0", | ||||
|                 "cookie-signature": "1.0.6", | ||||
|                 "debug": "2.6.9", | ||||
|                 "depd": "2.0.0", | ||||
|                 "encodeurl": "~1.0.2", | ||||
|                 "escape-html": "~1.0.3", | ||||
|                 "etag": "~1.8.1", | ||||
|                 "finalhandler": "1.2.0", | ||||
|                 "fresh": "0.5.2", | ||||
|                 "http-errors": "2.0.0", | ||||
|                 "merge-descriptors": "1.0.1", | ||||
|                 "methods": "~1.1.2", | ||||
|                 "on-finished": "2.4.1", | ||||
|                 "parseurl": "~1.3.3", | ||||
|                 "path-to-regexp": "0.1.7", | ||||
|                 "proxy-addr": "~2.0.7", | ||||
|                 "qs": "6.11.0", | ||||
|                 "range-parser": "~1.2.1", | ||||
|                 "safe-buffer": "5.2.1", | ||||
|                 "send": "0.18.0", | ||||
|                 "serve-static": "1.15.0", | ||||
|                 "setprototypeof": "1.2.0", | ||||
|                 "statuses": "2.0.1", | ||||
|                 "type-is": "~1.6.18", | ||||
|                 "utils-merge": "1.0.1", | ||||
|                 "vary": "~1.1.2" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.10.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/finalhandler": { | ||||
|             "version": "1.2.0", | ||||
|             "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", | ||||
|             "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", | ||||
|             "dependencies": { | ||||
|                 "debug": "2.6.9", | ||||
|                 "encodeurl": "~1.0.2", | ||||
|                 "escape-html": "~1.0.3", | ||||
|                 "on-finished": "2.4.1", | ||||
|                 "parseurl": "~1.3.3", | ||||
|                 "statuses": "2.0.1", | ||||
|                 "unpipe": "~1.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/forwarded": { | ||||
|             "version": "0.2.0", | ||||
|             "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | ||||
|             "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/fresh": { | ||||
|             "version": "0.5.2", | ||||
|             "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | ||||
|             "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/function-bind": { | ||||
|             "version": "1.1.2", | ||||
|             "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", | ||||
|             "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/get-intrinsic": { | ||||
|             "version": "1.2.1", | ||||
|             "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", | ||||
|             "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", | ||||
|             "dependencies": { | ||||
|                 "function-bind": "^1.1.1", | ||||
|                 "has": "^1.0.3", | ||||
|                 "has-proto": "^1.0.1", | ||||
|                 "has-symbols": "^1.0.3" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/has": { | ||||
|             "version": "1.0.4", | ||||
|             "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", | ||||
|             "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.4.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/has-proto": { | ||||
|             "version": "1.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", | ||||
|             "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.4" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/has-symbols": { | ||||
|             "version": "1.0.3", | ||||
|             "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", | ||||
|             "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.4" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/http-errors": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", | ||||
|             "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", | ||||
|             "dependencies": { | ||||
|                 "depd": "2.0.0", | ||||
|                 "inherits": "2.0.4", | ||||
|                 "setprototypeof": "1.2.0", | ||||
|                 "statuses": "2.0.1", | ||||
|                 "toidentifier": "1.0.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/iconv-lite": { | ||||
|             "version": "0.4.24", | ||||
|             "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||||
|             "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||||
|             "dependencies": { | ||||
|                 "safer-buffer": ">= 2.1.2 < 3" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=0.10.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/inherits": { | ||||
|             "version": "2.0.4", | ||||
|             "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||
|             "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||||
|         }, | ||||
|         "node_modules/ipaddr.js": { | ||||
|             "version": "1.9.1", | ||||
|             "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", | ||||
|             "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.10" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/media-typer": { | ||||
|             "version": "0.3.0", | ||||
|             "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||||
|             "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/merge-descriptors": { | ||||
|             "version": "1.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||||
|             "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" | ||||
|         }, | ||||
|         "node_modules/methods": { | ||||
|             "version": "1.1.2", | ||||
|             "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ||||
|             "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/mime": { | ||||
|             "version": "1.6.0", | ||||
|             "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", | ||||
|             "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", | ||||
|             "bin": { | ||||
|                 "mime": "cli.js" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=4" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/mime-db": { | ||||
|             "version": "1.52.0", | ||||
|             "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", | ||||
|             "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/mime-types": { | ||||
|             "version": "2.1.35", | ||||
|             "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", | ||||
|             "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", | ||||
|             "dependencies": { | ||||
|                 "mime-db": "1.52.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/ms": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||||
|             "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" | ||||
|         }, | ||||
|         "node_modules/negotiator": { | ||||
|             "version": "0.6.3", | ||||
|             "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", | ||||
|             "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/object-inspect": { | ||||
|             "version": "1.13.0", | ||||
|             "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", | ||||
|             "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/on-finished": { | ||||
|             "version": "2.4.1", | ||||
|             "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", | ||||
|             "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", | ||||
|             "dependencies": { | ||||
|                 "ee-first": "1.1.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/parseurl": { | ||||
|             "version": "1.3.3", | ||||
|             "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||||
|             "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/path-to-regexp": { | ||||
|             "version": "0.1.7", | ||||
|             "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | ||||
|             "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" | ||||
|         }, | ||||
|         "node_modules/proxy-addr": { | ||||
|             "version": "2.0.7", | ||||
|             "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | ||||
|             "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", | ||||
|             "dependencies": { | ||||
|                 "forwarded": "0.2.0", | ||||
|                 "ipaddr.js": "1.9.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.10" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/qs": { | ||||
|             "version": "6.11.0", | ||||
|             "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", | ||||
|             "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", | ||||
|             "dependencies": { | ||||
|                 "side-channel": "^1.0.4" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=0.6" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/range-parser": { | ||||
|             "version": "1.2.1", | ||||
|             "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | ||||
|             "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/raw-body": { | ||||
|             "version": "2.5.1", | ||||
|             "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", | ||||
|             "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", | ||||
|             "dependencies": { | ||||
|                 "bytes": "3.1.2", | ||||
|                 "http-errors": "2.0.0", | ||||
|                 "iconv-lite": "0.4.24", | ||||
|                 "unpipe": "1.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/safe-buffer": { | ||||
|             "version": "5.2.1", | ||||
|             "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||||
|             "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | ||||
|             "funding": [ | ||||
|                 { | ||||
|                     "type": "github", | ||||
|                     "url": "https://github.com/sponsors/feross" | ||||
|                 }, | ||||
|                 { | ||||
|                     "type": "patreon", | ||||
|                     "url": "https://www.patreon.com/feross" | ||||
|                 }, | ||||
|                 { | ||||
|                     "type": "consulting", | ||||
|                     "url": "https://feross.org/support" | ||||
|                 } | ||||
|             ] | ||||
|         }, | ||||
|         "node_modules/safer-buffer": { | ||||
|             "version": "2.1.2", | ||||
|             "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||||
|             "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||||
|         }, | ||||
|         "node_modules/send": { | ||||
|             "version": "0.18.0", | ||||
|             "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", | ||||
|             "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", | ||||
|             "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" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/send/node_modules/ms": { | ||||
|             "version": "2.1.3", | ||||
|             "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||||
|             "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" | ||||
|         }, | ||||
|         "node_modules/serve-static": { | ||||
|             "version": "1.15.0", | ||||
|             "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", | ||||
|             "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", | ||||
|             "dependencies": { | ||||
|                 "encodeurl": "~1.0.2", | ||||
|                 "escape-html": "~1.0.3", | ||||
|                 "parseurl": "~1.3.3", | ||||
|                 "send": "0.18.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/setprototypeof": { | ||||
|             "version": "1.2.0", | ||||
|             "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", | ||||
|             "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" | ||||
|         }, | ||||
|         "node_modules/side-channel": { | ||||
|             "version": "1.0.4", | ||||
|             "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", | ||||
|             "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", | ||||
|             "dependencies": { | ||||
|                 "call-bind": "^1.0.0", | ||||
|                 "get-intrinsic": "^1.0.2", | ||||
|                 "object-inspect": "^1.9.0" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/sponsors/ljharb" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/statuses": { | ||||
|             "version": "2.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | ||||
|             "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/toidentifier": { | ||||
|             "version": "1.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | ||||
|             "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", | ||||
|             "engines": { | ||||
|                 "node": ">=0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/type-is": { | ||||
|             "version": "1.6.18", | ||||
|             "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||||
|             "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||||
|             "dependencies": { | ||||
|                 "media-typer": "0.3.0", | ||||
|                 "mime-types": "~2.1.24" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 0.6" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/unpipe": { | ||||
|             "version": "1.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||||
|             "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/utils-merge": { | ||||
|             "version": "1.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | ||||
|             "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.4.0" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/vary": { | ||||
|             "version": "1.1.2", | ||||
|             "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||||
|             "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", | ||||
|             "engines": { | ||||
|                 "node": ">= 0.8" | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										243
									
								
								17/node_modules/accepts/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										243
									
								
								17/node_modules/accepts/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,243 @@ | ||||
| 1.3.8 / 2022-02-02 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.34 | ||||
|     - deps: mime-db@~1.51.0 | ||||
|   * deps: negotiator@0.6.3 | ||||
|  | ||||
| 1.3.7 / 2019-04-29 | ||||
| ================== | ||||
|  | ||||
|   * deps: negotiator@0.6.2 | ||||
|     - Fix sorting charset, encoding, and language with extra parameters | ||||
|  | ||||
| 1.3.6 / 2019-04-28 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.24 | ||||
|     - deps: mime-db@~1.40.0 | ||||
|  | ||||
| 1.3.5 / 2018-02-28 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.18 | ||||
|     - deps: mime-db@~1.33.0 | ||||
|  | ||||
| 1.3.4 / 2017-08-22 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.16 | ||||
|     - deps: mime-db@~1.29.0 | ||||
|  | ||||
| 1.3.3 / 2016-05-02 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.11 | ||||
|     - deps: mime-db@~1.23.0 | ||||
|   * deps: negotiator@0.6.1 | ||||
|     - perf: improve `Accept` parsing speed | ||||
|     - perf: improve `Accept-Charset` parsing speed | ||||
|     - perf: improve `Accept-Encoding` parsing speed | ||||
|     - perf: improve `Accept-Language` parsing speed | ||||
|  | ||||
| 1.3.2 / 2016-03-08 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.10 | ||||
|     - Fix extension of `application/dash+xml` | ||||
|     - Update primary extension for `audio/mp4` | ||||
|     - deps: mime-db@~1.22.0 | ||||
|  | ||||
| 1.3.1 / 2016-01-19 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.9 | ||||
|     - deps: mime-db@~1.21.0 | ||||
|  | ||||
| 1.3.0 / 2015-09-29 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.7 | ||||
|     - deps: mime-db@~1.19.0 | ||||
|   * deps: negotiator@0.6.0 | ||||
|     - Fix including type extensions in parameters in `Accept` parsing | ||||
|     - Fix parsing `Accept` parameters with quoted equals | ||||
|     - Fix parsing `Accept` parameters with quoted semicolons | ||||
|     - Lazy-load modules from main entry point | ||||
|     - perf: delay type concatenation until needed | ||||
|     - perf: enable strict mode | ||||
|     - perf: hoist regular expressions | ||||
|     - perf: remove closures getting spec properties | ||||
|     - perf: remove a closure from media type parsing | ||||
|     - perf: remove property delete from media type parsing | ||||
|  | ||||
| 1.2.13 / 2015-09-06 | ||||
| =================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.6 | ||||
|     - deps: mime-db@~1.18.0 | ||||
|  | ||||
| 1.2.12 / 2015-07-30 | ||||
| =================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.4 | ||||
|     - deps: mime-db@~1.16.0 | ||||
|  | ||||
| 1.2.11 / 2015-07-16 | ||||
| =================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.3 | ||||
|     - deps: mime-db@~1.15.0 | ||||
|  | ||||
| 1.2.10 / 2015-07-01 | ||||
| =================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.2 | ||||
|     - deps: mime-db@~1.14.0 | ||||
|  | ||||
| 1.2.9 / 2015-06-08 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.1 | ||||
|     - perf: fix deopt during mapping | ||||
|  | ||||
| 1.2.8 / 2015-06-07 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.1.0 | ||||
|     - deps: mime-db@~1.13.0 | ||||
|   * perf: avoid argument reassignment & argument slice | ||||
|   * perf: avoid negotiator recursive construction | ||||
|   * perf: enable strict mode | ||||
|   * perf: remove unnecessary bitwise operator | ||||
|  | ||||
| 1.2.7 / 2015-05-10 | ||||
| ================== | ||||
|  | ||||
|   * deps: negotiator@0.5.3 | ||||
|     - Fix media type parameter matching to be case-insensitive | ||||
|  | ||||
| 1.2.6 / 2015-05-07 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.11 | ||||
|     - deps: mime-db@~1.9.1 | ||||
|   * deps: negotiator@0.5.2 | ||||
|     - Fix comparing media types with quoted values | ||||
|     - Fix splitting media types with quoted commas | ||||
|  | ||||
| 1.2.5 / 2015-03-13 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.10 | ||||
|     - deps: mime-db@~1.8.0 | ||||
|  | ||||
| 1.2.4 / 2015-02-14 | ||||
| ================== | ||||
|  | ||||
|   * Support Node.js 0.6 | ||||
|   * deps: mime-types@~2.0.9 | ||||
|     - deps: mime-db@~1.7.0 | ||||
|   * deps: negotiator@0.5.1 | ||||
|     - Fix preference sorting to be stable for long acceptable lists | ||||
|  | ||||
| 1.2.3 / 2015-01-31 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.8 | ||||
|     - deps: mime-db@~1.6.0 | ||||
|  | ||||
| 1.2.2 / 2014-12-30 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.7 | ||||
|     - deps: mime-db@~1.5.0 | ||||
|  | ||||
| 1.2.1 / 2014-12-30 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.5 | ||||
|     - deps: mime-db@~1.3.1 | ||||
|  | ||||
| 1.2.0 / 2014-12-19 | ||||
| ================== | ||||
|  | ||||
|   * deps: negotiator@0.5.0 | ||||
|     - Fix list return order when large accepted list | ||||
|     - Fix missing identity encoding when q=0 exists | ||||
|     - Remove dynamic building of Negotiator class | ||||
|  | ||||
| 1.1.4 / 2014-12-10 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.4 | ||||
|     - deps: mime-db@~1.3.0 | ||||
|  | ||||
| 1.1.3 / 2014-11-09 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.3 | ||||
|     - deps: mime-db@~1.2.0 | ||||
|  | ||||
| 1.1.2 / 2014-10-14 | ||||
| ================== | ||||
|  | ||||
|   * deps: negotiator@0.4.9 | ||||
|     - Fix error when media type has invalid parameter | ||||
|  | ||||
| 1.1.1 / 2014-09-28 | ||||
| ================== | ||||
|  | ||||
|   * deps: mime-types@~2.0.2 | ||||
|     - deps: mime-db@~1.1.0 | ||||
|   * deps: negotiator@0.4.8 | ||||
|     - Fix all negotiations to be case-insensitive | ||||
|     - Stable sort preferences of same quality according to client order | ||||
|  | ||||
| 1.1.0 / 2014-09-02 | ||||
| ================== | ||||
|  | ||||
|   * update `mime-types` | ||||
|  | ||||
| 1.0.7 / 2014-07-04 | ||||
| ================== | ||||
|  | ||||
|   * Fix wrong type returned from `type` when match after unknown extension | ||||
|  | ||||
| 1.0.6 / 2014-06-24 | ||||
| ================== | ||||
|  | ||||
|   * deps: negotiator@0.4.7 | ||||
|  | ||||
| 1.0.5 / 2014-06-20 | ||||
| ================== | ||||
|  | ||||
|  * fix crash when unknown extension given | ||||
|  | ||||
| 1.0.4 / 2014-06-19 | ||||
| ================== | ||||
|  | ||||
|   * use `mime-types` | ||||
|  | ||||
| 1.0.3 / 2014-06-11 | ||||
| ================== | ||||
|  | ||||
|   * deps: negotiator@0.4.6 | ||||
|     - Order by specificity when quality is the same | ||||
|  | ||||
| 1.0.2 / 2014-05-29 | ||||
| ================== | ||||
|  | ||||
|   * Fix interpretation when header not in request | ||||
|   * deps: pin negotiator@0.4.5 | ||||
|  | ||||
| 1.0.1 / 2014-01-18 | ||||
| ================== | ||||
|  | ||||
|   * Identity encoding isn't always acceptable | ||||
|   * deps: negotiator@~0.4.0 | ||||
|  | ||||
| 1.0.0 / 2013-12-27 | ||||
| ================== | ||||
|  | ||||
|   * Genesis | ||||
							
								
								
									
										23
									
								
								17/node_modules/accepts/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								17/node_modules/accepts/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2014 Jonathan Ong <me@jongleberry.com> | ||||
| Copyright (c) 2015 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. | ||||
							
								
								
									
										140
									
								
								17/node_modules/accepts/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								17/node_modules/accepts/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | ||||
| # accepts | ||||
|  | ||||
| [![NPM Version][npm-version-image]][npm-url] | ||||
| [![NPM Downloads][npm-downloads-image]][npm-url] | ||||
| [![Node.js Version][node-version-image]][node-version-url] | ||||
| [![Build Status][github-actions-ci-image]][github-actions-ci-url] | ||||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||||
|  | ||||
| Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). | ||||
| Extracted from [koa](https://www.npmjs.com/package/koa) for general use. | ||||
|  | ||||
| In addition to negotiator, it allows: | ||||
|  | ||||
| - Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` | ||||
|   as well as `('text/html', 'application/json')`. | ||||
| - Allows type shorthands such as `json`. | ||||
| - Returns `false` when no types match | ||||
| - Treats non-existent headers as `*` | ||||
|  | ||||
| ## 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 accepts | ||||
| ``` | ||||
|  | ||||
| ## API | ||||
|  | ||||
| ```js | ||||
| var accepts = require('accepts') | ||||
| ``` | ||||
|  | ||||
| ### accepts(req) | ||||
|  | ||||
| Create a new `Accepts` object for the given `req`. | ||||
|  | ||||
| #### .charset(charsets) | ||||
|  | ||||
| Return the first accepted charset. If nothing in `charsets` is accepted, | ||||
| then `false` is returned. | ||||
|  | ||||
| #### .charsets() | ||||
|  | ||||
| Return the charsets that the request accepts, in the order of the client's | ||||
| preference (most preferred first). | ||||
|  | ||||
| #### .encoding(encodings) | ||||
|  | ||||
| Return the first accepted encoding. If nothing in `encodings` is accepted, | ||||
| then `false` is returned. | ||||
|  | ||||
| #### .encodings() | ||||
|  | ||||
| Return the encodings that the request accepts, in the order of the client's | ||||
| preference (most preferred first). | ||||
|  | ||||
| #### .language(languages) | ||||
|  | ||||
| Return the first accepted language. If nothing in `languages` is accepted, | ||||
| then `false` is returned. | ||||
|  | ||||
| #### .languages() | ||||
|  | ||||
| Return the languages that the request accepts, in the order of the client's | ||||
| preference (most preferred first). | ||||
|  | ||||
| #### .type(types) | ||||
|  | ||||
| Return the first accepted type (and it is returned as the same text as what | ||||
| appears in the `types` array). If nothing in `types` is accepted, then `false` | ||||
| is returned. | ||||
|  | ||||
| The `types` array can contain full MIME types or file extensions. Any value | ||||
| that is not a full MIME types is passed to `require('mime-types').lookup`. | ||||
|  | ||||
| #### .types() | ||||
|  | ||||
| Return the types that the request accepts, in the order of the client's | ||||
| preference (most preferred first). | ||||
|  | ||||
| ## Examples | ||||
|  | ||||
| ### Simple type negotiation | ||||
|  | ||||
| This simple example shows how to use `accepts` to return a different typed | ||||
| respond body based on what the client wants to accept. The server lists it's | ||||
| preferences in order and will get back the best match between the client and | ||||
| server. | ||||
|  | ||||
| ```js | ||||
| var accepts = require('accepts') | ||||
| var http = require('http') | ||||
|  | ||||
| function app (req, res) { | ||||
|   var accept = accepts(req) | ||||
|  | ||||
|   // the order of this list is significant; should be server preferred order | ||||
|   switch (accept.type(['json', 'html'])) { | ||||
|     case 'json': | ||||
|       res.setHeader('Content-Type', 'application/json') | ||||
|       res.write('{"hello":"world!"}') | ||||
|       break | ||||
|     case 'html': | ||||
|       res.setHeader('Content-Type', 'text/html') | ||||
|       res.write('<b>hello, world!</b>') | ||||
|       break | ||||
|     default: | ||||
|       // the fallback is text/plain, so no need to specify it above | ||||
|       res.setHeader('Content-Type', 'text/plain') | ||||
|       res.write('hello, world!') | ||||
|       break | ||||
|   } | ||||
|  | ||||
|   res.end() | ||||
| } | ||||
|  | ||||
| http.createServer(app).listen(3000) | ||||
| ``` | ||||
|  | ||||
| You can test this out with the cURL program: | ||||
| ```sh | ||||
| curl -I -H'Accept: text/html' http://localhost:3000/ | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
| [MIT](LICENSE) | ||||
|  | ||||
| [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master | ||||
| [coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master | ||||
| [github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci | ||||
| [github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml | ||||
| [node-version-image]: https://badgen.net/npm/node/accepts | ||||
| [node-version-url]: https://nodejs.org/en/download | ||||
| [npm-downloads-image]: https://badgen.net/npm/dm/accepts | ||||
| [npm-url]: https://npmjs.org/package/accepts | ||||
| [npm-version-image]: https://badgen.net/npm/v/accepts | ||||
							
								
								
									
										238
									
								
								17/node_modules/accepts/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								17/node_modules/accepts/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | ||||
| /*! | ||||
|  * accepts | ||||
|  * Copyright(c) 2014 Jonathan Ong | ||||
|  * Copyright(c) 2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var Negotiator = require('negotiator') | ||||
| var mime = require('mime-types') | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| module.exports = Accepts | ||||
|  | ||||
| /** | ||||
|  * Create a new Accepts object for the given req. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function Accepts (req) { | ||||
|   if (!(this instanceof Accepts)) { | ||||
|     return new Accepts(req) | ||||
|   } | ||||
|  | ||||
|   this.headers = req.headers | ||||
|   this.negotiator = new Negotiator(req) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Check if the given `type(s)` is acceptable, returning | ||||
|  * the best match when true, otherwise `undefined`, in which | ||||
|  * case you should respond with 406 "Not Acceptable". | ||||
|  * | ||||
|  * The `type` value may be a single mime type string | ||||
|  * such as "application/json", the extension name | ||||
|  * such as "json" or an array `["json", "html", "text/plain"]`. When a list | ||||
|  * or array is given the _best_ match, if any is returned. | ||||
|  * | ||||
|  * Examples: | ||||
|  * | ||||
|  *     // Accept: text/html | ||||
|  *     this.types('html'); | ||||
|  *     // => "html" | ||||
|  * | ||||
|  *     // Accept: text/*, application/json | ||||
|  *     this.types('html'); | ||||
|  *     // => "html" | ||||
|  *     this.types('text/html'); | ||||
|  *     // => "text/html" | ||||
|  *     this.types('json', 'text'); | ||||
|  *     // => "json" | ||||
|  *     this.types('application/json'); | ||||
|  *     // => "application/json" | ||||
|  * | ||||
|  *     // Accept: text/*, application/json | ||||
|  *     this.types('image/png'); | ||||
|  *     this.types('png'); | ||||
|  *     // => undefined | ||||
|  * | ||||
|  *     // Accept: text/*;q=.5, application/json | ||||
|  *     this.types(['html', 'json']); | ||||
|  *     this.types('html', 'json'); | ||||
|  *     // => "json" | ||||
|  * | ||||
|  * @param {String|Array} types... | ||||
|  * @return {String|Array|Boolean} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Accepts.prototype.type = | ||||
| Accepts.prototype.types = function (types_) { | ||||
|   var types = types_ | ||||
|  | ||||
|   // support flattened arguments | ||||
|   if (types && !Array.isArray(types)) { | ||||
|     types = new Array(arguments.length) | ||||
|     for (var i = 0; i < types.length; i++) { | ||||
|       types[i] = arguments[i] | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // no types, return all requested types | ||||
|   if (!types || types.length === 0) { | ||||
|     return this.negotiator.mediaTypes() | ||||
|   } | ||||
|  | ||||
|   // no accept header, return first given type | ||||
|   if (!this.headers.accept) { | ||||
|     return types[0] | ||||
|   } | ||||
|  | ||||
|   var mimes = types.map(extToMime) | ||||
|   var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) | ||||
|   var first = accepts[0] | ||||
|  | ||||
|   return first | ||||
|     ? types[mimes.indexOf(first)] | ||||
|     : false | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Return accepted encodings or best fit based on `encodings`. | ||||
|  * | ||||
|  * Given `Accept-Encoding: gzip, deflate` | ||||
|  * an array sorted by quality is returned: | ||||
|  * | ||||
|  *     ['gzip', 'deflate'] | ||||
|  * | ||||
|  * @param {String|Array} encodings... | ||||
|  * @return {String|Array} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Accepts.prototype.encoding = | ||||
| Accepts.prototype.encodings = function (encodings_) { | ||||
|   var encodings = encodings_ | ||||
|  | ||||
|   // support flattened arguments | ||||
|   if (encodings && !Array.isArray(encodings)) { | ||||
|     encodings = new Array(arguments.length) | ||||
|     for (var i = 0; i < encodings.length; i++) { | ||||
|       encodings[i] = arguments[i] | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // no encodings, return all requested encodings | ||||
|   if (!encodings || encodings.length === 0) { | ||||
|     return this.negotiator.encodings() | ||||
|   } | ||||
|  | ||||
|   return this.negotiator.encodings(encodings)[0] || false | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Return accepted charsets or best fit based on `charsets`. | ||||
|  * | ||||
|  * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` | ||||
|  * an array sorted by quality is returned: | ||||
|  * | ||||
|  *     ['utf-8', 'utf-7', 'iso-8859-1'] | ||||
|  * | ||||
|  * @param {String|Array} charsets... | ||||
|  * @return {String|Array} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Accepts.prototype.charset = | ||||
| Accepts.prototype.charsets = function (charsets_) { | ||||
|   var charsets = charsets_ | ||||
|  | ||||
|   // support flattened arguments | ||||
|   if (charsets && !Array.isArray(charsets)) { | ||||
|     charsets = new Array(arguments.length) | ||||
|     for (var i = 0; i < charsets.length; i++) { | ||||
|       charsets[i] = arguments[i] | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // no charsets, return all requested charsets | ||||
|   if (!charsets || charsets.length === 0) { | ||||
|     return this.negotiator.charsets() | ||||
|   } | ||||
|  | ||||
|   return this.negotiator.charsets(charsets)[0] || false | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Return accepted languages or best fit based on `langs`. | ||||
|  * | ||||
|  * Given `Accept-Language: en;q=0.8, es, pt` | ||||
|  * an array sorted by quality is returned: | ||||
|  * | ||||
|  *     ['es', 'pt', 'en'] | ||||
|  * | ||||
|  * @param {String|Array} langs... | ||||
|  * @return {Array|String} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Accepts.prototype.lang = | ||||
| Accepts.prototype.langs = | ||||
| Accepts.prototype.language = | ||||
| Accepts.prototype.languages = function (languages_) { | ||||
|   var languages = languages_ | ||||
|  | ||||
|   // support flattened arguments | ||||
|   if (languages && !Array.isArray(languages)) { | ||||
|     languages = new Array(arguments.length) | ||||
|     for (var i = 0; i < languages.length; i++) { | ||||
|       languages[i] = arguments[i] | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // no languages, return all requested languages | ||||
|   if (!languages || languages.length === 0) { | ||||
|     return this.negotiator.languages() | ||||
|   } | ||||
|  | ||||
|   return this.negotiator.languages(languages)[0] || false | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Convert extnames to mime. | ||||
|  * | ||||
|  * @param {String} type | ||||
|  * @return {String} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function extToMime (type) { | ||||
|   return type.indexOf('/') === -1 | ||||
|     ? mime.lookup(type) | ||||
|     : type | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Check if mime is valid. | ||||
|  * | ||||
|  * @param {String} type | ||||
|  * @return {String} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function validMime (type) { | ||||
|   return typeof type === 'string' | ||||
| } | ||||
							
								
								
									
										47
									
								
								17/node_modules/accepts/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								17/node_modules/accepts/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| { | ||||
|   "name": "accepts", | ||||
|   "description": "Higher-level content negotiation", | ||||
|   "version": "1.3.8", | ||||
|   "contributors": [ | ||||
|     "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||||
|     "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "repository": "jshttp/accepts", | ||||
|   "dependencies": { | ||||
|     "mime-types": "~2.1.34", | ||||
|     "negotiator": "0.6.3" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "deep-equal": "1.0.1", | ||||
|     "eslint": "7.32.0", | ||||
|     "eslint-config-standard": "14.1.1", | ||||
|     "eslint-plugin-import": "2.25.4", | ||||
|     "eslint-plugin-markdown": "2.2.1", | ||||
|     "eslint-plugin-node": "11.1.0", | ||||
|     "eslint-plugin-promise": "4.3.1", | ||||
|     "eslint-plugin-standard": "4.1.0", | ||||
|     "mocha": "9.2.0", | ||||
|     "nyc": "15.1.0" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "LICENSE", | ||||
|     "HISTORY.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.6" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint": "eslint .", | ||||
|     "test": "mocha --reporter spec --check-leaks --bail test/", | ||||
|     "test-ci": "nyc --reporter=lcov --reporter=text npm test", | ||||
|     "test-cov": "nyc --reporter=html --reporter=text npm test" | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "content", | ||||
|     "negotiation", | ||||
|     "accept", | ||||
|     "accepts" | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										21
									
								
								17/node_modules/array-flatten/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								17/node_modules/array-flatten/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| The MIT License (MIT) | ||||
|  | ||||
| Copyright (c) 2014 Blake Embrey (hello@blakeembrey.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. | ||||
							
								
								
									
										43
									
								
								17/node_modules/array-flatten/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								17/node_modules/array-flatten/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| # Array Flatten | ||||
|  | ||||
| [![NPM version][npm-image]][npm-url] | ||||
| [![NPM downloads][downloads-image]][downloads-url] | ||||
| [![Build status][travis-image]][travis-url] | ||||
| [![Test coverage][coveralls-image]][coveralls-url] | ||||
|  | ||||
| > Flatten an array of nested arrays into a single flat array. Accepts an optional depth. | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ``` | ||||
| npm install array-flatten --save | ||||
| ``` | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| ```javascript | ||||
| var flatten = require('array-flatten') | ||||
|  | ||||
| flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) | ||||
| //=> [1, 2, 3, 4, 5, 6, 7, 8, 9] | ||||
|  | ||||
| flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) | ||||
| //=> [1, 2, 3, [4, [5], 6], 7, 8, 9] | ||||
|  | ||||
| (function () { | ||||
|   flatten(arguments) //=> [1, 2, 3] | ||||
| })(1, [2, 3]) | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
| MIT | ||||
|  | ||||
| [npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat | ||||
| [npm-url]: https://npmjs.org/package/array-flatten | ||||
| [downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat | ||||
| [downloads-url]: https://npmjs.org/package/array-flatten | ||||
| [travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat | ||||
| [travis-url]: https://travis-ci.org/blakeembrey/array-flatten | ||||
| [coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat | ||||
| [coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master | ||||
							
								
								
									
										64
									
								
								17/node_modules/array-flatten/array-flatten.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								17/node_modules/array-flatten/array-flatten.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Expose `arrayFlatten`. | ||||
|  */ | ||||
| module.exports = arrayFlatten | ||||
|  | ||||
| /** | ||||
|  * Recursive flatten function with depth. | ||||
|  * | ||||
|  * @param  {Array}  array | ||||
|  * @param  {Array}  result | ||||
|  * @param  {Number} depth | ||||
|  * @return {Array} | ||||
|  */ | ||||
| function flattenWithDepth (array, result, depth) { | ||||
|   for (var i = 0; i < array.length; i++) { | ||||
|     var value = array[i] | ||||
|  | ||||
|     if (depth > 0 && Array.isArray(value)) { | ||||
|       flattenWithDepth(value, result, depth - 1) | ||||
|     } else { | ||||
|       result.push(value) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return result | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Recursive flatten function. Omitting depth is slightly faster. | ||||
|  * | ||||
|  * @param  {Array} array | ||||
|  * @param  {Array} result | ||||
|  * @return {Array} | ||||
|  */ | ||||
| function flattenForever (array, result) { | ||||
|   for (var i = 0; i < array.length; i++) { | ||||
|     var value = array[i] | ||||
|  | ||||
|     if (Array.isArray(value)) { | ||||
|       flattenForever(value, result) | ||||
|     } else { | ||||
|       result.push(value) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return result | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Flatten an array, with the ability to define a depth. | ||||
|  * | ||||
|  * @param  {Array}  array | ||||
|  * @param  {Number} depth | ||||
|  * @return {Array} | ||||
|  */ | ||||
| function arrayFlatten (array, depth) { | ||||
|   if (depth == null) { | ||||
|     return flattenForever(array, []) | ||||
|   } | ||||
|  | ||||
|   return flattenWithDepth(array, [], depth) | ||||
| } | ||||
							
								
								
									
										39
									
								
								17/node_modules/array-flatten/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								17/node_modules/array-flatten/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| { | ||||
|   "name": "array-flatten", | ||||
|   "version": "1.1.1", | ||||
|   "description": "Flatten an array of nested arrays into a single flat array", | ||||
|   "main": "array-flatten.js", | ||||
|   "files": [ | ||||
|     "array-flatten.js", | ||||
|     "LICENSE" | ||||
|   ], | ||||
|   "scripts": { | ||||
|     "test": "istanbul cover _mocha -- -R spec" | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git://github.com/blakeembrey/array-flatten.git" | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "array", | ||||
|     "flatten", | ||||
|     "arguments", | ||||
|     "depth" | ||||
|   ], | ||||
|   "author": { | ||||
|     "name": "Blake Embrey", | ||||
|     "email": "hello@blakeembrey.com", | ||||
|     "url": "http://blakeembrey.me" | ||||
|   }, | ||||
|   "license": "MIT", | ||||
|   "bugs": { | ||||
|     "url": "https://github.com/blakeembrey/array-flatten/issues" | ||||
|   }, | ||||
|   "homepage": "https://github.com/blakeembrey/array-flatten", | ||||
|   "devDependencies": { | ||||
|     "istanbul": "^0.3.13", | ||||
|     "mocha": "^2.2.4", | ||||
|     "pre-commit": "^1.0.7", | ||||
|     "standard": "^3.7.3" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										657
									
								
								17/node_modules/body-parser/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										657
									
								
								17/node_modules/body-parser/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,657 @@ | ||||
| 1.20.1 / 2022-10-06 | ||||
| =================== | ||||
|  | ||||
|   * deps: qs@6.11.0 | ||||
|   * perf: remove unnecessary object clone | ||||
|  | ||||
| 1.20.0 / 2022-04-02 | ||||
| =================== | ||||
|  | ||||
|   * Fix error message for json parse whitespace in `strict` | ||||
|   * Fix internal error when inflated body exceeds limit | ||||
|   * Prevent loss of async hooks context | ||||
|   * Prevent hanging when request already read | ||||
|   * deps: depd@2.0.0 | ||||
|     - Replace internal `eval` usage with `Function` constructor | ||||
|     - Use instance methods on `process` to check for listeners | ||||
|   * deps: http-errors@2.0.0 | ||||
|     - deps: depd@2.0.0 | ||||
|     - deps: statuses@2.0.1 | ||||
|   * deps: on-finished@2.4.1 | ||||
|   * deps: qs@6.10.3 | ||||
|   * deps: raw-body@2.5.1 | ||||
|     - deps: http-errors@2.0.0 | ||||
|  | ||||
| 1.19.2 / 2022-02-15 | ||||
| =================== | ||||
|  | ||||
|   * deps: bytes@3.1.2 | ||||
|   * deps: qs@6.9.7 | ||||
|     * Fix handling of `__proto__` keys | ||||
|   * deps: raw-body@2.4.3 | ||||
|     - deps: bytes@3.1.2 | ||||
|  | ||||
| 1.19.1 / 2021-12-10 | ||||
| =================== | ||||
|  | ||||
|   * deps: bytes@3.1.1 | ||||
|   * deps: http-errors@1.8.1 | ||||
|     - deps: inherits@2.0.4 | ||||
|     - deps: toidentifier@1.0.1 | ||||
|     - deps: setprototypeof@1.2.0 | ||||
|   * deps: qs@6.9.6 | ||||
|   * deps: raw-body@2.4.2 | ||||
|     - deps: bytes@3.1.1 | ||||
|     - deps: http-errors@1.8.1 | ||||
|   * deps: safe-buffer@5.2.1 | ||||
|   * deps: type-is@~1.6.18 | ||||
|  | ||||
| 1.19.0 / 2019-04-25 | ||||
| =================== | ||||
|  | ||||
|   * deps: bytes@3.1.0 | ||||
|     - Add petabyte (`pb`) support | ||||
|   * deps: http-errors@1.7.2 | ||||
|     - Set constructor name when possible | ||||
|     - deps: setprototypeof@1.1.1 | ||||
|     - deps: statuses@'>= 1.5.0 < 2' | ||||
|   * deps: iconv-lite@0.4.24 | ||||
|     - Added encoding MIK | ||||
|   * deps: qs@6.7.0 | ||||
|     - Fix parsing array brackets after index | ||||
|   * deps: raw-body@2.4.0 | ||||
|     - deps: bytes@3.1.0 | ||||
|     - deps: http-errors@1.7.2 | ||||
|     - deps: iconv-lite@0.4.24 | ||||
|   * deps: type-is@~1.6.17 | ||||
|     - deps: mime-types@~2.1.24 | ||||
|     - perf: prevent internal `throw` on invalid type | ||||
|  | ||||
| 1.18.3 / 2018-05-14 | ||||
| =================== | ||||
|  | ||||
|   * Fix stack trace for strict json parse error | ||||
|   * deps: depd@~1.1.2 | ||||
|     - perf: remove argument reassignment | ||||
|   * deps: http-errors@~1.6.3 | ||||
|     - deps: depd@~1.1.2 | ||||
|     - deps: setprototypeof@1.1.0 | ||||
|     - deps: statuses@'>= 1.3.1 < 2' | ||||
|   * deps: iconv-lite@0.4.23 | ||||
|     - Fix loading encoding with year appended | ||||
|     - Fix deprecation warnings on Node.js 10+ | ||||
|   * deps: qs@6.5.2 | ||||
|   * deps: raw-body@2.3.3 | ||||
|     - deps: http-errors@1.6.3 | ||||
|     - deps: iconv-lite@0.4.23 | ||||
|   * deps: type-is@~1.6.16 | ||||
|     - deps: mime-types@~2.1.18 | ||||
|  | ||||
| 1.18.2 / 2017-09-22 | ||||
| =================== | ||||
|  | ||||
|   * deps: debug@2.6.9 | ||||
|   * perf: remove argument reassignment | ||||
|  | ||||
| 1.18.1 / 2017-09-12 | ||||
| =================== | ||||
|  | ||||
|   * deps: content-type@~1.0.4 | ||||
|     - perf: remove argument reassignment | ||||
|     - perf: skip parameter parsing when no parameters | ||||
|   * deps: iconv-lite@0.4.19 | ||||
|     - Fix ISO-8859-1 regression | ||||
|     - Update Windows-1255 | ||||
|   * deps: qs@6.5.1 | ||||
|     - Fix parsing & compacting very deep objects | ||||
|   * deps: raw-body@2.3.2 | ||||
|     - deps: iconv-lite@0.4.19 | ||||
|  | ||||
| 1.18.0 / 2017-09-08 | ||||
| =================== | ||||
|  | ||||
|   * Fix JSON strict violation error to match native parse error | ||||
|   * Include the `body` property on verify errors | ||||
|   * Include the `type` property on all generated errors | ||||
|   * Use `http-errors` to set status code on errors | ||||
|   * deps: bytes@3.0.0 | ||||
|   * deps: debug@2.6.8 | ||||
|   * deps: depd@~1.1.1 | ||||
|     - Remove unnecessary `Buffer` loading | ||||
|   * deps: http-errors@~1.6.2 | ||||
|     - deps: depd@1.1.1 | ||||
|   * deps: iconv-lite@0.4.18 | ||||
|     - Add support for React Native | ||||
|     - Add a warning if not loaded as utf-8 | ||||
|     - Fix CESU-8 decoding in Node.js 8 | ||||
|     - Improve speed of ISO-8859-1 encoding | ||||
|   * deps: qs@6.5.0 | ||||
|   * deps: raw-body@2.3.1 | ||||
|     - Use `http-errors` for standard emitted errors | ||||
|     - deps: bytes@3.0.0 | ||||
|     - deps: iconv-lite@0.4.18 | ||||
|     - perf: skip buffer decoding on overage chunk | ||||
|   * perf: prevent internal `throw` when missing charset | ||||
|  | ||||
| 1.17.2 / 2017-05-17 | ||||
| =================== | ||||
|  | ||||
|   * deps: debug@2.6.7 | ||||
|     - Fix `DEBUG_MAX_ARRAY_LENGTH` | ||||
|     - deps: ms@2.0.0 | ||||
|   * deps: type-is@~1.6.15 | ||||
|     - deps: mime-types@~2.1.15 | ||||
|  | ||||
| 1.17.1 / 2017-03-06 | ||||
| =================== | ||||
|  | ||||
|   * deps: qs@6.4.0 | ||||
|     - Fix regression parsing keys starting with `[` | ||||
|  | ||||
| 1.17.0 / 2017-03-01 | ||||
| =================== | ||||
|  | ||||
|   * deps: http-errors@~1.6.1 | ||||
|     - Make `message` property enumerable for `HttpError`s | ||||
|     - deps: setprototypeof@1.0.3 | ||||
|   * deps: qs@6.3.1 | ||||
|     - Fix compacting nested arrays | ||||
|  | ||||
| 1.16.1 / 2017-02-10 | ||||
| =================== | ||||
|  | ||||
|   * deps: debug@2.6.1 | ||||
|     - Fix deprecation messages in WebStorm and other editors | ||||
|     - Undeprecate `DEBUG_FD` set to `1` or `2` | ||||
|  | ||||
| 1.16.0 / 2017-01-17 | ||||
| =================== | ||||
|  | ||||
|   * deps: debug@2.6.0 | ||||
|     - Allow colors in workers | ||||
|     - Deprecated `DEBUG_FD` environment variable | ||||
|     - Fix error when running under React Native | ||||
|     - Use same color for same namespace | ||||
|     - deps: ms@0.7.2 | ||||
|   * deps: http-errors@~1.5.1 | ||||
|     - deps: inherits@2.0.3 | ||||
|     - deps: setprototypeof@1.0.2 | ||||
|     - deps: statuses@'>= 1.3.1 < 2' | ||||
|   * deps: iconv-lite@0.4.15 | ||||
|     - Added encoding MS-31J | ||||
|     - Added encoding MS-932 | ||||
|     - Added encoding MS-936 | ||||
|     - Added encoding MS-949 | ||||
|     - Added encoding MS-950 | ||||
|     - Fix GBK/GB18030 handling of Euro character | ||||
|   * deps: qs@6.2.1 | ||||
|     - Fix array parsing from skipping empty values | ||||
|   * deps: raw-body@~2.2.0 | ||||
|     - deps: iconv-lite@0.4.15 | ||||
|   * deps: type-is@~1.6.14 | ||||
|     - deps: mime-types@~2.1.13 | ||||
|  | ||||
| 1.15.2 / 2016-06-19 | ||||
| =================== | ||||
|  | ||||
|   * deps: bytes@2.4.0 | ||||
|   * deps: content-type@~1.0.2 | ||||
|     - perf: enable strict mode | ||||
|   * deps: http-errors@~1.5.0 | ||||
|     - Use `setprototypeof` module to replace `__proto__` setting | ||||
|     - deps: statuses@'>= 1.3.0 < 2' | ||||
|     - perf: enable strict mode | ||||
|   * deps: qs@6.2.0 | ||||
|   * deps: raw-body@~2.1.7 | ||||
|     - deps: bytes@2.4.0 | ||||
|     - perf: remove double-cleanup on happy path | ||||
|   * deps: type-is@~1.6.13 | ||||
|     - deps: mime-types@~2.1.11 | ||||
|  | ||||
| 1.15.1 / 2016-05-05 | ||||
| =================== | ||||
|  | ||||
|   * deps: bytes@2.3.0 | ||||
|     - Drop partial bytes on all parsed units | ||||
|     - Fix parsing byte string that looks like hex | ||||
|   * deps: raw-body@~2.1.6 | ||||
|     - deps: bytes@2.3.0 | ||||
|   * deps: type-is@~1.6.12 | ||||
|     - deps: mime-types@~2.1.10 | ||||
|  | ||||
| 1.15.0 / 2016-02-10 | ||||
| =================== | ||||
|  | ||||
|   * deps: http-errors@~1.4.0 | ||||
|     - Add `HttpError` export, for `err instanceof createError.HttpError` | ||||
|     - deps: inherits@2.0.1 | ||||
|     - deps: statuses@'>= 1.2.1 < 2' | ||||
|   * deps: qs@6.1.0 | ||||
|   * deps: type-is@~1.6.11 | ||||
|     - deps: mime-types@~2.1.9 | ||||
|  | ||||
| 1.14.2 / 2015-12-16 | ||||
| =================== | ||||
|  | ||||
|   * deps: bytes@2.2.0 | ||||
|   * deps: iconv-lite@0.4.13 | ||||
|   * deps: qs@5.2.0 | ||||
|   * deps: raw-body@~2.1.5 | ||||
|     - deps: bytes@2.2.0 | ||||
|     - deps: iconv-lite@0.4.13 | ||||
|   * deps: type-is@~1.6.10 | ||||
|     - deps: mime-types@~2.1.8 | ||||
|  | ||||
| 1.14.1 / 2015-09-27 | ||||
| =================== | ||||
|  | ||||
|   * Fix issue where invalid charset results in 400 when `verify` used | ||||
|   * deps: iconv-lite@0.4.12 | ||||
|     - Fix CESU-8 decoding in Node.js 4.x | ||||
|   * deps: raw-body@~2.1.4 | ||||
|     - Fix masking critical errors from `iconv-lite` | ||||
|     - deps: iconv-lite@0.4.12 | ||||
|   * deps: type-is@~1.6.9 | ||||
|     - deps: mime-types@~2.1.7 | ||||
|  | ||||
| 1.14.0 / 2015-09-16 | ||||
| =================== | ||||
|  | ||||
|   * Fix JSON strict parse error to match syntax errors | ||||
|   * Provide static `require` analysis in `urlencoded` parser | ||||
|   * deps: depd@~1.1.0 | ||||
|     - Support web browser loading | ||||
|   * deps: qs@5.1.0 | ||||
|   * deps: raw-body@~2.1.3 | ||||
|     - Fix sync callback when attaching data listener causes sync read | ||||
|   * deps: type-is@~1.6.8 | ||||
|     - Fix type error when given invalid type to match against | ||||
|     - deps: mime-types@~2.1.6 | ||||
|  | ||||
| 1.13.3 / 2015-07-31 | ||||
| =================== | ||||
|  | ||||
|   * deps: type-is@~1.6.6 | ||||
|     - deps: mime-types@~2.1.4 | ||||
|  | ||||
| 1.13.2 / 2015-07-05 | ||||
| =================== | ||||
|  | ||||
|   * deps: iconv-lite@0.4.11 | ||||
|   * deps: qs@4.0.0 | ||||
|     - Fix dropping parameters like `hasOwnProperty` | ||||
|     - Fix user-visible incompatibilities from 3.1.0 | ||||
|     - Fix various parsing edge cases | ||||
|   * deps: raw-body@~2.1.2 | ||||
|     - Fix error stack traces to skip `makeError` | ||||
|     - deps: iconv-lite@0.4.11 | ||||
|   * deps: type-is@~1.6.4 | ||||
|     - deps: mime-types@~2.1.2 | ||||
|     - perf: enable strict mode | ||||
|     - perf: remove argument reassignment | ||||
|  | ||||
| 1.13.1 / 2015-06-16 | ||||
| =================== | ||||
|  | ||||
|   * deps: qs@2.4.2 | ||||
|     - Downgraded from 3.1.0 because of user-visible incompatibilities | ||||
|  | ||||
| 1.13.0 / 2015-06-14 | ||||
| =================== | ||||
|  | ||||
|   * Add `statusCode` property on `Error`s, in addition to `status` | ||||
|   * Change `type` default to `application/json` for JSON parser | ||||
|   * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser | ||||
|   * Provide static `require` analysis | ||||
|   * Use the `http-errors` module to generate errors | ||||
|   * deps: bytes@2.1.0 | ||||
|     - Slight optimizations | ||||
|   * deps: iconv-lite@0.4.10 | ||||
|     - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails | ||||
|     - Leading BOM is now removed when decoding | ||||
|   * deps: on-finished@~2.3.0 | ||||
|     - Add defined behavior for HTTP `CONNECT` requests | ||||
|     - Add defined behavior for HTTP `Upgrade` requests | ||||
|     - deps: ee-first@1.1.1 | ||||
|   * deps: qs@3.1.0 | ||||
|     - Fix dropping parameters like `hasOwnProperty` | ||||
|     - Fix various parsing edge cases | ||||
|     - Parsed object now has `null` prototype | ||||
|   * deps: raw-body@~2.1.1 | ||||
|     - Use `unpipe` module for unpiping requests | ||||
|     - deps: iconv-lite@0.4.10 | ||||
|   * deps: type-is@~1.6.3 | ||||
|     - deps: mime-types@~2.1.1 | ||||
|     - perf: reduce try block size | ||||
|     - perf: remove bitwise operations | ||||
|   * perf: enable strict mode | ||||
|   * perf: remove argument reassignment | ||||
|   * perf: remove delete call | ||||
|  | ||||
| 1.12.4 / 2015-05-10 | ||||
| =================== | ||||
|  | ||||
|   * deps: debug@~2.2.0 | ||||
|   * deps: qs@2.4.2 | ||||
|     - Fix allowing parameters like `constructor` | ||||
|   * deps: on-finished@~2.2.1 | ||||
|   * deps: raw-body@~2.0.1 | ||||
|     - Fix a false-positive when unpiping in Node.js 0.8 | ||||
|     - deps: bytes@2.0.1 | ||||
|   * deps: type-is@~1.6.2 | ||||
|     - deps: mime-types@~2.0.11 | ||||
|  | ||||
| 1.12.3 / 2015-04-15 | ||||
| =================== | ||||
|  | ||||
|   * Slight efficiency improvement when not debugging | ||||
|   * deps: depd@~1.0.1 | ||||
|   * deps: iconv-lite@0.4.8 | ||||
|     - Add encoding alias UNICODE-1-1-UTF-7 | ||||
|   * deps: raw-body@1.3.4 | ||||
|     - Fix hanging callback if request aborts during read | ||||
|     - deps: iconv-lite@0.4.8 | ||||
|  | ||||
| 1.12.2 / 2015-03-16 | ||||
| =================== | ||||
|  | ||||
|   * deps: qs@2.4.1 | ||||
|     - Fix error when parameter `hasOwnProperty` is present | ||||
|  | ||||
| 1.12.1 / 2015-03-15 | ||||
| =================== | ||||
|  | ||||
|   * deps: debug@~2.1.3 | ||||
|     - Fix high intensity foreground color for bold | ||||
|     - deps: ms@0.7.0 | ||||
|   * deps: type-is@~1.6.1 | ||||
|     - deps: mime-types@~2.0.10 | ||||
|  | ||||
| 1.12.0 / 2015-02-13 | ||||
| =================== | ||||
|  | ||||
|   * add `debug` messages | ||||
|   * accept a function for the `type` option | ||||
|   * use `content-type` to parse `Content-Type` headers | ||||
|   * deps: iconv-lite@0.4.7 | ||||
|     - Gracefully support enumerables on `Object.prototype` | ||||
|   * deps: raw-body@1.3.3 | ||||
|     - deps: iconv-lite@0.4.7 | ||||
|   * deps: type-is@~1.6.0 | ||||
|     - fix argument reassignment | ||||
|     - fix false-positives in `hasBody` `Transfer-Encoding` check | ||||
|     - support wildcard for both type and subtype (`*/*`) | ||||
|     - deps: mime-types@~2.0.9 | ||||
|  | ||||
| 1.11.0 / 2015-01-30 | ||||
| =================== | ||||
|  | ||||
|   * make internal `extended: true` depth limit infinity | ||||
|   * deps: type-is@~1.5.6 | ||||
|     - deps: mime-types@~2.0.8 | ||||
|  | ||||
| 1.10.2 / 2015-01-20 | ||||
| =================== | ||||
|  | ||||
|   * deps: iconv-lite@0.4.6 | ||||
|     - Fix rare aliases of single-byte encodings | ||||
|   * deps: raw-body@1.3.2 | ||||
|     - deps: iconv-lite@0.4.6 | ||||
|  | ||||
| 1.10.1 / 2015-01-01 | ||||
| =================== | ||||
|  | ||||
|   * deps: on-finished@~2.2.0 | ||||
|   * deps: type-is@~1.5.5 | ||||
|     - deps: mime-types@~2.0.7 | ||||
|  | ||||
| 1.10.0 / 2014-12-02 | ||||
| =================== | ||||
|  | ||||
|   * make internal `extended: true` array limit dynamic | ||||
|  | ||||
| 1.9.3 / 2014-11-21 | ||||
| ================== | ||||
|  | ||||
|   * deps: iconv-lite@0.4.5 | ||||
|     - Fix Windows-31J and X-SJIS encoding support | ||||
|   * deps: qs@2.3.3 | ||||
|     - Fix `arrayLimit` behavior | ||||
|   * deps: raw-body@1.3.1 | ||||
|     - deps: iconv-lite@0.4.5 | ||||
|   * deps: type-is@~1.5.3 | ||||
|     - deps: mime-types@~2.0.3 | ||||
|  | ||||
| 1.9.2 / 2014-10-27 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@2.3.2 | ||||
|     - Fix parsing of mixed objects and values | ||||
|  | ||||
| 1.9.1 / 2014-10-22 | ||||
| ================== | ||||
|  | ||||
|   * deps: on-finished@~2.1.1 | ||||
|     - Fix handling of pipelined requests | ||||
|   * deps: qs@2.3.0 | ||||
|     - Fix parsing of mixed implicit and explicit arrays | ||||
|   * deps: type-is@~1.5.2 | ||||
|     - deps: mime-types@~2.0.2 | ||||
|  | ||||
| 1.9.0 / 2014-09-24 | ||||
| ================== | ||||
|  | ||||
|   * include the charset in "unsupported charset" error message | ||||
|   * include the encoding in "unsupported content encoding" error message | ||||
|   * deps: depd@~1.0.0 | ||||
|  | ||||
| 1.8.4 / 2014-09-23 | ||||
| ================== | ||||
|  | ||||
|   * fix content encoding to be case-insensitive | ||||
|  | ||||
| 1.8.3 / 2014-09-19 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@2.2.4 | ||||
|     - Fix issue with object keys starting with numbers truncated | ||||
|  | ||||
| 1.8.2 / 2014-09-15 | ||||
| ================== | ||||
|  | ||||
|   * deps: depd@0.4.5 | ||||
|  | ||||
| 1.8.1 / 2014-09-07 | ||||
| ================== | ||||
|  | ||||
|   * deps: media-typer@0.3.0 | ||||
|   * deps: type-is@~1.5.1 | ||||
|  | ||||
| 1.8.0 / 2014-09-05 | ||||
| ================== | ||||
|  | ||||
|   * make empty-body-handling consistent between chunked requests | ||||
|     - empty `json` produces `{}` | ||||
|     - empty `raw` produces `new Buffer(0)` | ||||
|     - empty `text` produces `''` | ||||
|     - empty `urlencoded` produces `{}` | ||||
|   * deps: qs@2.2.3 | ||||
|     - Fix issue where first empty value in array is discarded | ||||
|   * deps: type-is@~1.5.0 | ||||
|     - fix `hasbody` to be true for `content-length: 0` | ||||
|  | ||||
| 1.7.0 / 2014-09-01 | ||||
| ================== | ||||
|  | ||||
|   * add `parameterLimit` option to `urlencoded` parser | ||||
|   * change `urlencoded` extended array limit to 100 | ||||
|   * respond with 413 when over `parameterLimit` in `urlencoded` | ||||
|  | ||||
| 1.6.7 / 2014-08-29 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@2.2.2 | ||||
|     - Remove unnecessary cloning | ||||
|  | ||||
| 1.6.6 / 2014-08-27 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@2.2.0 | ||||
|     - Array parsing fix | ||||
|     - Performance improvements | ||||
|  | ||||
| 1.6.5 / 2014-08-16 | ||||
| ================== | ||||
|  | ||||
|   * deps: on-finished@2.1.0 | ||||
|  | ||||
| 1.6.4 / 2014-08-14 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@1.2.2 | ||||
|  | ||||
| 1.6.3 / 2014-08-10 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@1.2.1 | ||||
|  | ||||
| 1.6.2 / 2014-08-07 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@1.2.0 | ||||
|     - Fix parsing array of objects | ||||
|  | ||||
| 1.6.1 / 2014-08-06 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@1.1.0 | ||||
|     - Accept urlencoded square brackets | ||||
|     - Accept empty values in implicit array notation | ||||
|  | ||||
| 1.6.0 / 2014-08-05 | ||||
| ================== | ||||
|  | ||||
|   * deps: qs@1.0.2 | ||||
|     - Complete rewrite | ||||
|     - Limits array length to 20 | ||||
|     - Limits object depth to 5 | ||||
|     - Limits parameters to 1,000 | ||||
|  | ||||
| 1.5.2 / 2014-07-27 | ||||
| ================== | ||||
|  | ||||
|   * deps: depd@0.4.4 | ||||
|     - Work-around v8 generating empty stack traces | ||||
|  | ||||
| 1.5.1 / 2014-07-26 | ||||
| ================== | ||||
|  | ||||
|   * deps: depd@0.4.3 | ||||
|     - Fix exception when global `Error.stackTraceLimit` is too low | ||||
|  | ||||
| 1.5.0 / 2014-07-20 | ||||
| ================== | ||||
|  | ||||
|   * deps: depd@0.4.2 | ||||
|     - Add `TRACE_DEPRECATION` environment variable | ||||
|     - Remove non-standard grey color from color output | ||||
|     - Support `--no-deprecation` argument | ||||
|     - Support `--trace-deprecation` argument | ||||
|   * deps: iconv-lite@0.4.4 | ||||
|     - Added encoding UTF-7 | ||||
|   * deps: raw-body@1.3.0 | ||||
|     - deps: iconv-lite@0.4.4 | ||||
|     - Added encoding UTF-7 | ||||
|     - Fix `Cannot switch to old mode now` error on Node.js 0.10+ | ||||
|   * deps: type-is@~1.3.2 | ||||
|  | ||||
| 1.4.3 / 2014-06-19 | ||||
| ================== | ||||
|  | ||||
|   * deps: type-is@1.3.1 | ||||
|     - fix global variable leak | ||||
|  | ||||
| 1.4.2 / 2014-06-19 | ||||
| ================== | ||||
|  | ||||
|   * deps: type-is@1.3.0 | ||||
|     - improve type parsing | ||||
|  | ||||
| 1.4.1 / 2014-06-19 | ||||
| ================== | ||||
|  | ||||
|   * fix urlencoded extended deprecation message | ||||
|  | ||||
| 1.4.0 / 2014-06-19 | ||||
| ================== | ||||
|  | ||||
|   * add `text` parser | ||||
|   * add `raw` parser | ||||
|   * check accepted charset in content-type (accepts utf-8) | ||||
|   * check accepted encoding in content-encoding (accepts identity) | ||||
|   * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed | ||||
|   * deprecate `urlencoded()` without provided `extended` option | ||||
|   * lazy-load urlencoded parsers | ||||
|   * parsers split into files for reduced mem usage | ||||
|   * support gzip and deflate bodies | ||||
|     - set `inflate: false` to turn off | ||||
|   * deps: raw-body@1.2.2 | ||||
|     - Support all encodings from `iconv-lite` | ||||
|  | ||||
| 1.3.1 / 2014-06-11 | ||||
| ================== | ||||
|  | ||||
|   * deps: type-is@1.2.1 | ||||
|     - Switch dependency from mime to mime-types@1.0.0 | ||||
|  | ||||
| 1.3.0 / 2014-05-31 | ||||
| ================== | ||||
|  | ||||
|   * add `extended` option to urlencoded parser | ||||
|  | ||||
| 1.2.2 / 2014-05-27 | ||||
| ================== | ||||
|  | ||||
|   * deps: raw-body@1.1.6 | ||||
|     - assert stream encoding on node.js 0.8 | ||||
|     - assert stream encoding on node.js < 0.10.6 | ||||
|     - deps: bytes@1 | ||||
|  | ||||
| 1.2.1 / 2014-05-26 | ||||
| ================== | ||||
|  | ||||
|   * invoke `next(err)` after request fully read | ||||
|     - prevents hung responses and socket hang ups | ||||
|  | ||||
| 1.2.0 / 2014-05-11 | ||||
| ================== | ||||
|  | ||||
|   * add `verify` option | ||||
|   * deps: type-is@1.2.0 | ||||
|     - support suffix matching | ||||
|  | ||||
| 1.1.2 / 2014-05-11 | ||||
| ================== | ||||
|  | ||||
|   * improve json parser speed | ||||
|  | ||||
| 1.1.1 / 2014-05-11 | ||||
| ================== | ||||
|  | ||||
|   * fix repeated limit parsing with every request | ||||
|  | ||||
| 1.1.0 / 2014-05-10 | ||||
| ================== | ||||
|  | ||||
|   * add `type` option | ||||
|   * deps: pin for safety and consistency | ||||
|  | ||||
| 1.0.2 / 2014-04-14 | ||||
| ================== | ||||
|  | ||||
|   * use `type-is` module | ||||
|  | ||||
| 1.0.1 / 2014-03-20 | ||||
| ================== | ||||
|  | ||||
|   * lower default limits to 100kb | ||||
							
								
								
									
										23
									
								
								17/node_modules/body-parser/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								17/node_modules/body-parser/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2014 Jonathan Ong <me@jongleberry.com> | ||||
| Copyright (c) 2014-2015 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. | ||||
							
								
								
									
										464
									
								
								17/node_modules/body-parser/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										464
									
								
								17/node_modules/body-parser/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,464 @@ | ||||
| # body-parser | ||||
|  | ||||
| [![NPM Version][npm-image]][npm-url] | ||||
| [![NPM Downloads][downloads-image]][downloads-url] | ||||
| [![Build Status][github-actions-ci-image]][github-actions-ci-url] | ||||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||||
|  | ||||
| Node.js body parsing middleware. | ||||
|  | ||||
| Parse incoming request bodies in a middleware before your handlers, available | ||||
| under the `req.body` property. | ||||
|  | ||||
| **Note** As `req.body`'s shape is based on user-controlled input, all | ||||
| properties and values in this object are untrusted and should be validated | ||||
| before trusting. For example, `req.body.foo.toString()` may fail in multiple | ||||
| ways, for example the `foo` property may not be there or may not be a string, | ||||
| and `toString` may not be a function and instead a string or other user input. | ||||
|  | ||||
| [Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/). | ||||
|  | ||||
| _This does not handle multipart bodies_, due to their complex and typically | ||||
| large nature. For multipart bodies, you may be interested in the following | ||||
| modules: | ||||
|  | ||||
|   * [busboy](https://www.npmjs.org/package/busboy#readme) and | ||||
|     [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme) | ||||
|   * [multiparty](https://www.npmjs.org/package/multiparty#readme) and | ||||
|     [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme) | ||||
|   * [formidable](https://www.npmjs.org/package/formidable#readme) | ||||
|   * [multer](https://www.npmjs.org/package/multer#readme) | ||||
|  | ||||
| This module provides the following parsers: | ||||
|  | ||||
|   * [JSON body parser](#bodyparserjsonoptions) | ||||
|   * [Raw body parser](#bodyparserrawoptions) | ||||
|   * [Text body parser](#bodyparsertextoptions) | ||||
|   * [URL-encoded form body parser](#bodyparserurlencodedoptions) | ||||
|  | ||||
| Other body parsers you might be interested in: | ||||
|  | ||||
| - [body](https://www.npmjs.org/package/body#readme) | ||||
| - [co-body](https://www.npmjs.org/package/co-body#readme) | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ```sh | ||||
| $ npm install body-parser | ||||
| ``` | ||||
|  | ||||
| ## API | ||||
|  | ||||
| ```js | ||||
| var bodyParser = require('body-parser') | ||||
| ``` | ||||
|  | ||||
| The `bodyParser` object exposes various factories to create middlewares. All | ||||
| middlewares will populate the `req.body` property with the parsed body when | ||||
| the `Content-Type` request header matches the `type` option, or an empty | ||||
| object (`{}`) if there was no body to parse, the `Content-Type` was not matched, | ||||
| or an error occurred. | ||||
|  | ||||
| The various errors returned by this module are described in the | ||||
| [errors section](#errors). | ||||
|  | ||||
| ### bodyParser.json([options]) | ||||
|  | ||||
| Returns middleware that only parses `json` and only looks at requests where | ||||
| the `Content-Type` header matches the `type` option. This parser accepts any | ||||
| Unicode encoding of the body and supports automatic inflation of `gzip` and | ||||
| `deflate` encodings. | ||||
|  | ||||
| A new `body` object containing the parsed data is populated on the `request` | ||||
| object after the middleware (i.e. `req.body`). | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| The `json` function takes an optional `options` object that may contain any of | ||||
| the following keys: | ||||
|  | ||||
| ##### inflate | ||||
|  | ||||
| When set to `true`, then deflated (compressed) bodies will be inflated; when | ||||
| `false`, deflated bodies are rejected. Defaults to `true`. | ||||
|  | ||||
| ##### limit | ||||
|  | ||||
| Controls the maximum request body size. If this is a number, then the value | ||||
| specifies the number of bytes; if it is a string, the value is passed to the | ||||
| [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults | ||||
| to `'100kb'`. | ||||
|  | ||||
| ##### reviver | ||||
|  | ||||
| The `reviver` option is passed directly to `JSON.parse` as the second | ||||
| argument. You can find more information on this argument | ||||
| [in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). | ||||
|  | ||||
| ##### strict | ||||
|  | ||||
| When set to `true`, will only accept arrays and objects; when `false` will | ||||
| accept anything `JSON.parse` accepts. Defaults to `true`. | ||||
|  | ||||
| ##### type | ||||
|  | ||||
| The `type` option is used to determine what media type the middleware will | ||||
| parse. This option can be a string, array of strings, or a function. If not a | ||||
| function, `type` option is passed directly to the | ||||
| [type-is](https://www.npmjs.org/package/type-is#readme) library and this can | ||||
| be an extension name (like `json`), a mime type (like `application/json`), or | ||||
| a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type` | ||||
| option is called as `fn(req)` and the request is parsed if it returns a truthy | ||||
| value. Defaults to `application/json`. | ||||
|  | ||||
| ##### verify | ||||
|  | ||||
| The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, | ||||
| where `buf` is a `Buffer` of the raw request body and `encoding` is the | ||||
| encoding of the request. The parsing can be aborted by throwing an error. | ||||
|  | ||||
| ### bodyParser.raw([options]) | ||||
|  | ||||
| Returns middleware that parses all bodies as a `Buffer` and only looks at | ||||
| requests where the `Content-Type` header matches the `type` option. This | ||||
| parser supports automatic inflation of `gzip` and `deflate` encodings. | ||||
|  | ||||
| A new `body` object containing the parsed data is populated on the `request` | ||||
| object after the middleware (i.e. `req.body`). This will be a `Buffer` object | ||||
| of the body. | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| The `raw` function takes an optional `options` object that may contain any of | ||||
| the following keys: | ||||
|  | ||||
| ##### inflate | ||||
|  | ||||
| When set to `true`, then deflated (compressed) bodies will be inflated; when | ||||
| `false`, deflated bodies are rejected. Defaults to `true`. | ||||
|  | ||||
| ##### limit | ||||
|  | ||||
| Controls the maximum request body size. If this is a number, then the value | ||||
| specifies the number of bytes; if it is a string, the value is passed to the | ||||
| [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults | ||||
| to `'100kb'`. | ||||
|  | ||||
| ##### type | ||||
|  | ||||
| The `type` option is used to determine what media type the middleware will | ||||
| parse. This option can be a string, array of strings, or a function. | ||||
| If not a function, `type` option is passed directly to the | ||||
| [type-is](https://www.npmjs.org/package/type-is#readme) library and this | ||||
| can be an extension name (like `bin`), a mime type (like | ||||
| `application/octet-stream`), or a mime type with a wildcard (like `*/*` or | ||||
| `application/*`). If a function, the `type` option is called as `fn(req)` | ||||
| and the request is parsed if it returns a truthy value. Defaults to | ||||
| `application/octet-stream`. | ||||
|  | ||||
| ##### verify | ||||
|  | ||||
| The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, | ||||
| where `buf` is a `Buffer` of the raw request body and `encoding` is the | ||||
| encoding of the request. The parsing can be aborted by throwing an error. | ||||
|  | ||||
| ### bodyParser.text([options]) | ||||
|  | ||||
| Returns middleware that parses all bodies as a string and only looks at | ||||
| requests where the `Content-Type` header matches the `type` option. This | ||||
| parser supports automatic inflation of `gzip` and `deflate` encodings. | ||||
|  | ||||
| A new `body` string containing the parsed data is populated on the `request` | ||||
| object after the middleware (i.e. `req.body`). This will be a string of the | ||||
| body. | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| The `text` function takes an optional `options` object that may contain any of | ||||
| the following keys: | ||||
|  | ||||
| ##### defaultCharset | ||||
|  | ||||
| Specify the default character set for the text content if the charset is not | ||||
| specified in the `Content-Type` header of the request. Defaults to `utf-8`. | ||||
|  | ||||
| ##### inflate | ||||
|  | ||||
| When set to `true`, then deflated (compressed) bodies will be inflated; when | ||||
| `false`, deflated bodies are rejected. Defaults to `true`. | ||||
|  | ||||
| ##### limit | ||||
|  | ||||
| Controls the maximum request body size. If this is a number, then the value | ||||
| specifies the number of bytes; if it is a string, the value is passed to the | ||||
| [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults | ||||
| to `'100kb'`. | ||||
|  | ||||
| ##### type | ||||
|  | ||||
| The `type` option is used to determine what media type the middleware will | ||||
| parse. This option can be a string, array of strings, or a function. If not | ||||
| a function, `type` option is passed directly to the | ||||
| [type-is](https://www.npmjs.org/package/type-is#readme) library and this can | ||||
| be an extension name (like `txt`), a mime type (like `text/plain`), or a mime | ||||
| type with a wildcard (like `*/*` or `text/*`). If a function, the `type` | ||||
| option is called as `fn(req)` and the request is parsed if it returns a | ||||
| truthy value. Defaults to `text/plain`. | ||||
|  | ||||
| ##### verify | ||||
|  | ||||
| The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, | ||||
| where `buf` is a `Buffer` of the raw request body and `encoding` is the | ||||
| encoding of the request. The parsing can be aborted by throwing an error. | ||||
|  | ||||
| ### bodyParser.urlencoded([options]) | ||||
|  | ||||
| Returns middleware that only parses `urlencoded` bodies and only looks at | ||||
| requests where the `Content-Type` header matches the `type` option. This | ||||
| parser accepts only UTF-8 encoding of the body and supports automatic | ||||
| inflation of `gzip` and `deflate` encodings. | ||||
|  | ||||
| A new `body` object containing the parsed data is populated on the `request` | ||||
| object after the middleware (i.e. `req.body`). This object will contain | ||||
| key-value pairs, where the value can be a string or array (when `extended` is | ||||
| `false`), or any type (when `extended` is `true`). | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| The `urlencoded` function takes an optional `options` object that may contain | ||||
| any of the following keys: | ||||
|  | ||||
| ##### extended | ||||
|  | ||||
| The `extended` option allows to choose between parsing the URL-encoded data | ||||
| with the `querystring` library (when `false`) or the `qs` library (when | ||||
| `true`). The "extended" syntax allows for rich objects and arrays to be | ||||
| encoded into the URL-encoded format, allowing for a JSON-like experience | ||||
| with URL-encoded. For more information, please | ||||
| [see the qs library](https://www.npmjs.org/package/qs#readme). | ||||
|  | ||||
| Defaults to `true`, but using the default has been deprecated. Please | ||||
| research into the difference between `qs` and `querystring` and choose the | ||||
| appropriate setting. | ||||
|  | ||||
| ##### inflate | ||||
|  | ||||
| When set to `true`, then deflated (compressed) bodies will be inflated; when | ||||
| `false`, deflated bodies are rejected. Defaults to `true`. | ||||
|  | ||||
| ##### limit | ||||
|  | ||||
| Controls the maximum request body size. If this is a number, then the value | ||||
| specifies the number of bytes; if it is a string, the value is passed to the | ||||
| [bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults | ||||
| to `'100kb'`. | ||||
|  | ||||
| ##### parameterLimit | ||||
|  | ||||
| The `parameterLimit` option controls the maximum number of parameters that | ||||
| are allowed in the URL-encoded data. If a request contains more parameters | ||||
| than this value, a 413 will be returned to the client. Defaults to `1000`. | ||||
|  | ||||
| ##### type | ||||
|  | ||||
| The `type` option is used to determine what media type the middleware will | ||||
| parse. This option can be a string, array of strings, or a function. If not | ||||
| a function, `type` option is passed directly to the | ||||
| [type-is](https://www.npmjs.org/package/type-is#readme) library and this can | ||||
| be an extension name (like `urlencoded`), a mime type (like | ||||
| `application/x-www-form-urlencoded`), or a mime type with a wildcard (like | ||||
| `*/x-www-form-urlencoded`). If a function, the `type` option is called as | ||||
| `fn(req)` and the request is parsed if it returns a truthy value. Defaults | ||||
| to `application/x-www-form-urlencoded`. | ||||
|  | ||||
| ##### verify | ||||
|  | ||||
| The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, | ||||
| where `buf` is a `Buffer` of the raw request body and `encoding` is the | ||||
| encoding of the request. The parsing can be aborted by throwing an error. | ||||
|  | ||||
| ## Errors | ||||
|  | ||||
| The middlewares provided by this module create errors using the | ||||
| [`http-errors` module](https://www.npmjs.com/package/http-errors). The errors | ||||
| will typically have a `status`/`statusCode` property that contains the suggested | ||||
| HTTP response code, an `expose` property to determine if the `message` property | ||||
| should be displayed to the client, a `type` property to determine the type of | ||||
| error without matching against the `message`, and a `body` property containing | ||||
| the read body, if available. | ||||
|  | ||||
| The following are the common errors created, though any error can come through | ||||
| for various reasons. | ||||
|  | ||||
| ### content encoding unsupported | ||||
|  | ||||
| This error will occur when the request had a `Content-Encoding` header that | ||||
| contained an encoding but the "inflation" option was set to `false`. The | ||||
| `status` property is set to `415`, the `type` property is set to | ||||
| `'encoding.unsupported'`, and the `charset` property will be set to the | ||||
| encoding that is unsupported. | ||||
|  | ||||
| ### entity parse failed | ||||
|  | ||||
| This error will occur when the request contained an entity that could not be | ||||
| parsed by the middleware. The `status` property is set to `400`, the `type` | ||||
| property is set to `'entity.parse.failed'`, and the `body` property is set to | ||||
| the entity value that failed parsing. | ||||
|  | ||||
| ### entity verify failed | ||||
|  | ||||
| This error will occur when the request contained an entity that could not be | ||||
| failed verification by the defined `verify` option. The `status` property is | ||||
| set to `403`, the `type` property is set to `'entity.verify.failed'`, and the | ||||
| `body` property is set to the entity value that failed verification. | ||||
|  | ||||
| ### request aborted | ||||
|  | ||||
| This error will occur when the request is aborted by the client before reading | ||||
| the body has finished. The `received` property will be set to the number of | ||||
| bytes received before the request was aborted and the `expected` property is | ||||
| set to the number of expected bytes. The `status` property is set to `400` | ||||
| and `type` property is set to `'request.aborted'`. | ||||
|  | ||||
| ### request entity too large | ||||
|  | ||||
| This error will occur when the request body's size is larger than the "limit" | ||||
| option. The `limit` property will be set to the byte limit and the `length` | ||||
| property will be set to the request body's length. The `status` property is | ||||
| set to `413` and the `type` property is set to `'entity.too.large'`. | ||||
|  | ||||
| ### request size did not match content length | ||||
|  | ||||
| This error will occur when the request's length did not match the length from | ||||
| the `Content-Length` header. This typically occurs when the request is malformed, | ||||
| typically when the `Content-Length` header was calculated based on characters | ||||
| instead of bytes. The `status` property is set to `400` and the `type` property | ||||
| is set to `'request.size.invalid'`. | ||||
|  | ||||
| ### stream encoding should not be set | ||||
|  | ||||
| This error will occur when something called the `req.setEncoding` method prior | ||||
| to this middleware. This module operates directly on bytes only and you cannot | ||||
| call `req.setEncoding` when using this module. The `status` property is set to | ||||
| `500` and the `type` property is set to `'stream.encoding.set'`. | ||||
|  | ||||
| ### stream is not readable | ||||
|  | ||||
| This error will occur when the request is no longer readable when this middleware | ||||
| attempts to read it. This typically means something other than a middleware from | ||||
| this module read the request body already and the middleware was also configured to | ||||
| read the same request. The `status` property is set to `500` and the `type` | ||||
| property is set to `'stream.not.readable'`. | ||||
|  | ||||
| ### too many parameters | ||||
|  | ||||
| This error will occur when the content of the request exceeds the configured | ||||
| `parameterLimit` for the `urlencoded` parser. The `status` property is set to | ||||
| `413` and the `type` property is set to `'parameters.too.many'`. | ||||
|  | ||||
| ### unsupported charset "BOGUS" | ||||
|  | ||||
| This error will occur when the request had a charset parameter in the | ||||
| `Content-Type` header, but the `iconv-lite` module does not support it OR the | ||||
| parser does not support it. The charset is contained in the message as well | ||||
| as in the `charset` property. The `status` property is set to `415`, the | ||||
| `type` property is set to `'charset.unsupported'`, and the `charset` property | ||||
| is set to the charset that is unsupported. | ||||
|  | ||||
| ### unsupported content encoding "bogus" | ||||
|  | ||||
| This error will occur when the request had a `Content-Encoding` header that | ||||
| contained an unsupported encoding. The encoding is contained in the message | ||||
| as well as in the `encoding` property. The `status` property is set to `415`, | ||||
| the `type` property is set to `'encoding.unsupported'`, and the `encoding` | ||||
| property is set to the encoding that is unsupported. | ||||
|  | ||||
| ## Examples | ||||
|  | ||||
| ### Express/Connect top-level generic | ||||
|  | ||||
| This example demonstrates adding a generic JSON and URL-encoded parser as a | ||||
| top-level middleware, which will parse the bodies of all incoming requests. | ||||
| This is the simplest setup. | ||||
|  | ||||
| ```js | ||||
| var express = require('express') | ||||
| var bodyParser = require('body-parser') | ||||
|  | ||||
| var app = express() | ||||
|  | ||||
| // parse application/x-www-form-urlencoded | ||||
| app.use(bodyParser.urlencoded({ extended: false })) | ||||
|  | ||||
| // parse application/json | ||||
| app.use(bodyParser.json()) | ||||
|  | ||||
| app.use(function (req, res) { | ||||
|   res.setHeader('Content-Type', 'text/plain') | ||||
|   res.write('you posted:\n') | ||||
|   res.end(JSON.stringify(req.body, null, 2)) | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| ### Express route-specific | ||||
|  | ||||
| This example demonstrates adding body parsers specifically to the routes that | ||||
| need them. In general, this is the most recommended way to use body-parser with | ||||
| Express. | ||||
|  | ||||
| ```js | ||||
| var express = require('express') | ||||
| var bodyParser = require('body-parser') | ||||
|  | ||||
| var app = express() | ||||
|  | ||||
| // create application/json parser | ||||
| var jsonParser = bodyParser.json() | ||||
|  | ||||
| // create application/x-www-form-urlencoded parser | ||||
| var urlencodedParser = bodyParser.urlencoded({ extended: false }) | ||||
|  | ||||
| // POST /login gets urlencoded bodies | ||||
| app.post('/login', urlencodedParser, function (req, res) { | ||||
|   res.send('welcome, ' + req.body.username) | ||||
| }) | ||||
|  | ||||
| // POST /api/users gets JSON bodies | ||||
| app.post('/api/users', jsonParser, function (req, res) { | ||||
|   // create user in req.body | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| ### Change accepted type for parsers | ||||
|  | ||||
| All the parsers accept a `type` option which allows you to change the | ||||
| `Content-Type` that the middleware will parse. | ||||
|  | ||||
| ```js | ||||
| var express = require('express') | ||||
| var bodyParser = require('body-parser') | ||||
|  | ||||
| var app = express() | ||||
|  | ||||
| // parse various different custom JSON types as JSON | ||||
| app.use(bodyParser.json({ type: 'application/*+json' })) | ||||
|  | ||||
| // parse some custom thing into a Buffer | ||||
| app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) | ||||
|  | ||||
| // parse an HTML body into a string | ||||
| app.use(bodyParser.text({ type: 'text/html' })) | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
| [MIT](LICENSE) | ||||
|  | ||||
| [npm-image]: https://img.shields.io/npm/v/body-parser.svg | ||||
| [npm-url]: https://npmjs.org/package/body-parser | ||||
| [coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg | ||||
| [coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master | ||||
| [downloads-image]: https://img.shields.io/npm/dm/body-parser.svg | ||||
| [downloads-url]: https://npmjs.org/package/body-parser | ||||
| [github-actions-ci-image]: https://img.shields.io/github/workflow/status/expressjs/body-parser/ci/master?label=ci | ||||
| [github-actions-ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml | ||||
							
								
								
									
										25
									
								
								17/node_modules/body-parser/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								17/node_modules/body-parser/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| # Security Policies and Procedures | ||||
|  | ||||
| ## Reporting a Bug | ||||
|  | ||||
| The Express 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 `body-parser`. This | ||||
| information can be found in the npm registry using the command | ||||
| `npm owner ls body-parser`. | ||||
| If unsure or unable to get the information from the above, open an issue | ||||
| in the [project issue tracker](https://github.com/expressjs/body-parser/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. | ||||
							
								
								
									
										156
									
								
								17/node_modules/body-parser/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								17/node_modules/body-parser/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,156 @@ | ||||
| /*! | ||||
|  * body-parser | ||||
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var deprecate = require('depd')('body-parser') | ||||
|  | ||||
| /** | ||||
|  * Cache of loaded parsers. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var parsers = Object.create(null) | ||||
|  | ||||
| /** | ||||
|  * @typedef Parsers | ||||
|  * @type {function} | ||||
|  * @property {function} json | ||||
|  * @property {function} raw | ||||
|  * @property {function} text | ||||
|  * @property {function} urlencoded | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @type {Parsers} | ||||
|  */ | ||||
|  | ||||
| exports = module.exports = deprecate.function(bodyParser, | ||||
|   'bodyParser: use individual json/urlencoded middlewares') | ||||
|  | ||||
| /** | ||||
|  * JSON parser. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Object.defineProperty(exports, 'json', { | ||||
|   configurable: true, | ||||
|   enumerable: true, | ||||
|   get: createParserGetter('json') | ||||
| }) | ||||
|  | ||||
| /** | ||||
|  * Raw parser. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Object.defineProperty(exports, 'raw', { | ||||
|   configurable: true, | ||||
|   enumerable: true, | ||||
|   get: createParserGetter('raw') | ||||
| }) | ||||
|  | ||||
| /** | ||||
|  * Text parser. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Object.defineProperty(exports, 'text', { | ||||
|   configurable: true, | ||||
|   enumerable: true, | ||||
|   get: createParserGetter('text') | ||||
| }) | ||||
|  | ||||
| /** | ||||
|  * URL-encoded parser. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| Object.defineProperty(exports, 'urlencoded', { | ||||
|   configurable: true, | ||||
|   enumerable: true, | ||||
|   get: createParserGetter('urlencoded') | ||||
| }) | ||||
|  | ||||
| /** | ||||
|  * Create a middleware to parse json and urlencoded bodies. | ||||
|  * | ||||
|  * @param {object} [options] | ||||
|  * @return {function} | ||||
|  * @deprecated | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function bodyParser (options) { | ||||
|   // use default type for parsers | ||||
|   var opts = Object.create(options || null, { | ||||
|     type: { | ||||
|       configurable: true, | ||||
|       enumerable: true, | ||||
|       value: undefined, | ||||
|       writable: true | ||||
|     } | ||||
|   }) | ||||
|  | ||||
|   var _urlencoded = exports.urlencoded(opts) | ||||
|   var _json = exports.json(opts) | ||||
|  | ||||
|   return function bodyParser (req, res, next) { | ||||
|     _json(req, res, function (err) { | ||||
|       if (err) return next(err) | ||||
|       _urlencoded(req, res, next) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Create a getter for loading a parser. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function createParserGetter (name) { | ||||
|   return function get () { | ||||
|     return loadParser(name) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Load a parser module. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function loadParser (parserName) { | ||||
|   var parser = parsers[parserName] | ||||
|  | ||||
|   if (parser !== undefined) { | ||||
|     return parser | ||||
|   } | ||||
|  | ||||
|   // this uses a switch for static require analysis | ||||
|   switch (parserName) { | ||||
|     case 'json': | ||||
|       parser = require('./lib/types/json') | ||||
|       break | ||||
|     case 'raw': | ||||
|       parser = require('./lib/types/raw') | ||||
|       break | ||||
|     case 'text': | ||||
|       parser = require('./lib/types/text') | ||||
|       break | ||||
|     case 'urlencoded': | ||||
|       parser = require('./lib/types/urlencoded') | ||||
|       break | ||||
|   } | ||||
|  | ||||
|   // store to prevent invoking require() | ||||
|   return (parsers[parserName] = parser) | ||||
| } | ||||
							
								
								
									
										205
									
								
								17/node_modules/body-parser/lib/read.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										205
									
								
								17/node_modules/body-parser/lib/read.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,205 @@ | ||||
| /*! | ||||
|  * body-parser | ||||
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var createError = require('http-errors') | ||||
| var destroy = require('destroy') | ||||
| var getBody = require('raw-body') | ||||
| var iconv = require('iconv-lite') | ||||
| var onFinished = require('on-finished') | ||||
| var unpipe = require('unpipe') | ||||
| var zlib = require('zlib') | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  */ | ||||
|  | ||||
| module.exports = read | ||||
|  | ||||
| /** | ||||
|  * Read a request into a buffer and parse. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @param {object} res | ||||
|  * @param {function} next | ||||
|  * @param {function} parse | ||||
|  * @param {function} debug | ||||
|  * @param {object} options | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function read (req, res, next, parse, debug, options) { | ||||
|   var length | ||||
|   var opts = options | ||||
|   var stream | ||||
|  | ||||
|   // flag as parsed | ||||
|   req._body = true | ||||
|  | ||||
|   // read options | ||||
|   var encoding = opts.encoding !== null | ||||
|     ? opts.encoding | ||||
|     : null | ||||
|   var verify = opts.verify | ||||
|  | ||||
|   try { | ||||
|     // get the content stream | ||||
|     stream = contentstream(req, debug, opts.inflate) | ||||
|     length = stream.length | ||||
|     stream.length = undefined | ||||
|   } catch (err) { | ||||
|     return next(err) | ||||
|   } | ||||
|  | ||||
|   // set raw-body options | ||||
|   opts.length = length | ||||
|   opts.encoding = verify | ||||
|     ? null | ||||
|     : encoding | ||||
|  | ||||
|   // assert charset is supported | ||||
|   if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { | ||||
|     return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { | ||||
|       charset: encoding.toLowerCase(), | ||||
|       type: 'charset.unsupported' | ||||
|     })) | ||||
|   } | ||||
|  | ||||
|   // read body | ||||
|   debug('read body') | ||||
|   getBody(stream, opts, function (error, body) { | ||||
|     if (error) { | ||||
|       var _error | ||||
|  | ||||
|       if (error.type === 'encoding.unsupported') { | ||||
|         // echo back charset | ||||
|         _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { | ||||
|           charset: encoding.toLowerCase(), | ||||
|           type: 'charset.unsupported' | ||||
|         }) | ||||
|       } else { | ||||
|         // set status code on error | ||||
|         _error = createError(400, error) | ||||
|       } | ||||
|  | ||||
|       // unpipe from stream and destroy | ||||
|       if (stream !== req) { | ||||
|         unpipe(req) | ||||
|         destroy(stream, true) | ||||
|       } | ||||
|  | ||||
|       // read off entire request | ||||
|       dump(req, function onfinished () { | ||||
|         next(createError(400, _error)) | ||||
|       }) | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // verify | ||||
|     if (verify) { | ||||
|       try { | ||||
|         debug('verify body') | ||||
|         verify(req, res, body, encoding) | ||||
|       } catch (err) { | ||||
|         next(createError(403, err, { | ||||
|           body: body, | ||||
|           type: err.type || 'entity.verify.failed' | ||||
|         })) | ||||
|         return | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // parse | ||||
|     var str = body | ||||
|     try { | ||||
|       debug('parse body') | ||||
|       str = typeof body !== 'string' && encoding !== null | ||||
|         ? iconv.decode(body, encoding) | ||||
|         : body | ||||
|       req.body = parse(str) | ||||
|     } catch (err) { | ||||
|       next(createError(400, err, { | ||||
|         body: str, | ||||
|         type: err.type || 'entity.parse.failed' | ||||
|       })) | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     next() | ||||
|   }) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the content stream of the request. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @param {function} debug | ||||
|  * @param {boolean} [inflate=true] | ||||
|  * @return {object} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function contentstream (req, debug, inflate) { | ||||
|   var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() | ||||
|   var length = req.headers['content-length'] | ||||
|   var stream | ||||
|  | ||||
|   debug('content-encoding "%s"', encoding) | ||||
|  | ||||
|   if (inflate === false && encoding !== 'identity') { | ||||
|     throw createError(415, 'content encoding unsupported', { | ||||
|       encoding: encoding, | ||||
|       type: 'encoding.unsupported' | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   switch (encoding) { | ||||
|     case 'deflate': | ||||
|       stream = zlib.createInflate() | ||||
|       debug('inflate body') | ||||
|       req.pipe(stream) | ||||
|       break | ||||
|     case 'gzip': | ||||
|       stream = zlib.createGunzip() | ||||
|       debug('gunzip body') | ||||
|       req.pipe(stream) | ||||
|       break | ||||
|     case 'identity': | ||||
|       stream = req | ||||
|       stream.length = length | ||||
|       break | ||||
|     default: | ||||
|       throw createError(415, 'unsupported content encoding "' + encoding + '"', { | ||||
|         encoding: encoding, | ||||
|         type: 'encoding.unsupported' | ||||
|       }) | ||||
|   } | ||||
|  | ||||
|   return stream | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Dump the contents of a request. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @param {function} callback | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function dump (req, callback) { | ||||
|   if (onFinished.isFinished(req)) { | ||||
|     callback(null) | ||||
|   } else { | ||||
|     onFinished(req, callback) | ||||
|     req.resume() | ||||
|   } | ||||
| } | ||||
							
								
								
									
										236
									
								
								17/node_modules/body-parser/lib/types/json.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								17/node_modules/body-parser/lib/types/json.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,236 @@ | ||||
| /*! | ||||
|  * body-parser | ||||
|  * Copyright(c) 2014 Jonathan Ong | ||||
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var bytes = require('bytes') | ||||
| var contentType = require('content-type') | ||||
| var createError = require('http-errors') | ||||
| var debug = require('debug')('body-parser:json') | ||||
| var read = require('../read') | ||||
| var typeis = require('type-is') | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  */ | ||||
|  | ||||
| module.exports = json | ||||
|  | ||||
| /** | ||||
|  * RegExp to match the first non-space in a string. | ||||
|  * | ||||
|  * Allowed whitespace is defined in RFC 7159: | ||||
|  * | ||||
|  *    ws = *( | ||||
|  *            %x20 /              ; Space | ||||
|  *            %x09 /              ; Horizontal tab | ||||
|  *            %x0A /              ; Line feed or New line | ||||
|  *            %x0D )              ; Carriage return | ||||
|  */ | ||||
|  | ||||
| var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex | ||||
|  | ||||
| /** | ||||
|  * Create a middleware to parse JSON bodies. | ||||
|  * | ||||
|  * @param {object} [options] | ||||
|  * @return {function} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function json (options) { | ||||
|   var opts = options || {} | ||||
|  | ||||
|   var limit = typeof opts.limit !== 'number' | ||||
|     ? bytes.parse(opts.limit || '100kb') | ||||
|     : opts.limit | ||||
|   var inflate = opts.inflate !== false | ||||
|   var reviver = opts.reviver | ||||
|   var strict = opts.strict !== false | ||||
|   var type = opts.type || 'application/json' | ||||
|   var verify = opts.verify || false | ||||
|  | ||||
|   if (verify !== false && typeof verify !== 'function') { | ||||
|     throw new TypeError('option verify must be function') | ||||
|   } | ||||
|  | ||||
|   // create the appropriate type checking function | ||||
|   var shouldParse = typeof type !== 'function' | ||||
|     ? typeChecker(type) | ||||
|     : type | ||||
|  | ||||
|   function parse (body) { | ||||
|     if (body.length === 0) { | ||||
|       // special-case empty json body, as it's a common client-side mistake | ||||
|       // TODO: maybe make this configurable or part of "strict" option | ||||
|       return {} | ||||
|     } | ||||
|  | ||||
|     if (strict) { | ||||
|       var first = firstchar(body) | ||||
|  | ||||
|       if (first !== '{' && first !== '[') { | ||||
|         debug('strict violation') | ||||
|         throw createStrictSyntaxError(body, first) | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     try { | ||||
|       debug('parse json') | ||||
|       return JSON.parse(body, reviver) | ||||
|     } catch (e) { | ||||
|       throw normalizeJsonSyntaxError(e, { | ||||
|         message: e.message, | ||||
|         stack: e.stack | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return function jsonParser (req, res, next) { | ||||
|     if (req._body) { | ||||
|       debug('body already parsed') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     req.body = req.body || {} | ||||
|  | ||||
|     // skip requests without bodies | ||||
|     if (!typeis.hasBody(req)) { | ||||
|       debug('skip empty body') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     debug('content-type %j', req.headers['content-type']) | ||||
|  | ||||
|     // determine if request should be parsed | ||||
|     if (!shouldParse(req)) { | ||||
|       debug('skip parsing') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // assert charset per RFC 7159 sec 8.1 | ||||
|     var charset = getCharset(req) || 'utf-8' | ||||
|     if (charset.slice(0, 4) !== 'utf-') { | ||||
|       debug('invalid charset') | ||||
|       next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { | ||||
|         charset: charset, | ||||
|         type: 'charset.unsupported' | ||||
|       })) | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // read | ||||
|     read(req, res, next, parse, debug, { | ||||
|       encoding: charset, | ||||
|       inflate: inflate, | ||||
|       limit: limit, | ||||
|       verify: verify | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Create strict violation syntax error matching native error. | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @param {string} char | ||||
|  * @return {Error} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function createStrictSyntaxError (str, char) { | ||||
|   var index = str.indexOf(char) | ||||
|   var partial = index !== -1 | ||||
|     ? str.substring(0, index) + '#' | ||||
|     : '' | ||||
|  | ||||
|   try { | ||||
|     JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation') | ||||
|   } catch (e) { | ||||
|     return normalizeJsonSyntaxError(e, { | ||||
|       message: e.message.replace('#', char), | ||||
|       stack: e.stack | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the first non-whitespace character in a string. | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @return {function} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function firstchar (str) { | ||||
|   var match = FIRST_CHAR_REGEXP.exec(str) | ||||
|  | ||||
|   return match | ||||
|     ? match[1] | ||||
|     : undefined | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the charset of a request. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function getCharset (req) { | ||||
|   try { | ||||
|     return (contentType.parse(req).parameters.charset || '').toLowerCase() | ||||
|   } catch (e) { | ||||
|     return undefined | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Normalize a SyntaxError for JSON.parse. | ||||
|  * | ||||
|  * @param {SyntaxError} error | ||||
|  * @param {object} obj | ||||
|  * @return {SyntaxError} | ||||
|  */ | ||||
|  | ||||
| function normalizeJsonSyntaxError (error, obj) { | ||||
|   var keys = Object.getOwnPropertyNames(error) | ||||
|  | ||||
|   for (var i = 0; i < keys.length; i++) { | ||||
|     var key = keys[i] | ||||
|     if (key !== 'stack' && key !== 'message') { | ||||
|       delete error[key] | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // replace stack before message for Node.js 0.10 and below | ||||
|   error.stack = obj.stack.replace(error.message, obj.message) | ||||
|   error.message = obj.message | ||||
|  | ||||
|   return error | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the simple type checker. | ||||
|  * | ||||
|  * @param {string} type | ||||
|  * @return {function} | ||||
|  */ | ||||
|  | ||||
| function typeChecker (type) { | ||||
|   return function checkType (req) { | ||||
|     return Boolean(typeis(req, type)) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										101
									
								
								17/node_modules/body-parser/lib/types/raw.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								17/node_modules/body-parser/lib/types/raw.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| /*! | ||||
|  * body-parser | ||||
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  */ | ||||
|  | ||||
| var bytes = require('bytes') | ||||
| var debug = require('debug')('body-parser:raw') | ||||
| var read = require('../read') | ||||
| var typeis = require('type-is') | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  */ | ||||
|  | ||||
| module.exports = raw | ||||
|  | ||||
| /** | ||||
|  * Create a middleware to parse raw bodies. | ||||
|  * | ||||
|  * @param {object} [options] | ||||
|  * @return {function} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function raw (options) { | ||||
|   var opts = options || {} | ||||
|  | ||||
|   var inflate = opts.inflate !== false | ||||
|   var limit = typeof opts.limit !== 'number' | ||||
|     ? bytes.parse(opts.limit || '100kb') | ||||
|     : opts.limit | ||||
|   var type = opts.type || 'application/octet-stream' | ||||
|   var verify = opts.verify || false | ||||
|  | ||||
|   if (verify !== false && typeof verify !== 'function') { | ||||
|     throw new TypeError('option verify must be function') | ||||
|   } | ||||
|  | ||||
|   // create the appropriate type checking function | ||||
|   var shouldParse = typeof type !== 'function' | ||||
|     ? typeChecker(type) | ||||
|     : type | ||||
|  | ||||
|   function parse (buf) { | ||||
|     return buf | ||||
|   } | ||||
|  | ||||
|   return function rawParser (req, res, next) { | ||||
|     if (req._body) { | ||||
|       debug('body already parsed') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     req.body = req.body || {} | ||||
|  | ||||
|     // skip requests without bodies | ||||
|     if (!typeis.hasBody(req)) { | ||||
|       debug('skip empty body') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     debug('content-type %j', req.headers['content-type']) | ||||
|  | ||||
|     // determine if request should be parsed | ||||
|     if (!shouldParse(req)) { | ||||
|       debug('skip parsing') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // read | ||||
|     read(req, res, next, parse, debug, { | ||||
|       encoding: null, | ||||
|       inflate: inflate, | ||||
|       limit: limit, | ||||
|       verify: verify | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the simple type checker. | ||||
|  * | ||||
|  * @param {string} type | ||||
|  * @return {function} | ||||
|  */ | ||||
|  | ||||
| function typeChecker (type) { | ||||
|   return function checkType (req) { | ||||
|     return Boolean(typeis(req, type)) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										121
									
								
								17/node_modules/body-parser/lib/types/text.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								17/node_modules/body-parser/lib/types/text.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,121 @@ | ||||
| /*! | ||||
|  * body-parser | ||||
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  */ | ||||
|  | ||||
| var bytes = require('bytes') | ||||
| var contentType = require('content-type') | ||||
| var debug = require('debug')('body-parser:text') | ||||
| var read = require('../read') | ||||
| var typeis = require('type-is') | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  */ | ||||
|  | ||||
| module.exports = text | ||||
|  | ||||
| /** | ||||
|  * Create a middleware to parse text bodies. | ||||
|  * | ||||
|  * @param {object} [options] | ||||
|  * @return {function} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function text (options) { | ||||
|   var opts = options || {} | ||||
|  | ||||
|   var defaultCharset = opts.defaultCharset || 'utf-8' | ||||
|   var inflate = opts.inflate !== false | ||||
|   var limit = typeof opts.limit !== 'number' | ||||
|     ? bytes.parse(opts.limit || '100kb') | ||||
|     : opts.limit | ||||
|   var type = opts.type || 'text/plain' | ||||
|   var verify = opts.verify || false | ||||
|  | ||||
|   if (verify !== false && typeof verify !== 'function') { | ||||
|     throw new TypeError('option verify must be function') | ||||
|   } | ||||
|  | ||||
|   // create the appropriate type checking function | ||||
|   var shouldParse = typeof type !== 'function' | ||||
|     ? typeChecker(type) | ||||
|     : type | ||||
|  | ||||
|   function parse (buf) { | ||||
|     return buf | ||||
|   } | ||||
|  | ||||
|   return function textParser (req, res, next) { | ||||
|     if (req._body) { | ||||
|       debug('body already parsed') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     req.body = req.body || {} | ||||
|  | ||||
|     // skip requests without bodies | ||||
|     if (!typeis.hasBody(req)) { | ||||
|       debug('skip empty body') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     debug('content-type %j', req.headers['content-type']) | ||||
|  | ||||
|     // determine if request should be parsed | ||||
|     if (!shouldParse(req)) { | ||||
|       debug('skip parsing') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // get charset | ||||
|     var charset = getCharset(req) || defaultCharset | ||||
|  | ||||
|     // read | ||||
|     read(req, res, next, parse, debug, { | ||||
|       encoding: charset, | ||||
|       inflate: inflate, | ||||
|       limit: limit, | ||||
|       verify: verify | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the charset of a request. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function getCharset (req) { | ||||
|   try { | ||||
|     return (contentType.parse(req).parameters.charset || '').toLowerCase() | ||||
|   } catch (e) { | ||||
|     return undefined | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the simple type checker. | ||||
|  * | ||||
|  * @param {string} type | ||||
|  * @return {function} | ||||
|  */ | ||||
|  | ||||
| function typeChecker (type) { | ||||
|   return function checkType (req) { | ||||
|     return Boolean(typeis(req, type)) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										284
									
								
								17/node_modules/body-parser/lib/types/urlencoded.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										284
									
								
								17/node_modules/body-parser/lib/types/urlencoded.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,284 @@ | ||||
| /*! | ||||
|  * body-parser | ||||
|  * Copyright(c) 2014 Jonathan Ong | ||||
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var bytes = require('bytes') | ||||
| var contentType = require('content-type') | ||||
| var createError = require('http-errors') | ||||
| var debug = require('debug')('body-parser:urlencoded') | ||||
| var deprecate = require('depd')('body-parser') | ||||
| var read = require('../read') | ||||
| var typeis = require('type-is') | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  */ | ||||
|  | ||||
| module.exports = urlencoded | ||||
|  | ||||
| /** | ||||
|  * Cache of parser modules. | ||||
|  */ | ||||
|  | ||||
| var parsers = Object.create(null) | ||||
|  | ||||
| /** | ||||
|  * Create a middleware to parse urlencoded bodies. | ||||
|  * | ||||
|  * @param {object} [options] | ||||
|  * @return {function} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function urlencoded (options) { | ||||
|   var opts = options || {} | ||||
|  | ||||
|   // notice because option default will flip in next major | ||||
|   if (opts.extended === undefined) { | ||||
|     deprecate('undefined extended: provide extended option') | ||||
|   } | ||||
|  | ||||
|   var extended = opts.extended !== false | ||||
|   var inflate = opts.inflate !== false | ||||
|   var limit = typeof opts.limit !== 'number' | ||||
|     ? bytes.parse(opts.limit || '100kb') | ||||
|     : opts.limit | ||||
|   var type = opts.type || 'application/x-www-form-urlencoded' | ||||
|   var verify = opts.verify || false | ||||
|  | ||||
|   if (verify !== false && typeof verify !== 'function') { | ||||
|     throw new TypeError('option verify must be function') | ||||
|   } | ||||
|  | ||||
|   // create the appropriate query parser | ||||
|   var queryparse = extended | ||||
|     ? extendedparser(opts) | ||||
|     : simpleparser(opts) | ||||
|  | ||||
|   // create the appropriate type checking function | ||||
|   var shouldParse = typeof type !== 'function' | ||||
|     ? typeChecker(type) | ||||
|     : type | ||||
|  | ||||
|   function parse (body) { | ||||
|     return body.length | ||||
|       ? queryparse(body) | ||||
|       : {} | ||||
|   } | ||||
|  | ||||
|   return function urlencodedParser (req, res, next) { | ||||
|     if (req._body) { | ||||
|       debug('body already parsed') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     req.body = req.body || {} | ||||
|  | ||||
|     // skip requests without bodies | ||||
|     if (!typeis.hasBody(req)) { | ||||
|       debug('skip empty body') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     debug('content-type %j', req.headers['content-type']) | ||||
|  | ||||
|     // determine if request should be parsed | ||||
|     if (!shouldParse(req)) { | ||||
|       debug('skip parsing') | ||||
|       next() | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // assert charset | ||||
|     var charset = getCharset(req) || 'utf-8' | ||||
|     if (charset !== 'utf-8') { | ||||
|       debug('invalid charset') | ||||
|       next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { | ||||
|         charset: charset, | ||||
|         type: 'charset.unsupported' | ||||
|       })) | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     // read | ||||
|     read(req, res, next, parse, debug, { | ||||
|       debug: debug, | ||||
|       encoding: charset, | ||||
|       inflate: inflate, | ||||
|       limit: limit, | ||||
|       verify: verify | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the extended query parser. | ||||
|  * | ||||
|  * @param {object} options | ||||
|  */ | ||||
|  | ||||
| function extendedparser (options) { | ||||
|   var parameterLimit = options.parameterLimit !== undefined | ||||
|     ? options.parameterLimit | ||||
|     : 1000 | ||||
|   var parse = parser('qs') | ||||
|  | ||||
|   if (isNaN(parameterLimit) || parameterLimit < 1) { | ||||
|     throw new TypeError('option parameterLimit must be a positive number') | ||||
|   } | ||||
|  | ||||
|   if (isFinite(parameterLimit)) { | ||||
|     parameterLimit = parameterLimit | 0 | ||||
|   } | ||||
|  | ||||
|   return function queryparse (body) { | ||||
|     var paramCount = parameterCount(body, parameterLimit) | ||||
|  | ||||
|     if (paramCount === undefined) { | ||||
|       debug('too many parameters') | ||||
|       throw createError(413, 'too many parameters', { | ||||
|         type: 'parameters.too.many' | ||||
|       }) | ||||
|     } | ||||
|  | ||||
|     var arrayLimit = Math.max(100, paramCount) | ||||
|  | ||||
|     debug('parse extended urlencoding') | ||||
|     return parse(body, { | ||||
|       allowPrototypes: true, | ||||
|       arrayLimit: arrayLimit, | ||||
|       depth: Infinity, | ||||
|       parameterLimit: parameterLimit | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the charset of a request. | ||||
|  * | ||||
|  * @param {object} req | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function getCharset (req) { | ||||
|   try { | ||||
|     return (contentType.parse(req).parameters.charset || '').toLowerCase() | ||||
|   } catch (e) { | ||||
|     return undefined | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Count the number of parameters, stopping once limit reached | ||||
|  * | ||||
|  * @param {string} body | ||||
|  * @param {number} limit | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function parameterCount (body, limit) { | ||||
|   var count = 0 | ||||
|   var index = 0 | ||||
|  | ||||
|   while ((index = body.indexOf('&', index)) !== -1) { | ||||
|     count++ | ||||
|     index++ | ||||
|  | ||||
|     if (count === limit) { | ||||
|       return undefined | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return count | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get parser for module name dynamically. | ||||
|  * | ||||
|  * @param {string} name | ||||
|  * @return {function} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function parser (name) { | ||||
|   var mod = parsers[name] | ||||
|  | ||||
|   if (mod !== undefined) { | ||||
|     return mod.parse | ||||
|   } | ||||
|  | ||||
|   // this uses a switch for static require analysis | ||||
|   switch (name) { | ||||
|     case 'qs': | ||||
|       mod = require('qs') | ||||
|       break | ||||
|     case 'querystring': | ||||
|       mod = require('querystring') | ||||
|       break | ||||
|   } | ||||
|  | ||||
|   // store to prevent invoking require() | ||||
|   parsers[name] = mod | ||||
|  | ||||
|   return mod.parse | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the simple query parser. | ||||
|  * | ||||
|  * @param {object} options | ||||
|  */ | ||||
|  | ||||
| function simpleparser (options) { | ||||
|   var parameterLimit = options.parameterLimit !== undefined | ||||
|     ? options.parameterLimit | ||||
|     : 1000 | ||||
|   var parse = parser('querystring') | ||||
|  | ||||
|   if (isNaN(parameterLimit) || parameterLimit < 1) { | ||||
|     throw new TypeError('option parameterLimit must be a positive number') | ||||
|   } | ||||
|  | ||||
|   if (isFinite(parameterLimit)) { | ||||
|     parameterLimit = parameterLimit | 0 | ||||
|   } | ||||
|  | ||||
|   return function queryparse (body) { | ||||
|     var paramCount = parameterCount(body, parameterLimit) | ||||
|  | ||||
|     if (paramCount === undefined) { | ||||
|       debug('too many parameters') | ||||
|       throw createError(413, 'too many parameters', { | ||||
|         type: 'parameters.too.many' | ||||
|       }) | ||||
|     } | ||||
|  | ||||
|     debug('parse urlencoding') | ||||
|     return parse(body, undefined, undefined, { maxKeys: parameterLimit }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get the simple type checker. | ||||
|  * | ||||
|  * @param {string} type | ||||
|  * @return {function} | ||||
|  */ | ||||
|  | ||||
| function typeChecker (type) { | ||||
|   return function checkType (req) { | ||||
|     return Boolean(typeis(req, type)) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										56
									
								
								17/node_modules/body-parser/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								17/node_modules/body-parser/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| { | ||||
|   "name": "body-parser", | ||||
|   "description": "Node.js body parsing middleware", | ||||
|   "version": "1.20.1", | ||||
|   "contributors": [ | ||||
|     "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||||
|     "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "repository": "expressjs/body-parser", | ||||
|   "dependencies": { | ||||
|     "bytes": "3.1.2", | ||||
|     "content-type": "~1.0.4", | ||||
|     "debug": "2.6.9", | ||||
|     "depd": "2.0.0", | ||||
|     "destroy": "1.2.0", | ||||
|     "http-errors": "2.0.0", | ||||
|     "iconv-lite": "0.4.24", | ||||
|     "on-finished": "2.4.1", | ||||
|     "qs": "6.11.0", | ||||
|     "raw-body": "2.5.1", | ||||
|     "type-is": "~1.6.18", | ||||
|     "unpipe": "1.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "eslint": "8.24.0", | ||||
|     "eslint-config-standard": "14.1.1", | ||||
|     "eslint-plugin-import": "2.26.0", | ||||
|     "eslint-plugin-markdown": "3.0.0", | ||||
|     "eslint-plugin-node": "11.1.0", | ||||
|     "eslint-plugin-promise": "6.0.1", | ||||
|     "eslint-plugin-standard": "4.1.0", | ||||
|     "methods": "1.1.2", | ||||
|     "mocha": "10.0.0", | ||||
|     "nyc": "15.1.0", | ||||
|     "safe-buffer": "5.2.1", | ||||
|     "supertest": "6.3.0" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "lib/", | ||||
|     "LICENSE", | ||||
|     "HISTORY.md", | ||||
|     "SECURITY.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.8", | ||||
|     "npm": "1.2.8000 || >= 1.4.16" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint": "eslint .", | ||||
|     "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/", | ||||
|     "test-ci": "nyc --reporter=lcov --reporter=text npm test", | ||||
|     "test-cov": "nyc --reporter=html --reporter=text npm test" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										97
									
								
								17/node_modules/bytes/History.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								17/node_modules/bytes/History.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | ||||
| 3.1.2 / 2022-01-27 | ||||
| ================== | ||||
|  | ||||
|   * Fix return value for un-parsable strings | ||||
|  | ||||
| 3.1.1 / 2021-11-15 | ||||
| ================== | ||||
|  | ||||
|   * Fix "thousandsSeparator" incorrecting formatting fractional part | ||||
|  | ||||
| 3.1.0 / 2019-01-22 | ||||
| ================== | ||||
|  | ||||
|   * Add petabyte (`pb`) support | ||||
|  | ||||
| 3.0.0 / 2017-08-31 | ||||
| ================== | ||||
|  | ||||
|   * Change "kB" to "KB" in format output | ||||
|   * Remove support for Node.js 0.6 | ||||
|   * Remove support for ComponentJS | ||||
|  | ||||
| 2.5.0 / 2017-03-24 | ||||
| ================== | ||||
|  | ||||
|   * Add option "unit" | ||||
|  | ||||
| 2.4.0 / 2016-06-01 | ||||
| ================== | ||||
|  | ||||
|   * Add option "unitSeparator" | ||||
|  | ||||
| 2.3.0 / 2016-02-15 | ||||
| ================== | ||||
|  | ||||
|   * Drop partial bytes on all parsed units | ||||
|   * Fix non-finite numbers to `.format` to return `null` | ||||
|   * Fix parsing byte string that looks like hex | ||||
|   * perf: hoist regular expressions | ||||
|  | ||||
| 2.2.0 / 2015-11-13 | ||||
| ================== | ||||
|  | ||||
|   * add option "decimalPlaces" | ||||
|   * add option "fixedDecimals" | ||||
|  | ||||
| 2.1.0 / 2015-05-21 | ||||
| ================== | ||||
|  | ||||
|   * add `.format` export | ||||
|   * add `.parse` export | ||||
|  | ||||
| 2.0.2 / 2015-05-20 | ||||
| ================== | ||||
|  | ||||
|   * remove map recreation | ||||
|   * remove unnecessary object construction | ||||
|  | ||||
| 2.0.1 / 2015-05-07 | ||||
| ================== | ||||
|  | ||||
|   * fix browserify require | ||||
|   * remove node.extend dependency | ||||
|  | ||||
| 2.0.0 / 2015-04-12 | ||||
| ================== | ||||
|  | ||||
|   * add option "case" | ||||
|   * add option "thousandsSeparator" | ||||
|   * return "null" on invalid parse input | ||||
|   * support proper round-trip: bytes(bytes(num)) === num | ||||
|   * units no longer case sensitive when parsing | ||||
|  | ||||
| 1.0.0 / 2014-05-05 | ||||
| ================== | ||||
|  | ||||
|  * add negative support. fixes #6 | ||||
|  | ||||
| 0.3.0 / 2014-03-19 | ||||
| ================== | ||||
|  | ||||
|  * added terabyte support | ||||
|  | ||||
| 0.2.1 / 2013-04-01 | ||||
| ================== | ||||
|  | ||||
|   * add .component | ||||
|  | ||||
| 0.2.0 / 2012-10-28 | ||||
| ================== | ||||
|  | ||||
|   * bytes(200).should.eql('200b') | ||||
|  | ||||
| 0.1.0 / 2012-07-04 | ||||
| ================== | ||||
|  | ||||
|   * add bytes to string conversion [yields] | ||||
							
								
								
									
										23
									
								
								17/node_modules/bytes/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								17/node_modules/bytes/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2012-2014 TJ Holowaychuk <tj@vision-media.ca> | ||||
| Copyright (c) 2015 Jed Watson <jed.watson@me.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. | ||||
							
								
								
									
										152
									
								
								17/node_modules/bytes/Readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								17/node_modules/bytes/Readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,152 @@ | ||||
| # Bytes utility | ||||
|  | ||||
| [![NPM Version][npm-image]][npm-url] | ||||
| [![NPM Downloads][downloads-image]][downloads-url] | ||||
| [![Build Status][ci-image]][ci-url] | ||||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||||
|  | ||||
| Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. | ||||
|  | ||||
| ## 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): | ||||
|  | ||||
| ```bash | ||||
| $ npm install bytes | ||||
| ``` | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| ```js | ||||
| var bytes = require('bytes'); | ||||
| ``` | ||||
|  | ||||
| #### bytes(number|string value, [options]): number|string|null | ||||
|  | ||||
| Default export function. Delegates to either `bytes.format` or `bytes.parse` based on the type of `value`. | ||||
|  | ||||
| **Arguments** | ||||
|  | ||||
| | Name    | Type     | Description        | | ||||
| |---------|----------|--------------------| | ||||
| | value   | `number`|`string` | Number value to format or string value to parse | | ||||
| | options | `Object` | Conversion options for `format` | | ||||
|  | ||||
| **Returns** | ||||
|  | ||||
| | Name    | Type             | Description                                     | | ||||
| |---------|------------------|-------------------------------------------------| | ||||
| | results | `string`|`number`|`null` | Return null upon error. Numeric value in bytes, or string value otherwise. | | ||||
|  | ||||
| **Example** | ||||
|  | ||||
| ```js | ||||
| bytes(1024); | ||||
| // output: '1KB' | ||||
|  | ||||
| bytes('1KB'); | ||||
| // output: 1024 | ||||
| ``` | ||||
|  | ||||
| #### bytes.format(number value, [options]): string|null | ||||
|  | ||||
| Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is | ||||
|  rounded. | ||||
|  | ||||
| **Arguments** | ||||
|  | ||||
| | Name    | Type     | Description        | | ||||
| |---------|----------|--------------------| | ||||
| | value   | `number` | Value in bytes     | | ||||
| | options | `Object` | Conversion options | | ||||
|  | ||||
| **Options** | ||||
|  | ||||
| | Property          | Type   | Description                                                                             | | ||||
| |-------------------|--------|-----------------------------------------------------------------------------------------| | ||||
| | decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | | ||||
| | fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | | ||||
| | thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `'.'`... Default value to `''`. | | ||||
| | unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | | ||||
| | unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | | ||||
|  | ||||
| **Returns** | ||||
|  | ||||
| | Name    | Type             | Description                                     | | ||||
| |---------|------------------|-------------------------------------------------| | ||||
| | results | `string`|`null` | Return null upon error. String value otherwise. | | ||||
|  | ||||
| **Example** | ||||
|  | ||||
| ```js | ||||
| bytes.format(1024); | ||||
| // output: '1KB' | ||||
|  | ||||
| bytes.format(1000); | ||||
| // output: '1000B' | ||||
|  | ||||
| bytes.format(1000, {thousandsSeparator: ' '}); | ||||
| // output: '1 000B' | ||||
|  | ||||
| bytes.format(1024 * 1.7, {decimalPlaces: 0}); | ||||
| // output: '2KB' | ||||
|  | ||||
| bytes.format(1024, {unitSeparator: ' '}); | ||||
| // output: '1 KB' | ||||
| ``` | ||||
|  | ||||
| #### bytes.parse(string|number value): number|null | ||||
|  | ||||
| Parse the string value into an integer in bytes. If no unit is given, or `value` | ||||
| is a number, it is assumed the value is in bytes. | ||||
|  | ||||
| Supported units and abbreviations are as follows and are case-insensitive: | ||||
|  | ||||
|   * `b` for bytes | ||||
|   * `kb` for kilobytes | ||||
|   * `mb` for megabytes | ||||
|   * `gb` for gigabytes | ||||
|   * `tb` for terabytes | ||||
|   * `pb` for petabytes | ||||
|  | ||||
| The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. | ||||
|  | ||||
| **Arguments** | ||||
|  | ||||
| | Name          | Type   | Description        | | ||||
| |---------------|--------|--------------------| | ||||
| | value   | `string`|`number` | String to parse, or number in bytes.   | | ||||
|  | ||||
| **Returns** | ||||
|  | ||||
| | Name    | Type        | Description             | | ||||
| |---------|-------------|-------------------------| | ||||
| | results | `number`|`null` | Return null upon error. Value in bytes otherwise. | | ||||
|  | ||||
| **Example** | ||||
|  | ||||
| ```js | ||||
| bytes.parse('1KB'); | ||||
| // output: 1024 | ||||
|  | ||||
| bytes.parse('1024'); | ||||
| // output: 1024 | ||||
|  | ||||
| bytes.parse(1024); | ||||
| // output: 1024 | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
| [MIT](LICENSE) | ||||
|  | ||||
| [ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci | ||||
| [ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci | ||||
| [coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master | ||||
| [coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master | ||||
| [downloads-image]: https://badgen.net/npm/dm/bytes | ||||
| [downloads-url]: https://npmjs.org/package/bytes | ||||
| [npm-image]: https://badgen.net/npm/v/bytes | ||||
| [npm-url]: https://npmjs.org/package/bytes | ||||
							
								
								
									
										170
									
								
								17/node_modules/bytes/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								17/node_modules/bytes/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,170 @@ | ||||
| /*! | ||||
|  * bytes | ||||
|  * Copyright(c) 2012-2014 TJ Holowaychuk | ||||
|  * Copyright(c) 2015 Jed Watson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| module.exports = bytes; | ||||
| module.exports.format = format; | ||||
| module.exports.parse = parse; | ||||
|  | ||||
| /** | ||||
|  * Module variables. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; | ||||
|  | ||||
| var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; | ||||
|  | ||||
| var map = { | ||||
|   b:  1, | ||||
|   kb: 1 << 10, | ||||
|   mb: 1 << 20, | ||||
|   gb: 1 << 30, | ||||
|   tb: Math.pow(1024, 4), | ||||
|   pb: Math.pow(1024, 5), | ||||
| }; | ||||
|  | ||||
| var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; | ||||
|  | ||||
| /** | ||||
|  * Convert the given value in bytes into a string or parse to string to an integer in bytes. | ||||
|  * | ||||
|  * @param {string|number} value | ||||
|  * @param {{ | ||||
|  *  case: [string], | ||||
|  *  decimalPlaces: [number] | ||||
|  *  fixedDecimals: [boolean] | ||||
|  *  thousandsSeparator: [string] | ||||
|  *  unitSeparator: [string] | ||||
|  *  }} [options] bytes options. | ||||
|  * | ||||
|  * @returns {string|number|null} | ||||
|  */ | ||||
|  | ||||
| function bytes(value, options) { | ||||
|   if (typeof value === 'string') { | ||||
|     return parse(value); | ||||
|   } | ||||
|  | ||||
|   if (typeof value === 'number') { | ||||
|     return format(value, options); | ||||
|   } | ||||
|  | ||||
|   return null; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Format the given value in bytes into a string. | ||||
|  * | ||||
|  * If the value is negative, it is kept as such. If it is a float, | ||||
|  * it is rounded. | ||||
|  * | ||||
|  * @param {number} value | ||||
|  * @param {object} [options] | ||||
|  * @param {number} [options.decimalPlaces=2] | ||||
|  * @param {number} [options.fixedDecimals=false] | ||||
|  * @param {string} [options.thousandsSeparator=] | ||||
|  * @param {string} [options.unit=] | ||||
|  * @param {string} [options.unitSeparator=] | ||||
|  * | ||||
|  * @returns {string|null} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function format(value, options) { | ||||
|   if (!Number.isFinite(value)) { | ||||
|     return null; | ||||
|   } | ||||
|  | ||||
|   var mag = Math.abs(value); | ||||
|   var thousandsSeparator = (options && options.thousandsSeparator) || ''; | ||||
|   var unitSeparator = (options && options.unitSeparator) || ''; | ||||
|   var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; | ||||
|   var fixedDecimals = Boolean(options && options.fixedDecimals); | ||||
|   var unit = (options && options.unit) || ''; | ||||
|  | ||||
|   if (!unit || !map[unit.toLowerCase()]) { | ||||
|     if (mag >= map.pb) { | ||||
|       unit = 'PB'; | ||||
|     } else if (mag >= map.tb) { | ||||
|       unit = 'TB'; | ||||
|     } else if (mag >= map.gb) { | ||||
|       unit = 'GB'; | ||||
|     } else if (mag >= map.mb) { | ||||
|       unit = 'MB'; | ||||
|     } else if (mag >= map.kb) { | ||||
|       unit = 'KB'; | ||||
|     } else { | ||||
|       unit = 'B'; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   var val = value / map[unit.toLowerCase()]; | ||||
|   var str = val.toFixed(decimalPlaces); | ||||
|  | ||||
|   if (!fixedDecimals) { | ||||
|     str = str.replace(formatDecimalsRegExp, '$1'); | ||||
|   } | ||||
|  | ||||
|   if (thousandsSeparator) { | ||||
|     str = str.split('.').map(function (s, i) { | ||||
|       return i === 0 | ||||
|         ? s.replace(formatThousandsRegExp, thousandsSeparator) | ||||
|         : s | ||||
|     }).join('.'); | ||||
|   } | ||||
|  | ||||
|   return str + unitSeparator + unit; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Parse the string value into an integer in bytes. | ||||
|  * | ||||
|  * If no unit is given, it is assumed the value is in bytes. | ||||
|  * | ||||
|  * @param {number|string} val | ||||
|  * | ||||
|  * @returns {number|null} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function parse(val) { | ||||
|   if (typeof val === 'number' && !isNaN(val)) { | ||||
|     return val; | ||||
|   } | ||||
|  | ||||
|   if (typeof val !== 'string') { | ||||
|     return null; | ||||
|   } | ||||
|  | ||||
|   // Test if the string passed is valid | ||||
|   var results = parseRegExp.exec(val); | ||||
|   var floatValue; | ||||
|   var unit = 'b'; | ||||
|  | ||||
|   if (!results) { | ||||
|     // Nothing could be extracted from the given string | ||||
|     floatValue = parseInt(val, 10); | ||||
|     unit = 'b' | ||||
|   } else { | ||||
|     // Retrieve the value and the unit | ||||
|     floatValue = parseFloat(results[1]); | ||||
|     unit = results[4].toLowerCase(); | ||||
|   } | ||||
|  | ||||
|   if (isNaN(floatValue)) { | ||||
|     return null; | ||||
|   } | ||||
|  | ||||
|   return Math.floor(map[unit] * floatValue); | ||||
| } | ||||
							
								
								
									
										42
									
								
								17/node_modules/bytes/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								17/node_modules/bytes/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| { | ||||
|   "name": "bytes", | ||||
|   "description": "Utility to parse a string bytes to bytes and vice-versa", | ||||
|   "version": "3.1.2", | ||||
|   "author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)", | ||||
|   "contributors": [ | ||||
|     "Jed Watson <jed.watson@me.com>", | ||||
|     "Théo FIDRY <theo.fidry@gmail.com>" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "keywords": [ | ||||
|     "byte", | ||||
|     "bytes", | ||||
|     "utility", | ||||
|     "parse", | ||||
|     "parser", | ||||
|     "convert", | ||||
|     "converter" | ||||
|   ], | ||||
|   "repository": "visionmedia/bytes.js", | ||||
|   "devDependencies": { | ||||
|     "eslint": "7.32.0", | ||||
|     "eslint-plugin-markdown": "2.2.1", | ||||
|     "mocha": "9.2.0", | ||||
|     "nyc": "15.1.0" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "History.md", | ||||
|     "LICENSE", | ||||
|     "Readme.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.8" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint": "eslint .", | ||||
|     "test": "mocha --check-leaks --reporter spec", | ||||
|     "test-ci": "nyc --reporter=lcov --reporter=text npm test", | ||||
|     "test-cov": "nyc --reporter=html --reporter=text npm test" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										1
									
								
								17/node_modules/call-bind/.eslintignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								17/node_modules/call-bind/.eslintignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| coverage/ | ||||
							
								
								
									
										17
									
								
								17/node_modules/call-bind/.eslintrc
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								17/node_modules/call-bind/.eslintrc
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| { | ||||
| 	"root": true, | ||||
|  | ||||
| 	"extends": "@ljharb", | ||||
|  | ||||
| 	"rules": { | ||||
| 		"func-name-matching": 0, | ||||
| 		"id-length": 0, | ||||
| 		"new-cap": [2, { | ||||
| 			"capIsNewExceptions": [ | ||||
| 				"GetIntrinsic", | ||||
| 			], | ||||
| 		}], | ||||
| 		"no-magic-numbers": 0, | ||||
| 		"operator-linebreak": [2, "before"], | ||||
| 	}, | ||||
| } | ||||
							
								
								
									
										12
									
								
								17/node_modules/call-bind/.github/FUNDING.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								17/node_modules/call-bind/.github/FUNDING.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # These are supported funding model platforms | ||||
|  | ||||
| github: [ljharb] | ||||
| patreon: # Replace with a single Patreon username | ||||
| open_collective: # Replace with a single Open Collective username | ||||
| ko_fi: # Replace with a single Ko-fi username | ||||
| tidelift: npm/call-bind | ||||
| community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry | ||||
| liberapay: # Replace with a single Liberapay username | ||||
| issuehunt: # Replace with a single IssueHunt username | ||||
| otechie: # Replace with a single Otechie username | ||||
| custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] | ||||
							
								
								
									
										13
									
								
								17/node_modules/call-bind/.nycrc
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								17/node_modules/call-bind/.nycrc
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| { | ||||
| 	"all": true, | ||||
| 	"check-coverage": false, | ||||
| 	"reporter": ["text-summary", "text", "html", "json"], | ||||
| 	"lines": 86, | ||||
| 	"statements": 85.93, | ||||
| 	"functions": 82.43, | ||||
| 	"branches": 76.06, | ||||
| 	"exclude": [ | ||||
| 		"coverage", | ||||
| 		"test" | ||||
| 	] | ||||
| } | ||||
							
								
								
									
										42
									
								
								17/node_modules/call-bind/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								17/node_modules/call-bind/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| # Changelog | ||||
|  | ||||
| All notable changes to this project will be documented in this file. | ||||
|  | ||||
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) | ||||
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||||
|  | ||||
| ## [v1.0.2](https://github.com/ljharb/call-bind/compare/v1.0.1...v1.0.2) - 2021-01-11 | ||||
|  | ||||
| ### Commits | ||||
|  | ||||
| - [Fix] properly include the receiver in the bound length [`dbae7bc`](https://github.com/ljharb/call-bind/commit/dbae7bc676c079a0d33c0a43e9ef92cb7b01345d) | ||||
|  | ||||
| ## [v1.0.1](https://github.com/ljharb/call-bind/compare/v1.0.0...v1.0.1) - 2021-01-08 | ||||
|  | ||||
| ### Commits | ||||
|  | ||||
| - [Tests] migrate tests to Github Actions [`b6db284`](https://github.com/ljharb/call-bind/commit/b6db284c36f8ccd195b88a6764fe84b7223a0da1) | ||||
| - [meta] do not publish github action workflow files [`ec7fe46`](https://github.com/ljharb/call-bind/commit/ec7fe46e60cfa4764ee943d2755f5e5a366e578e) | ||||
| - [Fix] preserve original function’s length when possible [`adbceaa`](https://github.com/ljharb/call-bind/commit/adbceaa3cac4b41ea78bb19d7ccdbaaf7e0bdadb) | ||||
| - [Tests] gather coverage data on every job [`d69e23c`](https://github.com/ljharb/call-bind/commit/d69e23cc65f101ba1d4c19bb07fa8eb0ec624be8) | ||||
| - [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`2fd3586`](https://github.com/ljharb/call-bind/commit/2fd3586c5d47b335364c14293114c6b625ae1f71) | ||||
| - [Deps] update `get-intrinsic` [`f23e931`](https://github.com/ljharb/call-bind/commit/f23e9318cc271c2add8bb38cfded85ee7baf8eee) | ||||
| - [Deps] update `get-intrinsic` [`72d9f44`](https://github.com/ljharb/call-bind/commit/72d9f44e184465ba8dd3fb48260bbcff234985f2) | ||||
| - [meta] fix FUNDING.yml [`e723573`](https://github.com/ljharb/call-bind/commit/e723573438c5a68dcec31fb5d96ea6b7e4a93be8) | ||||
| - [eslint] ignore coverage output [`15e76d2`](https://github.com/ljharb/call-bind/commit/15e76d28a5f43e504696401e5b31ebb78ee1b532) | ||||
| - [meta] add Automatic Rebase and Require Allow Edits workflows [`8fa4dab`](https://github.com/ljharb/call-bind/commit/8fa4dabb23ba3dd7bb92c9571c1241c08b56e4b6) | ||||
|  | ||||
| ## v1.0.0 - 2020-10-30 | ||||
|  | ||||
| ### Commits | ||||
|  | ||||
| - Initial commit [`306cf98`](https://github.com/ljharb/call-bind/commit/306cf98c7ec9e7ef66b653ec152277ac1381eb50) | ||||
| - Tests [`e10d0bb`](https://github.com/ljharb/call-bind/commit/e10d0bbdadc7a10ecedc9a1c035112d3e368b8df) | ||||
| - Implementation [`43852ed`](https://github.com/ljharb/call-bind/commit/43852eda0f187327b7fad2423ca972149a52bd65) | ||||
| - npm init [`408f860`](https://github.com/ljharb/call-bind/commit/408f860b773a2f610805fd3613d0d71bac1b6249) | ||||
| - [meta] add Automatic Rebase and Require Allow Edits workflows [`fb349b2`](https://github.com/ljharb/call-bind/commit/fb349b2e48defbec8b5ec8a8395cc8f69f220b13) | ||||
| - [meta] add `auto-changelog` [`c4001fc`](https://github.com/ljharb/call-bind/commit/c4001fc43031799ef908211c98d3b0fb2b60fde4) | ||||
| - [meta] add "funding"; create `FUNDING.yml` [`d4d6d29`](https://github.com/ljharb/call-bind/commit/d4d6d2974a14bc2e98830468eda7fe6d6a776717) | ||||
| - [Tests] add `npm run lint` [`dedfb98`](https://github.com/ljharb/call-bind/commit/dedfb98bd0ecefb08ddb9a94061bd10cde4332af) | ||||
| - Only apps should have lockfiles [`54ac776`](https://github.com/ljharb/call-bind/commit/54ac77653db45a7361dc153d2f478e743f110650) | ||||
| - [meta] add `safe-publish-latest` [`9ea8e43`](https://github.com/ljharb/call-bind/commit/9ea8e435b950ce9b705559cd651039f9bf40140f) | ||||
							
								
								
									
										21
									
								
								17/node_modules/call-bind/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								17/node_modules/call-bind/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2020 Jordan Harband | ||||
|  | ||||
| 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. | ||||
							
								
								
									
										2
									
								
								17/node_modules/call-bind/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								17/node_modules/call-bind/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| # call-bind | ||||
| Robustly `.call.bind()` a function. | ||||
							
								
								
									
										15
									
								
								17/node_modules/call-bind/callBound.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								17/node_modules/call-bind/callBound.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| var GetIntrinsic = require('get-intrinsic'); | ||||
|  | ||||
| var callBind = require('./'); | ||||
|  | ||||
| var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); | ||||
|  | ||||
| module.exports = function callBoundIntrinsic(name, allowMissing) { | ||||
| 	var intrinsic = GetIntrinsic(name, !!allowMissing); | ||||
| 	if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { | ||||
| 		return callBind(intrinsic); | ||||
| 	} | ||||
| 	return intrinsic; | ||||
| }; | ||||
							
								
								
									
										47
									
								
								17/node_modules/call-bind/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								17/node_modules/call-bind/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| var bind = require('function-bind'); | ||||
| var GetIntrinsic = require('get-intrinsic'); | ||||
|  | ||||
| var $apply = GetIntrinsic('%Function.prototype.apply%'); | ||||
| var $call = GetIntrinsic('%Function.prototype.call%'); | ||||
| var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); | ||||
|  | ||||
| var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); | ||||
| var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); | ||||
| var $max = GetIntrinsic('%Math.max%'); | ||||
|  | ||||
| if ($defineProperty) { | ||||
| 	try { | ||||
| 		$defineProperty({}, 'a', { value: 1 }); | ||||
| 	} catch (e) { | ||||
| 		// IE 8 has a broken defineProperty | ||||
| 		$defineProperty = null; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| module.exports = function callBind(originalFunction) { | ||||
| 	var func = $reflectApply(bind, $call, arguments); | ||||
| 	if ($gOPD && $defineProperty) { | ||||
| 		var desc = $gOPD(func, 'length'); | ||||
| 		if (desc.configurable) { | ||||
| 			// original length, plus the receiver, minus any additional arguments (after the receiver) | ||||
| 			$defineProperty( | ||||
| 				func, | ||||
| 				'length', | ||||
| 				{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } | ||||
| 			); | ||||
| 		} | ||||
| 	} | ||||
| 	return func; | ||||
| }; | ||||
|  | ||||
| var applyBind = function applyBind() { | ||||
| 	return $reflectApply(bind, $apply, arguments); | ||||
| }; | ||||
|  | ||||
| if ($defineProperty) { | ||||
| 	$defineProperty(module.exports, 'apply', { value: applyBind }); | ||||
| } else { | ||||
| 	module.exports.apply = applyBind; | ||||
| } | ||||
							
								
								
									
										80
									
								
								17/node_modules/call-bind/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								17/node_modules/call-bind/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| { | ||||
| 	"name": "call-bind", | ||||
| 	"version": "1.0.2", | ||||
| 	"description": "Robustly `.call.bind()` a function", | ||||
| 	"main": "index.js", | ||||
| 	"exports": { | ||||
| 		".": [ | ||||
| 			{ | ||||
| 				"default": "./index.js" | ||||
| 			}, | ||||
| 			"./index.js" | ||||
| 		], | ||||
| 		"./callBound": [ | ||||
| 			{ | ||||
| 				"default": "./callBound.js" | ||||
| 			}, | ||||
| 			"./callBound.js" | ||||
| 		], | ||||
| 		"./package.json": "./package.json" | ||||
| 	}, | ||||
| 	"scripts": { | ||||
| 		"prepublish": "safe-publish-latest", | ||||
| 		"lint": "eslint --ext=.js,.mjs .", | ||||
| 		"pretest": "npm run lint", | ||||
| 		"tests-only": "nyc tape 'test/*'", | ||||
| 		"test": "npm run tests-only", | ||||
| 		"posttest": "aud --production", | ||||
| 		"version": "auto-changelog && git add CHANGELOG.md", | ||||
| 		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" | ||||
| 	}, | ||||
| 	"repository": { | ||||
| 		"type": "git", | ||||
| 		"url": "git+https://github.com/ljharb/call-bind.git" | ||||
| 	}, | ||||
| 	"keywords": [ | ||||
| 		"javascript", | ||||
| 		"ecmascript", | ||||
| 		"es", | ||||
| 		"js", | ||||
| 		"callbind", | ||||
| 		"callbound", | ||||
| 		"call", | ||||
| 		"bind", | ||||
| 		"bound", | ||||
| 		"call-bind", | ||||
| 		"call-bound", | ||||
| 		"function", | ||||
| 		"es-abstract" | ||||
| 	], | ||||
| 	"author": "Jordan Harband <ljharb@gmail.com>", | ||||
| 	"funding": { | ||||
| 		"url": "https://github.com/sponsors/ljharb" | ||||
| 	}, | ||||
| 	"license": "MIT", | ||||
| 	"bugs": { | ||||
| 		"url": "https://github.com/ljharb/call-bind/issues" | ||||
| 	}, | ||||
| 	"homepage": "https://github.com/ljharb/call-bind#readme", | ||||
| 	"devDependencies": { | ||||
| 		"@ljharb/eslint-config": "^17.3.0", | ||||
| 		"aud": "^1.1.3", | ||||
| 		"auto-changelog": "^2.2.1", | ||||
| 		"eslint": "^7.17.0", | ||||
| 		"nyc": "^10.3.2", | ||||
| 		"safe-publish-latest": "^1.1.4", | ||||
| 		"tape": "^5.1.1" | ||||
| 	}, | ||||
| 	"dependencies": { | ||||
| 		"function-bind": "^1.1.1", | ||||
| 		"get-intrinsic": "^1.0.2" | ||||
| 	}, | ||||
| 	"auto-changelog": { | ||||
| 		"output": "CHANGELOG.md", | ||||
| 		"template": "keepachangelog", | ||||
| 		"unreleased": false, | ||||
| 		"commitLimit": false, | ||||
| 		"backfillLimit": false, | ||||
| 		"hideCredit": true | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										55
									
								
								17/node_modules/call-bind/test/callBound.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								17/node_modules/call-bind/test/callBound.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| var test = require('tape'); | ||||
|  | ||||
| var callBound = require('../callBound'); | ||||
|  | ||||
| test('callBound', function (t) { | ||||
| 	// static primitive | ||||
| 	t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); | ||||
| 	t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); | ||||
|  | ||||
| 	// static non-function object | ||||
| 	t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); | ||||
| 	t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); | ||||
| 	t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); | ||||
| 	t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); | ||||
|  | ||||
| 	// static function | ||||
| 	t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); | ||||
| 	t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); | ||||
|  | ||||
| 	// prototype primitive | ||||
| 	t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); | ||||
| 	t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); | ||||
|  | ||||
| 	// prototype function | ||||
| 	t.notEqual(callBound('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString does not yield itself'); | ||||
| 	t.notEqual(callBound('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); | ||||
| 	t.equal(callBound('Object.prototype.toString')(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); | ||||
| 	t.equal(callBound('%Object.prototype.toString%')(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); | ||||
|  | ||||
| 	t['throws']( | ||||
| 		function () { callBound('does not exist'); }, | ||||
| 		SyntaxError, | ||||
| 		'nonexistent intrinsic throws' | ||||
| 	); | ||||
| 	t['throws']( | ||||
| 		function () { callBound('does not exist', true); }, | ||||
| 		SyntaxError, | ||||
| 		'allowMissing arg still throws for unknown intrinsic' | ||||
| 	); | ||||
|  | ||||
| 	/* globals WeakRef: false */ | ||||
| 	t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { | ||||
| 		st['throws']( | ||||
| 			function () { callBound('WeakRef'); }, | ||||
| 			TypeError, | ||||
| 			'real but absent intrinsic throws' | ||||
| 		); | ||||
| 		st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); | ||||
| 		st.end(); | ||||
| 	}); | ||||
|  | ||||
| 	t.end(); | ||||
| }); | ||||
							
								
								
									
										66
									
								
								17/node_modules/call-bind/test/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								17/node_modules/call-bind/test/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| var callBind = require('../'); | ||||
| var bind = require('function-bind'); | ||||
|  | ||||
| var test = require('tape'); | ||||
|  | ||||
| /* | ||||
|  * older engines have length nonconfigurable | ||||
|  * in io.js v3, it is configurable except on bound functions, hence the .bind() | ||||
|  */ | ||||
| var functionsHaveConfigurableLengths = !!( | ||||
| 	Object.getOwnPropertyDescriptor | ||||
| 	&& Object.getOwnPropertyDescriptor(bind.call(function () {}), 'length').configurable | ||||
| ); | ||||
|  | ||||
| test('callBind', function (t) { | ||||
| 	var sentinel = { sentinel: true }; | ||||
| 	var func = function (a, b) { | ||||
| 		// eslint-disable-next-line no-invalid-this | ||||
| 		return [this, a, b]; | ||||
| 	}; | ||||
| 	t.equal(func.length, 2, 'original function length is 2'); | ||||
| 	t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); | ||||
| 	t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); | ||||
| 	t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); | ||||
|  | ||||
| 	var bound = callBind(func); | ||||
| 	t.equal(bound.length, func.length + 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); | ||||
| 	t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with too few args'); | ||||
| 	t.deepEqual(bound(1, 2), [1, 2, undefined], 'bound func with right args'); | ||||
| 	t.deepEqual(bound(1, 2, 3), [1, 2, 3], 'bound func with too many args'); | ||||
|  | ||||
| 	var boundR = callBind(func, sentinel); | ||||
| 	t.equal(boundR.length, func.length, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); | ||||
| 	t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); | ||||
| 	t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); | ||||
| 	t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); | ||||
|  | ||||
| 	var boundArg = callBind(func, sentinel, 1); | ||||
| 	t.equal(boundArg.length, func.length - 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); | ||||
| 	t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); | ||||
| 	t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); | ||||
| 	t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); | ||||
|  | ||||
| 	t.test('callBind.apply', function (st) { | ||||
| 		var aBound = callBind.apply(func); | ||||
| 		st.deepEqual(aBound(sentinel), [sentinel, undefined, undefined], 'apply-bound func with no args'); | ||||
| 		st.deepEqual(aBound(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); | ||||
| 		st.deepEqual(aBound(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); | ||||
|  | ||||
| 		var aBoundArg = callBind.apply(func); | ||||
| 		st.deepEqual(aBoundArg(sentinel, [1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with too many args'); | ||||
| 		st.deepEqual(aBoundArg(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); | ||||
| 		st.deepEqual(aBoundArg(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); | ||||
|  | ||||
| 		var aBoundR = callBind.apply(func, sentinel); | ||||
| 		st.deepEqual(aBoundR([1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with receiver and too many args'); | ||||
| 		st.deepEqual(aBoundR([1, 2], 4), [sentinel, 1, 2], 'apply-bound func with receiver and right args'); | ||||
| 		st.deepEqual(aBoundR([1], 4), [sentinel, 1, undefined], 'apply-bound func with receiver and too few args'); | ||||
|  | ||||
| 		st.end(); | ||||
| 	}); | ||||
|  | ||||
| 	t.end(); | ||||
| }); | ||||
							
								
								
									
										60
									
								
								17/node_modules/content-disposition/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								17/node_modules/content-disposition/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| 0.5.4 / 2021-12-10 | ||||
| ================== | ||||
|  | ||||
|   * deps: safe-buffer@5.2.1 | ||||
|  | ||||
| 0.5.3 / 2018-12-17 | ||||
| ================== | ||||
|  | ||||
|   * Use `safe-buffer` for improved Buffer API | ||||
|  | ||||
| 0.5.2 / 2016-12-08 | ||||
| ================== | ||||
|  | ||||
|   * Fix `parse` to accept any linear whitespace character | ||||
|  | ||||
| 0.5.1 / 2016-01-17 | ||||
| ================== | ||||
|  | ||||
|   * perf: enable strict mode | ||||
|  | ||||
| 0.5.0 / 2014-10-11 | ||||
| ================== | ||||
|  | ||||
|   * Add `parse` function | ||||
|  | ||||
| 0.4.0 / 2014-09-21 | ||||
| ================== | ||||
|  | ||||
|   * Expand non-Unicode `filename` to the full ISO-8859-1 charset | ||||
|  | ||||
| 0.3.0 / 2014-09-20 | ||||
| ================== | ||||
|  | ||||
|   * Add `fallback` option | ||||
|   * Add `type` option | ||||
|  | ||||
| 0.2.0 / 2014-09-19 | ||||
| ================== | ||||
|  | ||||
|   * Reduce ambiguity of file names with hex escape in buggy browsers | ||||
|  | ||||
| 0.1.2 / 2014-09-19 | ||||
| ================== | ||||
|  | ||||
|   * Fix periodic invalid Unicode filename header | ||||
|  | ||||
| 0.1.1 / 2014-09-19 | ||||
| ================== | ||||
|  | ||||
|   * Fix invalid characters appearing in `filename*` parameter | ||||
|  | ||||
| 0.1.0 / 2014-09-18 | ||||
| ================== | ||||
|  | ||||
|   * Make the `filename` argument optional | ||||
|  | ||||
| 0.0.0 / 2014-09-18 | ||||
| ================== | ||||
|  | ||||
|   * Initial release | ||||
							
								
								
									
										22
									
								
								17/node_modules/content-disposition/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								17/node_modules/content-disposition/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2014-2017 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. | ||||
							
								
								
									
										142
									
								
								17/node_modules/content-disposition/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								17/node_modules/content-disposition/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,142 @@ | ||||
| # content-disposition | ||||
|  | ||||
| [![NPM Version][npm-image]][npm-url] | ||||
| [![NPM Downloads][downloads-image]][downloads-url] | ||||
| [![Node.js Version][node-version-image]][node-version-url] | ||||
| [![Build Status][github-actions-ci-image]][github-actions-ci-url] | ||||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||||
|  | ||||
| Create and parse HTTP `Content-Disposition` header | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ```sh | ||||
| $ npm install content-disposition | ||||
| ``` | ||||
|  | ||||
| ## API | ||||
|  | ||||
| ```js | ||||
| var contentDisposition = require('content-disposition') | ||||
| ``` | ||||
|  | ||||
| ### contentDisposition(filename, options) | ||||
|  | ||||
| Create an attachment `Content-Disposition` header value using the given file name, | ||||
| if supplied. The `filename` is optional and if no file name is desired, but you | ||||
| want to specify `options`, set `filename` to `undefined`. | ||||
|  | ||||
| ```js | ||||
| res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf')) | ||||
| ``` | ||||
|  | ||||
| **note** HTTP headers are of the ISO-8859-1 character set. If you are writing this | ||||
| header through a means different from `setHeader` in Node.js, you'll want to specify | ||||
| the `'binary'` encoding in Node.js. | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| `contentDisposition` accepts these properties in the options object. | ||||
|  | ||||
| ##### fallback | ||||
|  | ||||
| If the `filename` option is outside ISO-8859-1, then the file name is actually | ||||
| stored in a supplemental field for clients that support Unicode file names and | ||||
| a ISO-8859-1 version of the file name is automatically generated. | ||||
|  | ||||
| This specifies the ISO-8859-1 file name to override the automatic generation or | ||||
| disables the generation all together, defaults to `true`. | ||||
|  | ||||
|   - A string will specify the ISO-8859-1 file name to use in place of automatic | ||||
|     generation. | ||||
|   - `false` will disable including a ISO-8859-1 file name and only include the | ||||
|     Unicode version (unless the file name is already ISO-8859-1). | ||||
|   - `true` will enable automatic generation if the file name is outside ISO-8859-1. | ||||
|  | ||||
| If the `filename` option is ISO-8859-1 and this option is specified and has a | ||||
| different value, then the `filename` option is encoded in the extended field | ||||
| and this set as the fallback field, even though they are both ISO-8859-1. | ||||
|  | ||||
| ##### type | ||||
|  | ||||
| Specifies the disposition type, defaults to `"attachment"`. This can also be | ||||
| `"inline"`, or any other value (all values except inline are treated like | ||||
| `attachment`, but can convey additional information if both parties agree to | ||||
| it). The type is normalized to lower-case. | ||||
|  | ||||
| ### contentDisposition.parse(string) | ||||
|  | ||||
| ```js | ||||
| var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt') | ||||
| ``` | ||||
|  | ||||
| Parse a `Content-Disposition` header string. This automatically handles extended | ||||
| ("Unicode") parameters by decoding them and providing them under the standard | ||||
| parameter name. This will return an object with the following properties (examples | ||||
| are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`): | ||||
|  | ||||
|  - `type`: The disposition type (always lower case). Example: `'attachment'` | ||||
|  | ||||
|  - `parameters`: An object of the parameters in the disposition (name of parameter | ||||
|    always lower case and extended versions replace non-extended versions). Example: | ||||
|    `{filename: "€ rates.txt"}` | ||||
|  | ||||
| ## Examples | ||||
|  | ||||
| ### Send a file for download | ||||
|  | ||||
| ```js | ||||
| var contentDisposition = require('content-disposition') | ||||
| var destroy = require('destroy') | ||||
| var fs = require('fs') | ||||
| var http = require('http') | ||||
| var onFinished = require('on-finished') | ||||
|  | ||||
| var filePath = '/path/to/public/plans.pdf' | ||||
|  | ||||
| http.createServer(function onRequest (req, res) { | ||||
|   // set headers | ||||
|   res.setHeader('Content-Type', 'application/pdf') | ||||
|   res.setHeader('Content-Disposition', contentDisposition(filePath)) | ||||
|  | ||||
|   // send file | ||||
|   var stream = fs.createReadStream(filePath) | ||||
|   stream.pipe(res) | ||||
|   onFinished(res, function () { | ||||
|     destroy(stream) | ||||
|   }) | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| ## Testing | ||||
|  | ||||
| ```sh | ||||
| $ npm test | ||||
| ``` | ||||
|  | ||||
| ## References | ||||
|  | ||||
| - [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616] | ||||
| - [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987] | ||||
| - [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266] | ||||
| - [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231] | ||||
|  | ||||
| [rfc-2616]: https://tools.ietf.org/html/rfc2616 | ||||
| [rfc-5987]: https://tools.ietf.org/html/rfc5987 | ||||
| [rfc-6266]: https://tools.ietf.org/html/rfc6266 | ||||
| [tc-2231]: http://greenbytes.de/tech/tc2231/ | ||||
|  | ||||
| ## License | ||||
|  | ||||
| [MIT](LICENSE) | ||||
|  | ||||
| [npm-image]: https://img.shields.io/npm/v/content-disposition.svg | ||||
| [npm-url]: https://npmjs.org/package/content-disposition | ||||
| [node-version-image]: https://img.shields.io/node/v/content-disposition.svg | ||||
| [node-version-url]: https://nodejs.org/en/download | ||||
| [coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg | ||||
| [coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master | ||||
| [downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg | ||||
| [downloads-url]: https://npmjs.org/package/content-disposition | ||||
| [github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/content-disposition/ci/master?label=ci | ||||
| [github-actions-ci-url]: https://github.com/jshttp/content-disposition?query=workflow%3Aci | ||||
							
								
								
									
										458
									
								
								17/node_modules/content-disposition/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										458
									
								
								17/node_modules/content-disposition/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,458 @@ | ||||
| /*! | ||||
|  * content-disposition | ||||
|  * Copyright(c) 2014-2017 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| module.exports = contentDisposition | ||||
| module.exports.parse = parse | ||||
|  | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var basename = require('path').basename | ||||
| var Buffer = require('safe-buffer').Buffer | ||||
|  | ||||
| /** | ||||
|  * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%") | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g // eslint-disable-line no-control-regex | ||||
|  | ||||
| /** | ||||
|  * RegExp to match percent encoding escape. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/ | ||||
| var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g | ||||
|  | ||||
| /** | ||||
|  * RegExp to match non-latin1 characters. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g | ||||
|  | ||||
| /** | ||||
|  * RegExp to match quoted-pair in RFC 2616 | ||||
|  * | ||||
|  * quoted-pair = "\" CHAR | ||||
|  * CHAR        = <any US-ASCII character (octets 0 - 127)> | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var QESC_REGEXP = /\\([\u0000-\u007f])/g // eslint-disable-line no-control-regex | ||||
|  | ||||
| /** | ||||
|  * RegExp to match chars that must be quoted-pair in RFC 2616 | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var QUOTE_REGEXP = /([\\"])/g | ||||
|  | ||||
| /** | ||||
|  * RegExp for various RFC 2616 grammar | ||||
|  * | ||||
|  * parameter     = token "=" ( token | quoted-string ) | ||||
|  * token         = 1*<any CHAR except CTLs or separators> | ||||
|  * separators    = "(" | ")" | "<" | ">" | "@" | ||||
|  *               | "," | ";" | ":" | "\" | <"> | ||||
|  *               | "/" | "[" | "]" | "?" | "=" | ||||
|  *               | "{" | "}" | SP | HT | ||||
|  * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) | ||||
|  * qdtext        = <any TEXT except <">> | ||||
|  * quoted-pair   = "\" CHAR | ||||
|  * CHAR          = <any US-ASCII character (octets 0 - 127)> | ||||
|  * TEXT          = <any OCTET except CTLs, but including LWS> | ||||
|  * LWS           = [CRLF] 1*( SP | HT ) | ||||
|  * CRLF          = CR LF | ||||
|  * CR            = <US-ASCII CR, carriage return (13)> | ||||
|  * LF            = <US-ASCII LF, linefeed (10)> | ||||
|  * SP            = <US-ASCII SP, space (32)> | ||||
|  * HT            = <US-ASCII HT, horizontal-tab (9)> | ||||
|  * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)> | ||||
|  * OCTET         = <any 8-bit sequence of data> | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g // eslint-disable-line no-control-regex | ||||
| var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/ | ||||
| var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/ | ||||
|  | ||||
| /** | ||||
|  * RegExp for various RFC 5987 grammar | ||||
|  * | ||||
|  * ext-value     = charset  "'" [ language ] "'" value-chars | ||||
|  * charset       = "UTF-8" / "ISO-8859-1" / mime-charset | ||||
|  * mime-charset  = 1*mime-charsetc | ||||
|  * mime-charsetc = ALPHA / DIGIT | ||||
|  *               / "!" / "#" / "$" / "%" / "&" | ||||
|  *               / "+" / "-" / "^" / "_" / "`" | ||||
|  *               / "{" / "}" / "~" | ||||
|  * language      = ( 2*3ALPHA [ extlang ] ) | ||||
|  *               / 4ALPHA | ||||
|  *               / 5*8ALPHA | ||||
|  * extlang       = *3( "-" 3ALPHA ) | ||||
|  * value-chars   = *( pct-encoded / attr-char ) | ||||
|  * pct-encoded   = "%" HEXDIG HEXDIG | ||||
|  * attr-char     = ALPHA / DIGIT | ||||
|  *               / "!" / "#" / "$" / "&" / "+" / "-" / "." | ||||
|  *               / "^" / "_" / "`" / "|" / "~" | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/ | ||||
|  | ||||
| /** | ||||
|  * RegExp for various RFC 6266 grammar | ||||
|  * | ||||
|  * disposition-type = "inline" | "attachment" | disp-ext-type | ||||
|  * disp-ext-type    = token | ||||
|  * disposition-parm = filename-parm | disp-ext-parm | ||||
|  * filename-parm    = "filename" "=" value | ||||
|  *                  | "filename*" "=" ext-value | ||||
|  * disp-ext-parm    = token "=" value | ||||
|  *                  | ext-token "=" ext-value | ||||
|  * ext-token        = <the characters in token, followed by "*"> | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/ // eslint-disable-line no-control-regex | ||||
|  | ||||
| /** | ||||
|  * Create an attachment Content-Disposition header. | ||||
|  * | ||||
|  * @param {string} [filename] | ||||
|  * @param {object} [options] | ||||
|  * @param {string} [options.type=attachment] | ||||
|  * @param {string|boolean} [options.fallback=true] | ||||
|  * @return {string} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function contentDisposition (filename, options) { | ||||
|   var opts = options || {} | ||||
|  | ||||
|   // get type | ||||
|   var type = opts.type || 'attachment' | ||||
|  | ||||
|   // get parameters | ||||
|   var params = createparams(filename, opts.fallback) | ||||
|  | ||||
|   // format into string | ||||
|   return format(new ContentDisposition(type, params)) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Create parameters object from filename and fallback. | ||||
|  * | ||||
|  * @param {string} [filename] | ||||
|  * @param {string|boolean} [fallback=true] | ||||
|  * @return {object} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function createparams (filename, fallback) { | ||||
|   if (filename === undefined) { | ||||
|     return | ||||
|   } | ||||
|  | ||||
|   var params = {} | ||||
|  | ||||
|   if (typeof filename !== 'string') { | ||||
|     throw new TypeError('filename must be a string') | ||||
|   } | ||||
|  | ||||
|   // fallback defaults to true | ||||
|   if (fallback === undefined) { | ||||
|     fallback = true | ||||
|   } | ||||
|  | ||||
|   if (typeof fallback !== 'string' && typeof fallback !== 'boolean') { | ||||
|     throw new TypeError('fallback must be a string or boolean') | ||||
|   } | ||||
|  | ||||
|   if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) { | ||||
|     throw new TypeError('fallback must be ISO-8859-1 string') | ||||
|   } | ||||
|  | ||||
|   // restrict to file base name | ||||
|   var name = basename(filename) | ||||
|  | ||||
|   // determine if name is suitable for quoted string | ||||
|   var isQuotedString = TEXT_REGEXP.test(name) | ||||
|  | ||||
|   // generate fallback name | ||||
|   var fallbackName = typeof fallback !== 'string' | ||||
|     ? fallback && getlatin1(name) | ||||
|     : basename(fallback) | ||||
|   var hasFallback = typeof fallbackName === 'string' && fallbackName !== name | ||||
|  | ||||
|   // set extended filename parameter | ||||
|   if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) { | ||||
|     params['filename*'] = name | ||||
|   } | ||||
|  | ||||
|   // set filename parameter | ||||
|   if (isQuotedString || hasFallback) { | ||||
|     params.filename = hasFallback | ||||
|       ? fallbackName | ||||
|       : name | ||||
|   } | ||||
|  | ||||
|   return params | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Format object to Content-Disposition header. | ||||
|  * | ||||
|  * @param {object} obj | ||||
|  * @param {string} obj.type | ||||
|  * @param {object} [obj.parameters] | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function format (obj) { | ||||
|   var parameters = obj.parameters | ||||
|   var type = obj.type | ||||
|  | ||||
|   if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) { | ||||
|     throw new TypeError('invalid type') | ||||
|   } | ||||
|  | ||||
|   // start with normalized type | ||||
|   var string = String(type).toLowerCase() | ||||
|  | ||||
|   // append parameters | ||||
|   if (parameters && typeof parameters === 'object') { | ||||
|     var param | ||||
|     var params = Object.keys(parameters).sort() | ||||
|  | ||||
|     for (var i = 0; i < params.length; i++) { | ||||
|       param = params[i] | ||||
|  | ||||
|       var val = param.substr(-1) === '*' | ||||
|         ? ustring(parameters[param]) | ||||
|         : qstring(parameters[param]) | ||||
|  | ||||
|       string += '; ' + param + '=' + val | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return string | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Decode a RFC 5987 field value (gracefully). | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function decodefield (str) { | ||||
|   var match = EXT_VALUE_REGEXP.exec(str) | ||||
|  | ||||
|   if (!match) { | ||||
|     throw new TypeError('invalid extended field value') | ||||
|   } | ||||
|  | ||||
|   var charset = match[1].toLowerCase() | ||||
|   var encoded = match[2] | ||||
|   var value | ||||
|  | ||||
|   // to binary string | ||||
|   var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode) | ||||
|  | ||||
|   switch (charset) { | ||||
|     case 'iso-8859-1': | ||||
|       value = getlatin1(binary) | ||||
|       break | ||||
|     case 'utf-8': | ||||
|       value = Buffer.from(binary, 'binary').toString('utf8') | ||||
|       break | ||||
|     default: | ||||
|       throw new TypeError('unsupported charset in extended field') | ||||
|   } | ||||
|  | ||||
|   return value | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get ISO-8859-1 version of string. | ||||
|  * | ||||
|  * @param {string} val | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function getlatin1 (val) { | ||||
|   // simple Unicode -> ISO-8859-1 transformation | ||||
|   return String(val).replace(NON_LATIN1_REGEXP, '?') | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Parse Content-Disposition header string. | ||||
|  * | ||||
|  * @param {string} string | ||||
|  * @return {object} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function parse (string) { | ||||
|   if (!string || typeof string !== 'string') { | ||||
|     throw new TypeError('argument string is required') | ||||
|   } | ||||
|  | ||||
|   var match = DISPOSITION_TYPE_REGEXP.exec(string) | ||||
|  | ||||
|   if (!match) { | ||||
|     throw new TypeError('invalid type format') | ||||
|   } | ||||
|  | ||||
|   // normalize type | ||||
|   var index = match[0].length | ||||
|   var type = match[1].toLowerCase() | ||||
|  | ||||
|   var key | ||||
|   var names = [] | ||||
|   var params = {} | ||||
|   var value | ||||
|  | ||||
|   // calculate index to start at | ||||
|   index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ';' | ||||
|     ? index - 1 | ||||
|     : index | ||||
|  | ||||
|   // match parameters | ||||
|   while ((match = PARAM_REGEXP.exec(string))) { | ||||
|     if (match.index !== index) { | ||||
|       throw new TypeError('invalid parameter format') | ||||
|     } | ||||
|  | ||||
|     index += match[0].length | ||||
|     key = match[1].toLowerCase() | ||||
|     value = match[2] | ||||
|  | ||||
|     if (names.indexOf(key) !== -1) { | ||||
|       throw new TypeError('invalid duplicate parameter') | ||||
|     } | ||||
|  | ||||
|     names.push(key) | ||||
|  | ||||
|     if (key.indexOf('*') + 1 === key.length) { | ||||
|       // decode extended value | ||||
|       key = key.slice(0, -1) | ||||
|       value = decodefield(value) | ||||
|  | ||||
|       // overwrite existing value | ||||
|       params[key] = value | ||||
|       continue | ||||
|     } | ||||
|  | ||||
|     if (typeof params[key] === 'string') { | ||||
|       continue | ||||
|     } | ||||
|  | ||||
|     if (value[0] === '"') { | ||||
|       // remove quotes and escapes | ||||
|       value = value | ||||
|         .substr(1, value.length - 2) | ||||
|         .replace(QESC_REGEXP, '$1') | ||||
|     } | ||||
|  | ||||
|     params[key] = value | ||||
|   } | ||||
|  | ||||
|   if (index !== -1 && index !== string.length) { | ||||
|     throw new TypeError('invalid parameter format') | ||||
|   } | ||||
|  | ||||
|   return new ContentDisposition(type, params) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Percent decode a single character. | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @param {string} hex | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function pdecode (str, hex) { | ||||
|   return String.fromCharCode(parseInt(hex, 16)) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Percent encode a single character. | ||||
|  * | ||||
|  * @param {string} char | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function pencode (char) { | ||||
|   return '%' + String(char) | ||||
|     .charCodeAt(0) | ||||
|     .toString(16) | ||||
|     .toUpperCase() | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Quote a string for HTTP. | ||||
|  * | ||||
|  * @param {string} val | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function qstring (val) { | ||||
|   var str = String(val) | ||||
|  | ||||
|   return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"' | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Encode a Unicode string for HTTP (RFC 5987). | ||||
|  * | ||||
|  * @param {string} val | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function ustring (val) { | ||||
|   var str = String(val) | ||||
|  | ||||
|   // percent encode as UTF-8 | ||||
|   var encoded = encodeURIComponent(str) | ||||
|     .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode) | ||||
|  | ||||
|   return 'UTF-8\'\'' + encoded | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Class for parsed Content-Disposition header for v8 optimization | ||||
|  * | ||||
|  * @public | ||||
|  * @param {string} type | ||||
|  * @param {object} parameters | ||||
|  * @constructor | ||||
|  */ | ||||
|  | ||||
| function ContentDisposition (type, parameters) { | ||||
|   this.type = type | ||||
|   this.parameters = parameters | ||||
| } | ||||
							
								
								
									
										44
									
								
								17/node_modules/content-disposition/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								17/node_modules/content-disposition/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| { | ||||
|   "name": "content-disposition", | ||||
|   "description": "Create and parse Content-Disposition header", | ||||
|   "version": "0.5.4", | ||||
|   "author": "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||||
|   "license": "MIT", | ||||
|   "keywords": [ | ||||
|     "content-disposition", | ||||
|     "http", | ||||
|     "rfc6266", | ||||
|     "res" | ||||
|   ], | ||||
|   "repository": "jshttp/content-disposition", | ||||
|   "dependencies": { | ||||
|     "safe-buffer": "5.2.1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "deep-equal": "1.0.1", | ||||
|     "eslint": "7.32.0", | ||||
|     "eslint-config-standard": "13.0.1", | ||||
|     "eslint-plugin-import": "2.25.3", | ||||
|     "eslint-plugin-markdown": "2.2.1", | ||||
|     "eslint-plugin-node": "11.1.0", | ||||
|     "eslint-plugin-promise": "5.2.0", | ||||
|     "eslint-plugin-standard": "4.1.0", | ||||
|     "istanbul": "0.4.5", | ||||
|     "mocha": "9.1.3" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "LICENSE", | ||||
|     "HISTORY.md", | ||||
|     "README.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.6" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint": "eslint .", | ||||
|     "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/" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										29
									
								
								17/node_modules/content-type/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								17/node_modules/content-type/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| 1.0.5 / 2023-01-29 | ||||
| ================== | ||||
|  | ||||
|   * perf: skip value escaping when unnecessary | ||||
|  | ||||
| 1.0.4 / 2017-09-11 | ||||
| ================== | ||||
|  | ||||
|   * perf: skip parameter parsing when no parameters | ||||
|  | ||||
| 1.0.3 / 2017-09-10 | ||||
| ================== | ||||
|  | ||||
|   * perf: remove argument reassignment | ||||
|  | ||||
| 1.0.2 / 2016-05-09 | ||||
| ================== | ||||
|  | ||||
|   * perf: enable strict mode | ||||
|  | ||||
| 1.0.1 / 2015-02-13 | ||||
| ================== | ||||
|  | ||||
|   * Improve missing `Content-Type` header error message | ||||
|  | ||||
| 1.0.0 / 2015-02-01 | ||||
| ================== | ||||
|  | ||||
|   * Initial implementation, derived from `media-typer@0.3.0` | ||||
							
								
								
									
										22
									
								
								17/node_modules/content-type/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								17/node_modules/content-type/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2015 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. | ||||
							
								
								
									
										94
									
								
								17/node_modules/content-type/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								17/node_modules/content-type/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
| # content-type | ||||
|  | ||||
| [![NPM Version][npm-version-image]][npm-url] | ||||
| [![NPM Downloads][npm-downloads-image]][npm-url] | ||||
| [![Node.js Version][node-image]][node-url] | ||||
| [![Build Status][ci-image]][ci-url] | ||||
| [![Coverage Status][coveralls-image]][coveralls-url] | ||||
|  | ||||
| Create and parse HTTP Content-Type header according to RFC 7231 | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ```sh | ||||
| $ npm install content-type | ||||
| ``` | ||||
|  | ||||
| ## API | ||||
|  | ||||
| ```js | ||||
| var contentType = require('content-type') | ||||
| ``` | ||||
|  | ||||
| ### contentType.parse(string) | ||||
|  | ||||
| ```js | ||||
| var obj = contentType.parse('image/svg+xml; charset=utf-8') | ||||
| ``` | ||||
|  | ||||
| Parse a `Content-Type` header. This will return an object with the following | ||||
| properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): | ||||
|  | ||||
|  - `type`: The media type (the type and subtype, always lower case). | ||||
|    Example: `'image/svg+xml'` | ||||
|  | ||||
|  - `parameters`: An object of the parameters in the media type (name of parameter | ||||
|    always lower case). Example: `{charset: 'utf-8'}` | ||||
|  | ||||
| Throws a `TypeError` if the string is missing or invalid. | ||||
|  | ||||
| ### contentType.parse(req) | ||||
|  | ||||
| ```js | ||||
| var obj = contentType.parse(req) | ||||
| ``` | ||||
|  | ||||
| Parse the `Content-Type` header from the given `req`. Short-cut for | ||||
| `contentType.parse(req.headers['content-type'])`. | ||||
|  | ||||
| Throws a `TypeError` if the `Content-Type` header is missing or invalid. | ||||
|  | ||||
| ### contentType.parse(res) | ||||
|  | ||||
| ```js | ||||
| var obj = contentType.parse(res) | ||||
| ``` | ||||
|  | ||||
| Parse the `Content-Type` header set on the given `res`. Short-cut for | ||||
| `contentType.parse(res.getHeader('content-type'))`. | ||||
|  | ||||
| Throws a `TypeError` if the `Content-Type` header is missing or invalid. | ||||
|  | ||||
| ### contentType.format(obj) | ||||
|  | ||||
| ```js | ||||
| var str = contentType.format({ | ||||
|   type: 'image/svg+xml', | ||||
|   parameters: { charset: 'utf-8' } | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| Format an object into a `Content-Type` header. This will return a string of the | ||||
| content type for the given object with the following properties (examples are | ||||
| shown that produce the string `'image/svg+xml; charset=utf-8'`): | ||||
|  | ||||
|  - `type`: The media type (will be lower-cased). Example: `'image/svg+xml'` | ||||
|  | ||||
|  - `parameters`: An object of the parameters in the media type (name of the | ||||
|    parameter will be lower-cased). Example: `{charset: 'utf-8'}` | ||||
|  | ||||
| Throws a `TypeError` if the object contains an invalid type or parameter names. | ||||
|  | ||||
| ## License | ||||
|  | ||||
| [MIT](LICENSE) | ||||
|  | ||||
| [ci-image]: https://badgen.net/github/checks/jshttp/content-type/master?label=ci | ||||
| [ci-url]: https://github.com/jshttp/content-type/actions/workflows/ci.yml | ||||
| [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/content-type/master | ||||
| [coveralls-url]: https://coveralls.io/r/jshttp/content-type?branch=master | ||||
| [node-image]: https://badgen.net/npm/node/content-type | ||||
| [node-url]: https://nodejs.org/en/download | ||||
| [npm-downloads-image]: https://badgen.net/npm/dm/content-type | ||||
| [npm-url]: https://npmjs.org/package/content-type | ||||
| [npm-version-image]: https://badgen.net/npm/v/content-type | ||||
							
								
								
									
										225
									
								
								17/node_modules/content-type/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										225
									
								
								17/node_modules/content-type/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,225 @@ | ||||
| /*! | ||||
|  * content-type | ||||
|  * Copyright(c) 2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict' | ||||
|  | ||||
| /** | ||||
|  * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1 | ||||
|  * | ||||
|  * parameter     = token "=" ( token / quoted-string ) | ||||
|  * token         = 1*tchar | ||||
|  * tchar         = "!" / "#" / "$" / "%" / "&" / "'" / "*" | ||||
|  *               / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" | ||||
|  *               / DIGIT / ALPHA | ||||
|  *               ; any VCHAR, except delimiters | ||||
|  * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE | ||||
|  * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text | ||||
|  * obs-text      = %x80-FF | ||||
|  * quoted-pair   = "\" ( HTAB / SP / VCHAR / obs-text ) | ||||
|  */ | ||||
| var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex | ||||
| var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex | ||||
| var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ | ||||
|  | ||||
| /** | ||||
|  * RegExp to match quoted-pair in RFC 7230 sec 3.2.6 | ||||
|  * | ||||
|  * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) | ||||
|  * obs-text    = %x80-FF | ||||
|  */ | ||||
| var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex | ||||
|  | ||||
| /** | ||||
|  * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6 | ||||
|  */ | ||||
| var QUOTE_REGEXP = /([\\"])/g | ||||
|  | ||||
| /** | ||||
|  * RegExp to match type in RFC 7231 sec 3.1.1.1 | ||||
|  * | ||||
|  * media-type = type "/" subtype | ||||
|  * type       = token | ||||
|  * subtype    = token | ||||
|  */ | ||||
| var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| exports.format = format | ||||
| exports.parse = parse | ||||
|  | ||||
| /** | ||||
|  * Format object to media type. | ||||
|  * | ||||
|  * @param {object} obj | ||||
|  * @return {string} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function format (obj) { | ||||
|   if (!obj || typeof obj !== 'object') { | ||||
|     throw new TypeError('argument obj is required') | ||||
|   } | ||||
|  | ||||
|   var parameters = obj.parameters | ||||
|   var type = obj.type | ||||
|  | ||||
|   if (!type || !TYPE_REGEXP.test(type)) { | ||||
|     throw new TypeError('invalid type') | ||||
|   } | ||||
|  | ||||
|   var string = type | ||||
|  | ||||
|   // append parameters | ||||
|   if (parameters && typeof parameters === 'object') { | ||||
|     var param | ||||
|     var params = Object.keys(parameters).sort() | ||||
|  | ||||
|     for (var i = 0; i < params.length; i++) { | ||||
|       param = params[i] | ||||
|  | ||||
|       if (!TOKEN_REGEXP.test(param)) { | ||||
|         throw new TypeError('invalid parameter name') | ||||
|       } | ||||
|  | ||||
|       string += '; ' + param + '=' + qstring(parameters[param]) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return string | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Parse media type to object. | ||||
|  * | ||||
|  * @param {string|object} string | ||||
|  * @return {Object} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function parse (string) { | ||||
|   if (!string) { | ||||
|     throw new TypeError('argument string is required') | ||||
|   } | ||||
|  | ||||
|   // support req/res-like objects as argument | ||||
|   var header = typeof string === 'object' | ||||
|     ? getcontenttype(string) | ||||
|     : string | ||||
|  | ||||
|   if (typeof header !== 'string') { | ||||
|     throw new TypeError('argument string is required to be a string') | ||||
|   } | ||||
|  | ||||
|   var index = header.indexOf(';') | ||||
|   var type = index !== -1 | ||||
|     ? header.slice(0, index).trim() | ||||
|     : header.trim() | ||||
|  | ||||
|   if (!TYPE_REGEXP.test(type)) { | ||||
|     throw new TypeError('invalid media type') | ||||
|   } | ||||
|  | ||||
|   var obj = new ContentType(type.toLowerCase()) | ||||
|  | ||||
|   // parse parameters | ||||
|   if (index !== -1) { | ||||
|     var key | ||||
|     var match | ||||
|     var value | ||||
|  | ||||
|     PARAM_REGEXP.lastIndex = index | ||||
|  | ||||
|     while ((match = PARAM_REGEXP.exec(header))) { | ||||
|       if (match.index !== index) { | ||||
|         throw new TypeError('invalid parameter format') | ||||
|       } | ||||
|  | ||||
|       index += match[0].length | ||||
|       key = match[1].toLowerCase() | ||||
|       value = match[2] | ||||
|  | ||||
|       if (value.charCodeAt(0) === 0x22 /* " */) { | ||||
|         // remove quotes | ||||
|         value = value.slice(1, -1) | ||||
|  | ||||
|         // remove escapes | ||||
|         if (value.indexOf('\\') !== -1) { | ||||
|           value = value.replace(QESC_REGEXP, '$1') | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       obj.parameters[key] = value | ||||
|     } | ||||
|  | ||||
|     if (index !== header.length) { | ||||
|       throw new TypeError('invalid parameter format') | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return obj | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Get content-type from req/res objects. | ||||
|  * | ||||
|  * @param {object} | ||||
|  * @return {Object} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function getcontenttype (obj) { | ||||
|   var header | ||||
|  | ||||
|   if (typeof obj.getHeader === 'function') { | ||||
|     // res-like | ||||
|     header = obj.getHeader('content-type') | ||||
|   } else if (typeof obj.headers === 'object') { | ||||
|     // req-like | ||||
|     header = obj.headers && obj.headers['content-type'] | ||||
|   } | ||||
|  | ||||
|   if (typeof header !== 'string') { | ||||
|     throw new TypeError('content-type header is missing from object') | ||||
|   } | ||||
|  | ||||
|   return header | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Quote a string if necessary. | ||||
|  * | ||||
|  * @param {string} val | ||||
|  * @return {string} | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function qstring (val) { | ||||
|   var str = String(val) | ||||
|  | ||||
|   // no need to quote tokens | ||||
|   if (TOKEN_REGEXP.test(str)) { | ||||
|     return str | ||||
|   } | ||||
|  | ||||
|   if (str.length > 0 && !TEXT_REGEXP.test(str)) { | ||||
|     throw new TypeError('invalid parameter value') | ||||
|   } | ||||
|  | ||||
|   return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"' | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Class to represent a content type. | ||||
|  * @private | ||||
|  */ | ||||
| function ContentType (type) { | ||||
|   this.parameters = Object.create(null) | ||||
|   this.type = type | ||||
| } | ||||
							
								
								
									
										42
									
								
								17/node_modules/content-type/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								17/node_modules/content-type/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| { | ||||
|   "name": "content-type", | ||||
|   "description": "Create and parse HTTP Content-Type header", | ||||
|   "version": "1.0.5", | ||||
|   "author": "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||||
|   "license": "MIT", | ||||
|   "keywords": [ | ||||
|     "content-type", | ||||
|     "http", | ||||
|     "req", | ||||
|     "res", | ||||
|     "rfc7231" | ||||
|   ], | ||||
|   "repository": "jshttp/content-type", | ||||
|   "devDependencies": { | ||||
|     "deep-equal": "1.0.1", | ||||
|     "eslint": "8.32.0", | ||||
|     "eslint-config-standard": "15.0.1", | ||||
|     "eslint-plugin-import": "2.27.5", | ||||
|     "eslint-plugin-node": "11.1.0", | ||||
|     "eslint-plugin-promise": "6.1.1", | ||||
|     "eslint-plugin-standard": "4.1.0", | ||||
|     "mocha": "10.2.0", | ||||
|     "nyc": "15.1.0" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "LICENSE", | ||||
|     "HISTORY.md", | ||||
|     "README.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.6" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "lint": "eslint .", | ||||
|     "test": "mocha --reporter spec --check-leaks --bail test/", | ||||
|     "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" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										4
									
								
								17/node_modules/cookie-signature/.npmignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								17/node_modules/cookie-signature/.npmignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| support | ||||
| test | ||||
| examples | ||||
| *.sock | ||||
							
								
								
									
										38
									
								
								17/node_modules/cookie-signature/History.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								17/node_modules/cookie-signature/History.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| 1.0.6 / 2015-02-03 | ||||
| ================== | ||||
|  | ||||
| * use `npm test` instead of `make test` to run tests | ||||
| * clearer assertion messages when checking input | ||||
|  | ||||
|  | ||||
| 1.0.5 / 2014-09-05 | ||||
| ================== | ||||
|  | ||||
| * add license to package.json | ||||
|  | ||||
| 1.0.4 / 2014-06-25 | ||||
| ================== | ||||
|  | ||||
|  * corrected avoidance of timing attacks (thanks @tenbits!) | ||||
|  | ||||
| 1.0.3 / 2014-01-28 | ||||
| ================== | ||||
|  | ||||
|  * [incorrect] fix for timing attacks | ||||
|  | ||||
| 1.0.2 / 2014-01-28 | ||||
| ================== | ||||
|  | ||||
|  * fix missing repository warning | ||||
|  * fix typo in test | ||||
|  | ||||
| 1.0.1 / 2013-04-15 | ||||
| ================== | ||||
|  | ||||
|   * Revert "Changed underlying HMAC algo. to sha512." | ||||
|   * Revert "Fix for timing attacks on MAC verification." | ||||
|  | ||||
| 0.0.1 / 2010-01-03 | ||||
| ================== | ||||
|  | ||||
|   * Initial release | ||||
							
								
								
									
										42
									
								
								17/node_modules/cookie-signature/Readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								17/node_modules/cookie-signature/Readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
|  | ||||
| # cookie-signature | ||||
|  | ||||
|   Sign and unsign cookies. | ||||
|  | ||||
| ## Example | ||||
|  | ||||
| ```js | ||||
| var cookie = require('cookie-signature'); | ||||
|  | ||||
| var val = cookie.sign('hello', 'tobiiscool'); | ||||
| val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); | ||||
|  | ||||
| var val = cookie.sign('hello', 'tobiiscool'); | ||||
| cookie.unsign(val, 'tobiiscool').should.equal('hello'); | ||||
| cookie.unsign(val, 'luna').should.be.false; | ||||
| ``` | ||||
|  | ||||
| ## License  | ||||
|  | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2012 LearnBoost <tj@learnboost.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. | ||||
							
								
								
									
										51
									
								
								17/node_modules/cookie-signature/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								17/node_modules/cookie-signature/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  */ | ||||
|  | ||||
| var crypto = require('crypto'); | ||||
|  | ||||
| /** | ||||
|  * Sign the given `val` with `secret`. | ||||
|  * | ||||
|  * @param {String} val | ||||
|  * @param {String} secret | ||||
|  * @return {String} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| exports.sign = function(val, secret){ | ||||
|   if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string."); | ||||
|   if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); | ||||
|   return val + '.' + crypto | ||||
|     .createHmac('sha256', secret) | ||||
|     .update(val) | ||||
|     .digest('base64') | ||||
|     .replace(/\=+$/, ''); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Unsign and decode the given `val` with `secret`, | ||||
|  * returning `false` if the signature is invalid. | ||||
|  * | ||||
|  * @param {String} val | ||||
|  * @param {String} secret | ||||
|  * @return {String|Boolean} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| exports.unsign = function(val, secret){ | ||||
|   if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided."); | ||||
|   if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); | ||||
|   var str = val.slice(0, val.lastIndexOf('.')) | ||||
|     , mac = exports.sign(str, secret); | ||||
|    | ||||
|   return sha1(mac) == sha1(val) ? str : false; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Private | ||||
|  */ | ||||
|  | ||||
| function sha1(str){ | ||||
|   return crypto.createHash('sha1').update(str).digest('hex'); | ||||
| } | ||||
							
								
								
									
										18
									
								
								17/node_modules/cookie-signature/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								17/node_modules/cookie-signature/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| { | ||||
|   "name": "cookie-signature", | ||||
|   "version": "1.0.6", | ||||
|   "description": "Sign and unsign cookies", | ||||
|   "keywords": ["cookie", "sign", "unsign"], | ||||
|   "author": "TJ Holowaychuk <tj@learnboost.com>", | ||||
|   "license": "MIT", | ||||
|   "repository": { "type": "git", "url": "https://github.com/visionmedia/node-cookie-signature.git"}, | ||||
|   "dependencies": {}, | ||||
|   "devDependencies": { | ||||
|     "mocha": "*", | ||||
|     "should": "*" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "test": "mocha --require should --reporter spec" | ||||
|   }, | ||||
|   "main": "index" | ||||
| } | ||||
							
								
								
									
										142
									
								
								17/node_modules/cookie/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								17/node_modules/cookie/HISTORY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,142 @@ | ||||
| 0.5.0 / 2022-04-11 | ||||
| ================== | ||||
|  | ||||
|   * Add `priority` option | ||||
|   * Fix `expires` option to reject invalid dates | ||||
|   * pref: improve default decode speed | ||||
|   * pref: remove slow string split in parse | ||||
|  | ||||
| 0.4.2 / 2022-02-02 | ||||
| ================== | ||||
|  | ||||
|   * pref: read value only when assigning in parse | ||||
|   * pref: remove unnecessary regexp in parse | ||||
|  | ||||
| 0.4.1 / 2020-04-21 | ||||
| ================== | ||||
|  | ||||
|   * Fix `maxAge` option to reject invalid values | ||||
|  | ||||
| 0.4.0 / 2019-05-15 | ||||
| ================== | ||||
|  | ||||
|   * Add `SameSite=None` support | ||||
|  | ||||
| 0.3.1 / 2016-05-26 | ||||
| ================== | ||||
|  | ||||
|   * Fix `sameSite: true` to work with draft-7 clients | ||||
|     - `true` now sends `SameSite=Strict` instead of `SameSite` | ||||
|  | ||||
| 0.3.0 / 2016-05-26 | ||||
| ================== | ||||
|  | ||||
|   * Add `sameSite` option | ||||
|     - Replaces `firstPartyOnly` option, never implemented by browsers | ||||
|   * Improve error message when `encode` is not a function | ||||
|   * Improve error message when `expires` is not a `Date` | ||||
|  | ||||
| 0.2.4 / 2016-05-20 | ||||
| ================== | ||||
|  | ||||
|   * perf: enable strict mode | ||||
|   * perf: use for loop in parse | ||||
|   * perf: use string concatination for serialization | ||||
|  | ||||
| 0.2.3 / 2015-10-25 | ||||
| ================== | ||||
|  | ||||
|   * Fix cookie `Max-Age` to never be a floating point number | ||||
|  | ||||
| 0.2.2 / 2015-09-17 | ||||
| ================== | ||||
|  | ||||
|   * Fix regression when setting empty cookie value | ||||
|     - Ease the new restriction, which is just basic header-level validation | ||||
|   * Fix typo in invalid value errors | ||||
|  | ||||
| 0.2.1 / 2015-09-17 | ||||
| ================== | ||||
|  | ||||
|   * Throw on invalid values provided to `serialize` | ||||
|     - Ensures the resulting string is a valid HTTP header value | ||||
|  | ||||
| 0.2.0 / 2015-08-13 | ||||
| ================== | ||||
|  | ||||
|   * Add `firstPartyOnly` option | ||||
|   * Throw better error for invalid argument to parse | ||||
|   * perf: hoist regular expression | ||||
|  | ||||
| 0.1.5 / 2015-09-17 | ||||
| ================== | ||||
|  | ||||
|   * Fix regression when setting empty cookie value | ||||
|     - Ease the new restriction, which is just basic header-level validation | ||||
|   * Fix typo in invalid value errors | ||||
|  | ||||
| 0.1.4 / 2015-09-17 | ||||
| ================== | ||||
|  | ||||
|   * Throw better error for invalid argument to parse | ||||
|   * Throw on invalid values provided to `serialize` | ||||
|     - Ensures the resulting string is a valid HTTP header value | ||||
|  | ||||
| 0.1.3 / 2015-05-19 | ||||
| ================== | ||||
|  | ||||
|   * Reduce the scope of try-catch deopt | ||||
|   * Remove argument reassignments | ||||
|  | ||||
| 0.1.2 / 2014-04-16 | ||||
| ================== | ||||
|  | ||||
|   * Remove unnecessary files from npm package | ||||
|  | ||||
| 0.1.1 / 2014-02-23 | ||||
| ================== | ||||
|  | ||||
|   * Fix bad parse when cookie value contained a comma | ||||
|   * Fix support for `maxAge` of `0` | ||||
|  | ||||
| 0.1.0 / 2013-05-01 | ||||
| ================== | ||||
|  | ||||
|   * Add `decode` option | ||||
|   * Add `encode` option | ||||
|  | ||||
| 0.0.6 / 2013-04-08 | ||||
| ================== | ||||
|  | ||||
|   * Ignore cookie parts missing `=` | ||||
|  | ||||
| 0.0.5 / 2012-10-29 | ||||
| ================== | ||||
|  | ||||
|   * Return raw cookie value if value unescape errors | ||||
|  | ||||
| 0.0.4 / 2012-06-21 | ||||
| ================== | ||||
|  | ||||
|   * Use encode/decodeURIComponent for cookie encoding/decoding | ||||
|     - Improve server/client interoperability | ||||
|  | ||||
| 0.0.3 / 2012-06-06 | ||||
| ================== | ||||
|  | ||||
|   * Only escape special characters per the cookie RFC | ||||
|  | ||||
| 0.0.2 / 2012-06-01 | ||||
| ================== | ||||
|  | ||||
|   * Fix `maxAge` option to not throw error | ||||
|  | ||||
| 0.0.1 / 2012-05-28 | ||||
| ================== | ||||
|  | ||||
|   * Add more tests | ||||
|  | ||||
| 0.0.0 / 2012-05-28 | ||||
| ================== | ||||
|  | ||||
|   * Initial release | ||||
							
								
								
									
										24
									
								
								17/node_modules/cookie/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								17/node_modules/cookie/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com> | ||||
| Copyright (c) 2015 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. | ||||
|  | ||||
							
								
								
									
										302
									
								
								17/node_modules/cookie/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										302
									
								
								17/node_modules/cookie/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,302 @@ | ||||
| # cookie | ||||
|  | ||||
| [![NPM Version][npm-version-image]][npm-url] | ||||
| [![NPM Downloads][npm-downloads-image]][npm-url] | ||||
| [![Node.js Version][node-version-image]][node-version-url] | ||||
| [![Build Status][github-actions-ci-image]][github-actions-ci-url] | ||||
| [![Test Coverage][coveralls-image]][coveralls-url] | ||||
|  | ||||
| Basic HTTP cookie parser and serializer for HTTP servers. | ||||
|  | ||||
| ## 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 cookie | ||||
| ``` | ||||
|  | ||||
| ## API | ||||
|  | ||||
| ```js | ||||
| var cookie = require('cookie'); | ||||
| ``` | ||||
|  | ||||
| ### cookie.parse(str, options) | ||||
|  | ||||
| Parse an HTTP `Cookie` header string and returning an object of all cookie name-value pairs. | ||||
| The `str` argument is the string representing a `Cookie` header value and `options` is an | ||||
| optional object containing additional parsing options. | ||||
|  | ||||
| ```js | ||||
| var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2'); | ||||
| // { foo: 'bar', equation: 'E=mc^2' } | ||||
| ``` | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| `cookie.parse` accepts these properties in the options object. | ||||
|  | ||||
| ##### decode | ||||
|  | ||||
| Specifies a function that will be used to decode a cookie's value. Since the value of a cookie | ||||
| has a limited character set (and must be a simple string), this function can be used to decode | ||||
| a previously-encoded cookie value into a JavaScript string or other object. | ||||
|  | ||||
| The default function is the global `decodeURIComponent`, which will decode any URL-encoded | ||||
| sequences into their byte representations. | ||||
|  | ||||
| **note** if an error is thrown from this function, the original, non-decoded cookie value will | ||||
| be returned as the cookie's value. | ||||
|  | ||||
| ### cookie.serialize(name, value, options) | ||||
|  | ||||
| Serialize a cookie name-value pair into a `Set-Cookie` header string. The `name` argument is the | ||||
| name for the cookie, the `value` argument is the value to set the cookie to, and the `options` | ||||
| argument is an optional object containing additional serialization options. | ||||
|  | ||||
| ```js | ||||
| var setCookie = cookie.serialize('foo', 'bar'); | ||||
| // foo=bar | ||||
| ``` | ||||
|  | ||||
| #### Options | ||||
|  | ||||
| `cookie.serialize` accepts these properties in the options object. | ||||
|  | ||||
| ##### domain | ||||
|  | ||||
| Specifies the value for the [`Domain` `Set-Cookie` attribute][rfc-6265-5.2.3]. By default, no | ||||
| domain is set, and most clients will consider the cookie to apply to only the current domain. | ||||
|  | ||||
| ##### encode | ||||
|  | ||||
| Specifies a function that will be used to encode a cookie's value. Since value of a cookie | ||||
| has a limited character set (and must be a simple string), this function can be used to encode | ||||
| a value into a string suited for a cookie's value. | ||||
|  | ||||
| The default function is the global `encodeURIComponent`, which will encode a JavaScript string | ||||
| into UTF-8 byte sequences and then URL-encode any that fall outside of the cookie range. | ||||
|  | ||||
| ##### expires | ||||
|  | ||||
| Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute][rfc-6265-5.2.1]. | ||||
| By default, no expiration is set, and most clients will consider this a "non-persistent cookie" and | ||||
| will delete it on a condition like exiting a web browser application. | ||||
|  | ||||
| **note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and | ||||
| `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this, | ||||
| so if both are set, they should point to the same date and time. | ||||
|  | ||||
| ##### httpOnly | ||||
|  | ||||
| Specifies the `boolean` value for the [`HttpOnly` `Set-Cookie` attribute][rfc-6265-5.2.6]. When truthy, | ||||
| the `HttpOnly` attribute is set, otherwise it is not. By default, the `HttpOnly` attribute is not set. | ||||
|  | ||||
| **note** be careful when setting this to `true`, as compliant clients will not allow client-side | ||||
| JavaScript to see the cookie in `document.cookie`. | ||||
|  | ||||
| ##### maxAge | ||||
|  | ||||
| Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute][rfc-6265-5.2.2]. | ||||
| The given number will be converted to an integer by rounding down. By default, no maximum age is set. | ||||
|  | ||||
| **note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and | ||||
| `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this, | ||||
| so if both are set, they should point to the same date and time. | ||||
|  | ||||
| ##### path | ||||
|  | ||||
| Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6265-5.2.4]. By default, the path | ||||
| is considered the ["default path"][rfc-6265-5.1.4]. | ||||
|  | ||||
| ##### priority | ||||
|  | ||||
| Specifies the `string` to be the value for the [`Priority` `Set-Cookie` attribute][rfc-west-cookie-priority-00-4.1]. | ||||
|  | ||||
|   - `'low'` will set the `Priority` attribute to `Low`. | ||||
|   - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set. | ||||
|   - `'high'` will set the `Priority` attribute to `High`. | ||||
|  | ||||
| More information about the different priority levels can be found in | ||||
| [the specification][rfc-west-cookie-priority-00-4.1]. | ||||
|  | ||||
| **note** This is an attribute that has not yet been fully standardized, and may change in the future. | ||||
| This also means many clients may ignore this attribute until they understand it. | ||||
|  | ||||
| ##### sameSite | ||||
|  | ||||
| Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Cookie` attribute][rfc-6265bis-09-5.4.7]. | ||||
|  | ||||
|   - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement. | ||||
|   - `false` will not set the `SameSite` attribute. | ||||
|   - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement. | ||||
|   - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie. | ||||
|   - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement. | ||||
|  | ||||
| More information about the different enforcement levels can be found in | ||||
| [the specification][rfc-6265bis-09-5.4.7]. | ||||
|  | ||||
| **note** This is an attribute that has not yet been fully standardized, and may change in the future. | ||||
| This also means many clients may ignore this attribute until they understand it. | ||||
|  | ||||
| ##### secure | ||||
|  | ||||
| Specifies the `boolean` value for the [`Secure` `Set-Cookie` attribute][rfc-6265-5.2.5]. When truthy, | ||||
| the `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set. | ||||
|  | ||||
| **note** be careful when setting this to `true`, as compliant clients will not send the cookie back to | ||||
| the server in the future if the browser does not have an HTTPS connection. | ||||
|  | ||||
| ## Example | ||||
|  | ||||
| The following example uses this module in conjunction with the Node.js core HTTP server | ||||
| to prompt a user for their name and display it back on future visits. | ||||
|  | ||||
| ```js | ||||
| var cookie = require('cookie'); | ||||
| var escapeHtml = require('escape-html'); | ||||
| var http = require('http'); | ||||
| var url = require('url'); | ||||
|  | ||||
| function onRequest(req, res) { | ||||
|   // Parse the query string | ||||
|   var query = url.parse(req.url, true, true).query; | ||||
|  | ||||
|   if (query && query.name) { | ||||
|     // Set a new cookie with the name | ||||
|     res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), { | ||||
|       httpOnly: true, | ||||
|       maxAge: 60 * 60 * 24 * 7 // 1 week | ||||
|     })); | ||||
|  | ||||
|     // Redirect back after setting cookie | ||||
|     res.statusCode = 302; | ||||
|     res.setHeader('Location', req.headers.referer || '/'); | ||||
|     res.end(); | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   // Parse the cookies on the request | ||||
|   var cookies = cookie.parse(req.headers.cookie || ''); | ||||
|  | ||||
|   // Get the visitor name set in the cookie | ||||
|   var name = cookies.name; | ||||
|  | ||||
|   res.setHeader('Content-Type', 'text/html; charset=UTF-8'); | ||||
|  | ||||
|   if (name) { | ||||
|     res.write('<p>Welcome back, <b>' + escapeHtml(name) + '</b>!</p>'); | ||||
|   } else { | ||||
|     res.write('<p>Hello, new visitor!</p>'); | ||||
|   } | ||||
|  | ||||
|   res.write('<form method="GET">'); | ||||
|   res.write('<input placeholder="enter your name" name="name"> <input type="submit" value="Set Name">'); | ||||
|   res.end('</form>'); | ||||
| } | ||||
|  | ||||
| http.createServer(onRequest).listen(3000); | ||||
| ``` | ||||
|  | ||||
| ## Testing | ||||
|  | ||||
| ```sh | ||||
| $ npm test | ||||
| ``` | ||||
|  | ||||
| ## Benchmark | ||||
|  | ||||
| ``` | ||||
| $ npm run bench | ||||
|  | ||||
| > cookie@0.4.2 bench | ||||
| > node benchmark/index.js | ||||
|  | ||||
|   node@16.14.0 | ||||
|   v8@9.4.146.24-node.20 | ||||
|   uv@1.43.0 | ||||
|   zlib@1.2.11 | ||||
|   brotli@1.0.9 | ||||
|   ares@1.18.1 | ||||
|   modules@93 | ||||
|   nghttp2@1.45.1 | ||||
|   napi@8 | ||||
|   llhttp@6.0.4 | ||||
|   openssl@1.1.1m+quic | ||||
|   cldr@40.0 | ||||
|   icu@70.1 | ||||
|   tz@2021a3 | ||||
|   unicode@14.0 | ||||
|   ngtcp2@0.1.0-DEV | ||||
|   nghttp3@0.1.0-DEV | ||||
|  | ||||
| > node benchmark/parse-top.js | ||||
|  | ||||
|   cookie.parse - top sites | ||||
|  | ||||
|   15 tests completed. | ||||
|  | ||||
|   parse accounts.google.com x 2,421,245 ops/sec ±0.80% (188 runs sampled) | ||||
|   parse apple.com           x 2,684,710 ops/sec ±0.59% (189 runs sampled) | ||||
|   parse cloudflare.com      x 2,231,418 ops/sec ±0.76% (186 runs sampled) | ||||
|   parse docs.google.com     x 2,316,357 ops/sec ±1.28% (187 runs sampled) | ||||
|   parse drive.google.com    x 2,363,543 ops/sec ±0.49% (189 runs sampled) | ||||
|   parse en.wikipedia.org    x   839,414 ops/sec ±0.53% (189 runs sampled) | ||||
|   parse linkedin.com        x   553,797 ops/sec ±0.63% (190 runs sampled) | ||||
|   parse maps.google.com     x 1,314,779 ops/sec ±0.72% (189 runs sampled) | ||||
|   parse microsoft.com       x   153,783 ops/sec ±0.53% (190 runs sampled) | ||||
|   parse play.google.com     x 2,249,574 ops/sec ±0.59% (187 runs sampled) | ||||
|   parse plus.google.com     x 2,258,682 ops/sec ±0.60% (188 runs sampled) | ||||
|   parse sites.google.com    x 2,247,069 ops/sec ±0.68% (189 runs sampled) | ||||
|   parse support.google.com  x 1,456,840 ops/sec ±0.70% (187 runs sampled) | ||||
|   parse www.google.com      x 1,046,028 ops/sec ±0.58% (188 runs sampled) | ||||
|   parse youtu.be            x   937,428 ops/sec ±1.47% (190 runs sampled) | ||||
|   parse youtube.com         x   963,878 ops/sec ±0.59% (190 runs sampled) | ||||
|  | ||||
| > node benchmark/parse.js | ||||
|  | ||||
|   cookie.parse - generic | ||||
|  | ||||
|   6 tests completed. | ||||
|  | ||||
|   simple      x 2,745,604 ops/sec ±0.77% (185 runs sampled) | ||||
|   decode      x   557,287 ops/sec ±0.60% (188 runs sampled) | ||||
|   unquote     x 2,498,475 ops/sec ±0.55% (189 runs sampled) | ||||
|   duplicates  x   868,591 ops/sec ±0.89% (187 runs sampled) | ||||
|   10 cookies  x   306,745 ops/sec ±0.49% (190 runs sampled) | ||||
|   100 cookies x    22,414 ops/sec ±2.38% (182 runs sampled) | ||||
| ``` | ||||
|  | ||||
| ## References | ||||
|  | ||||
| - [RFC 6265: HTTP State Management Mechanism][rfc-6265] | ||||
| - [Same-site Cookies][rfc-6265bis-09-5.4.7] | ||||
|  | ||||
| [rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1 | ||||
| [rfc-6265bis-09-5.4.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7 | ||||
| [rfc-6265]: https://tools.ietf.org/html/rfc6265 | ||||
| [rfc-6265-5.1.4]: https://tools.ietf.org/html/rfc6265#section-5.1.4 | ||||
| [rfc-6265-5.2.1]: https://tools.ietf.org/html/rfc6265#section-5.2.1 | ||||
| [rfc-6265-5.2.2]: https://tools.ietf.org/html/rfc6265#section-5.2.2 | ||||
| [rfc-6265-5.2.3]: https://tools.ietf.org/html/rfc6265#section-5.2.3 | ||||
| [rfc-6265-5.2.4]: https://tools.ietf.org/html/rfc6265#section-5.2.4 | ||||
| [rfc-6265-5.2.5]: https://tools.ietf.org/html/rfc6265#section-5.2.5 | ||||
| [rfc-6265-5.2.6]: https://tools.ietf.org/html/rfc6265#section-5.2.6 | ||||
| [rfc-6265-5.3]: https://tools.ietf.org/html/rfc6265#section-5.3 | ||||
|  | ||||
| ## License | ||||
|  | ||||
| [MIT](LICENSE) | ||||
|  | ||||
| [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master | ||||
| [coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master | ||||
| [github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/cookie/ci/master?label=ci | ||||
| [github-actions-ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml | ||||
| [node-version-image]: https://badgen.net/npm/node/cookie | ||||
| [node-version-url]: https://nodejs.org/en/download | ||||
| [npm-downloads-image]: https://badgen.net/npm/dm/cookie | ||||
| [npm-url]: https://npmjs.org/package/cookie | ||||
| [npm-version-image]: https://badgen.net/npm/v/cookie | ||||
							
								
								
									
										25
									
								
								17/node_modules/cookie/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								17/node_modules/cookie/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| # Security Policies and Procedures | ||||
|  | ||||
| ## Reporting a Bug | ||||
|  | ||||
| The `cookie` team and community take all security bugs seriously. Thank | ||||
| you for improving the security of the project. 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 `cookie`. This | ||||
| information can be found in the npm registry using the command | ||||
| `npm owner ls cookie`. | ||||
| If unsure or unable to get the information from the above, open an issue | ||||
| in the [project issue tracker](https://github.com/jshttp/cookie/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. | ||||
							
								
								
									
										270
									
								
								17/node_modules/cookie/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										270
									
								
								17/node_modules/cookie/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,270 @@ | ||||
| /*! | ||||
|  * cookie | ||||
|  * Copyright(c) 2012-2014 Roman Shtylman | ||||
|  * Copyright(c) 2015 Douglas Christopher Wilson | ||||
|  * MIT Licensed | ||||
|  */ | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| /** | ||||
|  * Module exports. | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| exports.parse = parse; | ||||
| exports.serialize = serialize; | ||||
|  | ||||
| /** | ||||
|  * Module variables. | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| var __toString = Object.prototype.toString | ||||
|  | ||||
| /** | ||||
|  * RegExp to match field-content in RFC 7230 sec 3.2 | ||||
|  * | ||||
|  * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] | ||||
|  * field-vchar   = VCHAR / obs-text | ||||
|  * obs-text      = %x80-FF | ||||
|  */ | ||||
|  | ||||
| var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; | ||||
|  | ||||
| /** | ||||
|  * Parse a cookie header. | ||||
|  * | ||||
|  * Parse the given cookie header string into an object | ||||
|  * The object has the various cookies as keys(names) => values | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @param {object} [options] | ||||
|  * @return {object} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function parse(str, options) { | ||||
|   if (typeof str !== 'string') { | ||||
|     throw new TypeError('argument str must be a string'); | ||||
|   } | ||||
|  | ||||
|   var obj = {} | ||||
|   var opt = options || {}; | ||||
|   var dec = opt.decode || decode; | ||||
|  | ||||
|   var index = 0 | ||||
|   while (index < str.length) { | ||||
|     var eqIdx = str.indexOf('=', index) | ||||
|  | ||||
|     // no more cookie pairs | ||||
|     if (eqIdx === -1) { | ||||
|       break | ||||
|     } | ||||
|  | ||||
|     var endIdx = str.indexOf(';', index) | ||||
|  | ||||
|     if (endIdx === -1) { | ||||
|       endIdx = str.length | ||||
|     } else if (endIdx < eqIdx) { | ||||
|       // backtrack on prior semicolon | ||||
|       index = str.lastIndexOf(';', eqIdx - 1) + 1 | ||||
|       continue | ||||
|     } | ||||
|  | ||||
|     var key = str.slice(index, eqIdx).trim() | ||||
|  | ||||
|     // only assign once | ||||
|     if (undefined === obj[key]) { | ||||
|       var val = str.slice(eqIdx + 1, endIdx).trim() | ||||
|  | ||||
|       // quoted values | ||||
|       if (val.charCodeAt(0) === 0x22) { | ||||
|         val = val.slice(1, -1) | ||||
|       } | ||||
|  | ||||
|       obj[key] = tryDecode(val, dec); | ||||
|     } | ||||
|  | ||||
|     index = endIdx + 1 | ||||
|   } | ||||
|  | ||||
|   return obj; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Serialize data into a cookie header. | ||||
|  * | ||||
|  * Serialize the a name value pair into a cookie string suitable for | ||||
|  * http headers. An optional options object specified cookie parameters. | ||||
|  * | ||||
|  * serialize('foo', 'bar', { httpOnly: true }) | ||||
|  *   => "foo=bar; httpOnly" | ||||
|  * | ||||
|  * @param {string} name | ||||
|  * @param {string} val | ||||
|  * @param {object} [options] | ||||
|  * @return {string} | ||||
|  * @public | ||||
|  */ | ||||
|  | ||||
| function serialize(name, val, options) { | ||||
|   var opt = options || {}; | ||||
|   var enc = opt.encode || encode; | ||||
|  | ||||
|   if (typeof enc !== 'function') { | ||||
|     throw new TypeError('option encode is invalid'); | ||||
|   } | ||||
|  | ||||
|   if (!fieldContentRegExp.test(name)) { | ||||
|     throw new TypeError('argument name is invalid'); | ||||
|   } | ||||
|  | ||||
|   var value = enc(val); | ||||
|  | ||||
|   if (value && !fieldContentRegExp.test(value)) { | ||||
|     throw new TypeError('argument val is invalid'); | ||||
|   } | ||||
|  | ||||
|   var str = name + '=' + value; | ||||
|  | ||||
|   if (null != opt.maxAge) { | ||||
|     var maxAge = opt.maxAge - 0; | ||||
|  | ||||
|     if (isNaN(maxAge) || !isFinite(maxAge)) { | ||||
|       throw new TypeError('option maxAge is invalid') | ||||
|     } | ||||
|  | ||||
|     str += '; Max-Age=' + Math.floor(maxAge); | ||||
|   } | ||||
|  | ||||
|   if (opt.domain) { | ||||
|     if (!fieldContentRegExp.test(opt.domain)) { | ||||
|       throw new TypeError('option domain is invalid'); | ||||
|     } | ||||
|  | ||||
|     str += '; Domain=' + opt.domain; | ||||
|   } | ||||
|  | ||||
|   if (opt.path) { | ||||
|     if (!fieldContentRegExp.test(opt.path)) { | ||||
|       throw new TypeError('option path is invalid'); | ||||
|     } | ||||
|  | ||||
|     str += '; Path=' + opt.path; | ||||
|   } | ||||
|  | ||||
|   if (opt.expires) { | ||||
|     var expires = opt.expires | ||||
|  | ||||
|     if (!isDate(expires) || isNaN(expires.valueOf())) { | ||||
|       throw new TypeError('option expires is invalid'); | ||||
|     } | ||||
|  | ||||
|     str += '; Expires=' + expires.toUTCString() | ||||
|   } | ||||
|  | ||||
|   if (opt.httpOnly) { | ||||
|     str += '; HttpOnly'; | ||||
|   } | ||||
|  | ||||
|   if (opt.secure) { | ||||
|     str += '; Secure'; | ||||
|   } | ||||
|  | ||||
|   if (opt.priority) { | ||||
|     var priority = typeof opt.priority === 'string' | ||||
|       ? opt.priority.toLowerCase() | ||||
|       : opt.priority | ||||
|  | ||||
|     switch (priority) { | ||||
|       case 'low': | ||||
|         str += '; Priority=Low' | ||||
|         break | ||||
|       case 'medium': | ||||
|         str += '; Priority=Medium' | ||||
|         break | ||||
|       case 'high': | ||||
|         str += '; Priority=High' | ||||
|         break | ||||
|       default: | ||||
|         throw new TypeError('option priority is invalid') | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (opt.sameSite) { | ||||
|     var sameSite = typeof opt.sameSite === 'string' | ||||
|       ? opt.sameSite.toLowerCase() : opt.sameSite; | ||||
|  | ||||
|     switch (sameSite) { | ||||
|       case true: | ||||
|         str += '; SameSite=Strict'; | ||||
|         break; | ||||
|       case 'lax': | ||||
|         str += '; SameSite=Lax'; | ||||
|         break; | ||||
|       case 'strict': | ||||
|         str += '; SameSite=Strict'; | ||||
|         break; | ||||
|       case 'none': | ||||
|         str += '; SameSite=None'; | ||||
|         break; | ||||
|       default: | ||||
|         throw new TypeError('option sameSite is invalid'); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return str; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * URL-decode string value. Optimized to skip native call when no %. | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @returns {string} | ||||
|  */ | ||||
|  | ||||
| function decode (str) { | ||||
|   return str.indexOf('%') !== -1 | ||||
|     ? decodeURIComponent(str) | ||||
|     : str | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * URL-encode value. | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @returns {string} | ||||
|  */ | ||||
|  | ||||
| function encode (val) { | ||||
|   return encodeURIComponent(val) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Determine if value is a Date. | ||||
|  * | ||||
|  * @param {*} val | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function isDate (val) { | ||||
|   return __toString.call(val) === '[object Date]' || | ||||
|     val instanceof Date | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Try decoding a string using a decoding function. | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @param {function} decode | ||||
|  * @private | ||||
|  */ | ||||
|  | ||||
| function tryDecode(str, decode) { | ||||
|   try { | ||||
|     return decode(str); | ||||
|   } catch (e) { | ||||
|     return str; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										44
									
								
								17/node_modules/cookie/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								17/node_modules/cookie/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| { | ||||
|   "name": "cookie", | ||||
|   "description": "HTTP server cookie parsing and serialization", | ||||
|   "version": "0.5.0", | ||||
|   "author": "Roman Shtylman <shtylman@gmail.com>", | ||||
|   "contributors": [ | ||||
|     "Douglas Christopher Wilson <doug@somethingdoug.com>" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "keywords": [ | ||||
|     "cookie", | ||||
|     "cookies" | ||||
|   ], | ||||
|   "repository": "jshttp/cookie", | ||||
|   "devDependencies": { | ||||
|     "beautify-benchmark": "0.2.4", | ||||
|     "benchmark": "2.1.4", | ||||
|     "eslint": "7.32.0", | ||||
|     "eslint-plugin-markdown": "2.2.1", | ||||
|     "mocha": "9.2.2", | ||||
|     "nyc": "15.1.0", | ||||
|     "safe-buffer": "5.2.1", | ||||
|     "top-sites": "1.1.97" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "HISTORY.md", | ||||
|     "LICENSE", | ||||
|     "README.md", | ||||
|     "SECURITY.md", | ||||
|     "index.js" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 0.6" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "bench": "node benchmark/index.js", | ||||
|     "lint": "eslint .", | ||||
|     "test": "mocha --reporter spec --bail --check-leaks test/", | ||||
|     "test-ci": "nyc --reporter=lcov --reporter=text npm test", | ||||
|     "test-cov": "nyc --reporter=html --reporter=text npm test", | ||||
|     "update-bench": "node scripts/update-benchmark.js", | ||||
|     "version": "node scripts/version-history.js && git add HISTORY.md" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										1
									
								
								17/node_modules/debug/.coveralls.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								17/node_modules/debug/.coveralls.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve | ||||
							
								
								
									
										11
									
								
								17/node_modules/debug/.eslintrc
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								17/node_modules/debug/.eslintrc
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| { | ||||
|   "env": { | ||||
|     "browser": true, | ||||
|     "node": true | ||||
|   }, | ||||
|   "rules": { | ||||
|     "no-console": 0, | ||||
|     "no-empty": [1, { "allowEmptyCatch": true }] | ||||
|   }, | ||||
|   "extends": "eslint:recommended" | ||||
| } | ||||
							
								
								
									
										9
									
								
								17/node_modules/debug/.npmignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								17/node_modules/debug/.npmignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| support | ||||
| test | ||||
| examples | ||||
| example | ||||
| *.sock | ||||
| dist | ||||
| yarn.lock | ||||
| coverage | ||||
| bower.json | ||||
							
								
								
									
										14
									
								
								17/node_modules/debug/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								17/node_modules/debug/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
|  | ||||
| language: node_js | ||||
| node_js: | ||||
|   - "6" | ||||
|   - "5" | ||||
|   - "4" | ||||
|  | ||||
| install: | ||||
|   - make node_modules | ||||
|  | ||||
| script: | ||||
|   - make lint | ||||
|   - make test | ||||
|   - make coveralls | ||||
							
								
								
									
										362
									
								
								17/node_modules/debug/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										362
									
								
								17/node_modules/debug/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,362 @@ | ||||
|  | ||||
| 2.6.9 / 2017-09-22 | ||||
| ================== | ||||
|  | ||||
|   * remove ReDoS regexp in %o formatter (#504) | ||||
|  | ||||
| 2.6.8 / 2017-05-18 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Check for undefined on browser globals (#462, @marbemac) | ||||
|  | ||||
| 2.6.7 / 2017-05-16 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) | ||||
|   * Fix: Inline extend function in node implementation (#452, @dougwilson) | ||||
|   * Docs: Fix typo (#455, @msasad) | ||||
|  | ||||
| 2.6.5 / 2017-04-27 | ||||
| ================== | ||||
|    | ||||
|   * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) | ||||
|   * Misc: clean up browser reference checks (#447, @thebigredgeek) | ||||
|   * Misc: add npm-debug.log to .gitignore (@thebigredgeek) | ||||
|  | ||||
|  | ||||
| 2.6.4 / 2017-04-20 | ||||
| ================== | ||||
|  | ||||
|   * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) | ||||
|   * Chore: ignore bower.json in npm installations. (#437, @joaovieira) | ||||
|   * Misc: update "ms" to v0.7.3 (@tootallnate) | ||||
|  | ||||
| 2.6.3 / 2017-03-13 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) | ||||
|   * Docs: Changelog fix (@thebigredgeek) | ||||
|  | ||||
| 2.6.2 / 2017-03-10 | ||||
| ================== | ||||
|  | ||||
|   * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) | ||||
|   * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) | ||||
|   * Docs: Add Slackin invite badge (@tootallnate) | ||||
|  | ||||
| 2.6.1 / 2017-02-10 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error | ||||
|   * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) | ||||
|   * Fix: IE8 "Expected identifier" error (#414, @vgoma) | ||||
|   * Fix: Namespaces would not disable once enabled (#409, @musikov) | ||||
|  | ||||
| 2.6.0 / 2016-12-28 | ||||
| ================== | ||||
|  | ||||
|   * Fix: added better null pointer checks for browser useColors (@thebigredgeek) | ||||
|   * Improvement: removed explicit `window.debug` export (#404, @tootallnate) | ||||
|   * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) | ||||
|  | ||||
| 2.5.2 / 2016-12-25 | ||||
| ================== | ||||
|  | ||||
|   * Fix: reference error on window within webworkers (#393, @KlausTrainer) | ||||
|   * Docs: fixed README typo (#391, @lurch) | ||||
|   * Docs: added notice about v3 api discussion (@thebigredgeek) | ||||
|  | ||||
| 2.5.1 / 2016-12-20 | ||||
| ================== | ||||
|  | ||||
|   * Fix: babel-core compatibility | ||||
|  | ||||
| 2.5.0 / 2016-12-20 | ||||
| ================== | ||||
|  | ||||
|   * Fix: wrong reference in bower file (@thebigredgeek) | ||||
|   * Fix: webworker compatibility (@thebigredgeek) | ||||
|   * Fix: output formatting issue (#388, @kribblo) | ||||
|   * Fix: babel-loader compatibility (#383, @escwald) | ||||
|   * Misc: removed built asset from repo and publications (@thebigredgeek) | ||||
|   * Misc: moved source files to /src (#378, @yamikuronue) | ||||
|   * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) | ||||
|   * Test: coveralls integration (#378, @yamikuronue) | ||||
|   * Docs: simplified language in the opening paragraph (#373, @yamikuronue) | ||||
|  | ||||
| 2.4.5 / 2016-12-17 | ||||
| ================== | ||||
|  | ||||
|   * Fix: `navigator` undefined in Rhino (#376, @jochenberger) | ||||
|   * Fix: custom log function (#379, @hsiliev) | ||||
|   * Improvement: bit of cleanup + linting fixes (@thebigredgeek) | ||||
|   * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) | ||||
|   * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) | ||||
|  | ||||
| 2.4.4 / 2016-12-14 | ||||
| ================== | ||||
|  | ||||
|   * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) | ||||
|  | ||||
| 2.4.3 / 2016-12-14 | ||||
| ================== | ||||
|  | ||||
|   * Fix: navigation.userAgent error for react native (#364, @escwald) | ||||
|  | ||||
| 2.4.2 / 2016-12-14 | ||||
| ================== | ||||
|  | ||||
|   * Fix: browser colors (#367, @tootallnate) | ||||
|   * Misc: travis ci integration (@thebigredgeek) | ||||
|   * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) | ||||
|  | ||||
| 2.4.1 / 2016-12-13 | ||||
| ================== | ||||
|  | ||||
|   * Fix: typo that broke the package (#356) | ||||
|  | ||||
| 2.4.0 / 2016-12-13 | ||||
| ================== | ||||
|  | ||||
|   * Fix: bower.json references unbuilt src entry point (#342, @justmatt) | ||||
|   * Fix: revert "handle regex special characters" (@tootallnate) | ||||
|   * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) | ||||
|   * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) | ||||
|   * Improvement: allow colors in workers (#335, @botverse) | ||||
|   * Improvement: use same color for same namespace. (#338, @lchenay) | ||||
|  | ||||
| 2.3.3 / 2016-11-09 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) | ||||
|   * Fix: Returning `localStorage` saved values (#331, Levi Thomason) | ||||
|   * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) | ||||
|  | ||||
| 2.3.2 / 2016-11-09 | ||||
| ================== | ||||
|  | ||||
|   * Fix: be super-safe in index.js as well (@TooTallNate) | ||||
|   * Fix: should check whether process exists (Tom Newby) | ||||
|  | ||||
| 2.3.1 / 2016-11-09 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Added electron compatibility (#324, @paulcbetts) | ||||
|   * Improvement: Added performance optimizations (@tootallnate) | ||||
|   * Readme: Corrected PowerShell environment variable example (#252, @gimre) | ||||
|   * Misc: Removed yarn lock file from source control (#321, @fengmk2) | ||||
|  | ||||
| 2.3.0 / 2016-11-07 | ||||
| ================== | ||||
|  | ||||
|   * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) | ||||
|   * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) | ||||
|   * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) | ||||
|   * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) | ||||
|   * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) | ||||
|   * Package: Update "ms" to 0.7.2 (#315, @DevSide) | ||||
|   * Package: removed superfluous version property from bower.json (#207 @kkirsche) | ||||
|   * Readme: fix USE_COLORS to DEBUG_COLORS | ||||
|   * Readme: Doc fixes for format string sugar (#269, @mlucool) | ||||
|   * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) | ||||
|   * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) | ||||
|   * Readme: better docs for browser support (#224, @matthewmueller) | ||||
|   * Tooling: Added yarn integration for development (#317, @thebigredgeek) | ||||
|   * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) | ||||
|   * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) | ||||
|   * Misc: Updated contributors (@thebigredgeek) | ||||
|  | ||||
| 2.2.0 / 2015-05-09 | ||||
| ================== | ||||
|  | ||||
|   * package: update "ms" to v0.7.1 (#202, @dougwilson) | ||||
|   * README: add logging to file example (#193, @DanielOchoa) | ||||
|   * README: fixed a typo (#191, @amir-s) | ||||
|   * browser: expose `storage` (#190, @stephenmathieson) | ||||
|   * Makefile: add a `distclean` target (#189, @stephenmathieson) | ||||
|  | ||||
| 2.1.3 / 2015-03-13 | ||||
| ================== | ||||
|  | ||||
|   * Updated stdout/stderr example (#186) | ||||
|   * Updated example/stdout.js to match debug current behaviour | ||||
|   * Renamed example/stderr.js to stdout.js | ||||
|   * Update Readme.md (#184) | ||||
|   * replace high intensity foreground color for bold (#182, #183) | ||||
|  | ||||
| 2.1.2 / 2015-03-01 | ||||
| ================== | ||||
|  | ||||
|   * dist: recompile | ||||
|   * update "ms" to v0.7.0 | ||||
|   * package: update "browserify" to v9.0.3 | ||||
|   * component: fix "ms.js" repo location | ||||
|   * changed bower package name | ||||
|   * updated documentation about using debug in a browser | ||||
|   * fix: security error on safari (#167, #168, @yields) | ||||
|  | ||||
| 2.1.1 / 2014-12-29 | ||||
| ================== | ||||
|  | ||||
|   * browser: use `typeof` to check for `console` existence | ||||
|   * browser: check for `console.log` truthiness (fix IE 8/9) | ||||
|   * browser: add support for Chrome apps | ||||
|   * Readme: added Windows usage remarks | ||||
|   * Add `bower.json` to properly support bower install | ||||
|  | ||||
| 2.1.0 / 2014-10-15 | ||||
| ================== | ||||
|  | ||||
|   * node: implement `DEBUG_FD` env variable support | ||||
|   * package: update "browserify" to v6.1.0 | ||||
|   * package: add "license" field to package.json (#135, @panuhorsmalahti) | ||||
|  | ||||
| 2.0.0 / 2014-09-01 | ||||
| ================== | ||||
|  | ||||
|   * package: update "browserify" to v5.11.0 | ||||
|   * node: use stderr rather than stdout for logging (#29, @stephenmathieson) | ||||
|  | ||||
| 1.0.4 / 2014-07-15 | ||||
| ================== | ||||
|  | ||||
|   * dist: recompile | ||||
|   * example: remove `console.info()` log usage | ||||
|   * example: add "Content-Type" UTF-8 header to browser example | ||||
|   * browser: place %c marker after the space character | ||||
|   * browser: reset the "content" color via `color: inherit` | ||||
|   * browser: add colors support for Firefox >= v31 | ||||
|   * debug: prefer an instance `log()` function over the global one (#119) | ||||
|   * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) | ||||
|  | ||||
| 1.0.3 / 2014-07-09 | ||||
| ================== | ||||
|  | ||||
|   * Add support for multiple wildcards in namespaces (#122, @seegno) | ||||
|   * browser: fix lint | ||||
|  | ||||
| 1.0.2 / 2014-06-10 | ||||
| ================== | ||||
|  | ||||
|   * browser: update color palette (#113, @gscottolson) | ||||
|   * common: make console logging function configurable (#108, @timoxley) | ||||
|   * node: fix %o colors on old node <= 0.8.x | ||||
|   * Makefile: find node path using shell/which (#109, @timoxley) | ||||
|  | ||||
| 1.0.1 / 2014-06-06 | ||||
| ================== | ||||
|  | ||||
|   * browser: use `removeItem()` to clear localStorage | ||||
|   * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) | ||||
|   * package: add "contributors" section | ||||
|   * node: fix comment typo | ||||
|   * README: list authors | ||||
|  | ||||
| 1.0.0 / 2014-06-04 | ||||
| ================== | ||||
|  | ||||
|   * make ms diff be global, not be scope | ||||
|   * debug: ignore empty strings in enable() | ||||
|   * node: make DEBUG_COLORS able to disable coloring | ||||
|   * *: export the `colors` array | ||||
|   * npmignore: don't publish the `dist` dir | ||||
|   * Makefile: refactor to use browserify | ||||
|   * package: add "browserify" as a dev dependency | ||||
|   * Readme: add Web Inspector Colors section | ||||
|   * node: reset terminal color for the debug content | ||||
|   * node: map "%o" to `util.inspect()` | ||||
|   * browser: map "%j" to `JSON.stringify()` | ||||
|   * debug: add custom "formatters" | ||||
|   * debug: use "ms" module for humanizing the diff | ||||
|   * Readme: add "bash" syntax highlighting | ||||
|   * browser: add Firebug color support | ||||
|   * browser: add colors for WebKit browsers | ||||
|   * node: apply log to `console` | ||||
|   * rewrite: abstract common logic for Node & browsers | ||||
|   * add .jshintrc file | ||||
|  | ||||
| 0.8.1 / 2014-04-14 | ||||
| ================== | ||||
|  | ||||
|   * package: re-add the "component" section | ||||
|  | ||||
| 0.8.0 / 2014-03-30 | ||||
| ================== | ||||
|  | ||||
|   * add `enable()` method for nodejs. Closes #27 | ||||
|   * change from stderr to stdout | ||||
|   * remove unnecessary index.js file | ||||
|  | ||||
| 0.7.4 / 2013-11-13 | ||||
| ================== | ||||
|  | ||||
|   * remove "browserify" key from package.json (fixes something in browserify) | ||||
|  | ||||
| 0.7.3 / 2013-10-30 | ||||
| ================== | ||||
|  | ||||
|   * fix: catch localStorage security error when cookies are blocked (Chrome) | ||||
|   * add debug(err) support. Closes #46 | ||||
|   * add .browser prop to package.json. Closes #42 | ||||
|  | ||||
| 0.7.2 / 2013-02-06 | ||||
| ================== | ||||
|  | ||||
|   * fix package.json | ||||
|   * fix: Mobile Safari (private mode) is broken with debug | ||||
|   * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript | ||||
|  | ||||
| 0.7.1 / 2013-02-05 | ||||
| ================== | ||||
|  | ||||
|   * add repository URL to package.json | ||||
|   * add DEBUG_COLORED to force colored output | ||||
|   * add browserify support | ||||
|   * fix component. Closes #24 | ||||
|  | ||||
| 0.7.0 / 2012-05-04 | ||||
| ================== | ||||
|  | ||||
|   * Added .component to package.json | ||||
|   * Added debug.component.js build | ||||
|  | ||||
| 0.6.0 / 2012-03-16 | ||||
| ================== | ||||
|  | ||||
|   * Added support for "-" prefix in DEBUG [Vinay Pulim] | ||||
|   * Added `.enabled` flag to the node version [TooTallNate] | ||||
|  | ||||
| 0.5.0 / 2012-02-02 | ||||
| ================== | ||||
|  | ||||
|   * Added: humanize diffs. Closes #8 | ||||
|   * Added `debug.disable()` to the CS variant | ||||
|   * Removed padding. Closes #10 | ||||
|   * Fixed: persist client-side variant again. Closes #9 | ||||
|  | ||||
| 0.4.0 / 2012-02-01 | ||||
| ================== | ||||
|  | ||||
|   * Added browser variant support for older browsers [TooTallNate] | ||||
|   * Added `debug.enable('project:*')` to browser variant [TooTallNate] | ||||
|   * Added padding to diff (moved it to the right) | ||||
|  | ||||
| 0.3.0 / 2012-01-26 | ||||
| ================== | ||||
|  | ||||
|   * Added millisecond diff when isatty, otherwise UTC string | ||||
|  | ||||
| 0.2.0 / 2012-01-22 | ||||
| ================== | ||||
|  | ||||
|   * Added wildcard support | ||||
|  | ||||
| 0.1.0 / 2011-12-02 | ||||
| ================== | ||||
|  | ||||
|   * Added: remove colors unless stderr isatty [TooTallNate] | ||||
|  | ||||
| 0.0.1 / 2010-01-03 | ||||
| ================== | ||||
|  | ||||
|   * Initial release | ||||
							
								
								
									
										19
									
								
								17/node_modules/debug/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								17/node_modules/debug/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> | ||||
|  | ||||
| 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. | ||||
|  | ||||
							
								
								
									
										50
									
								
								17/node_modules/debug/Makefile
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								17/node_modules/debug/Makefile
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| # get Makefile directory name: http://stackoverflow.com/a/5982798/376773 | ||||
| THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) | ||||
| THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) | ||||
|  | ||||
| # BIN directory | ||||
| BIN := $(THIS_DIR)/node_modules/.bin | ||||
|  | ||||
| # Path | ||||
| PATH := node_modules/.bin:$(PATH) | ||||
| SHELL := /bin/bash | ||||
|  | ||||
| # applications | ||||
| NODE ?= $(shell which node) | ||||
| YARN ?= $(shell which yarn) | ||||
| PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) | ||||
| BROWSERIFY ?= $(NODE) $(BIN)/browserify | ||||
|  | ||||
| .FORCE: | ||||
|  | ||||
| install: node_modules | ||||
|  | ||||
| node_modules: package.json | ||||
| 	@NODE_ENV= $(PKG) install | ||||
| 	@touch node_modules | ||||
|  | ||||
| lint: .FORCE | ||||
| 	eslint browser.js debug.js index.js node.js | ||||
|  | ||||
| test-node: .FORCE | ||||
| 	istanbul cover node_modules/mocha/bin/_mocha -- test/**.js | ||||
|  | ||||
| test-browser: .FORCE | ||||
| 	mkdir -p dist | ||||
|  | ||||
| 	@$(BROWSERIFY) \ | ||||
| 		--standalone debug \ | ||||
| 		. > dist/debug.js | ||||
|  | ||||
| 	karma start --single-run | ||||
| 	rimraf dist | ||||
|  | ||||
| test: .FORCE | ||||
| 	concurrently \ | ||||
| 		"make test-node" \ | ||||
| 		"make test-browser" | ||||
|  | ||||
| coveralls: | ||||
| 	cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js | ||||
|  | ||||
| .PHONY: all install clean distclean | ||||
							
								
								
									
										312
									
								
								17/node_modules/debug/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										312
									
								
								17/node_modules/debug/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,312 @@ | ||||
| # debug | ||||
| [](https://travis-ci.org/visionmedia/debug)  [](https://coveralls.io/github/visionmedia/debug?branch=master)  [](https://visionmedia-community-slackin.now.sh/) [](#backers)  | ||||
| [](#sponsors) | ||||
|  | ||||
|  | ||||
|  | ||||
| A tiny node.js debugging utility modelled after node core's debugging technique. | ||||
|  | ||||
| **Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ```bash | ||||
| $ npm install debug | ||||
| ``` | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| `debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. | ||||
|  | ||||
| Example _app.js_: | ||||
|  | ||||
| ```js | ||||
| var debug = require('debug')('http') | ||||
|   , http = require('http') | ||||
|   , name = 'My App'; | ||||
|  | ||||
| // fake app | ||||
|  | ||||
| debug('booting %s', name); | ||||
|  | ||||
| http.createServer(function(req, res){ | ||||
|   debug(req.method + ' ' + req.url); | ||||
|   res.end('hello\n'); | ||||
| }).listen(3000, function(){ | ||||
|   debug('listening'); | ||||
| }); | ||||
|  | ||||
| // fake worker of some kind | ||||
|  | ||||
| require('./worker'); | ||||
| ``` | ||||
|  | ||||
| Example _worker.js_: | ||||
|  | ||||
| ```js | ||||
| var debug = require('debug')('worker'); | ||||
|  | ||||
| setInterval(function(){ | ||||
|   debug('doing some work'); | ||||
| }, 1000); | ||||
| ``` | ||||
|  | ||||
|  The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: | ||||
|  | ||||
|    | ||||
|  | ||||
|    | ||||
|  | ||||
| #### Windows note | ||||
|  | ||||
|  On Windows the environment variable is set using the `set` command. | ||||
|  | ||||
|  ```cmd | ||||
|  set DEBUG=*,-not_this | ||||
|  ``` | ||||
|  | ||||
|  Note that PowerShell uses different syntax to set environment variables. | ||||
|  | ||||
|  ```cmd | ||||
|  $env:DEBUG = "*,-not_this" | ||||
|   ``` | ||||
|  | ||||
| Then, run the program to be debugged as usual. | ||||
|  | ||||
| ## Millisecond diff | ||||
|  | ||||
|   When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. | ||||
|  | ||||
|    | ||||
|  | ||||
|   When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: | ||||
|  | ||||
|    | ||||
|  | ||||
| ## Conventions | ||||
|  | ||||
|   If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". | ||||
|  | ||||
| ## Wildcards | ||||
|  | ||||
|   The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. | ||||
|  | ||||
|   You can also exclude specific debuggers by prefixing them with a "-" character.  For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". | ||||
|  | ||||
| ## Environment Variables | ||||
|  | ||||
|   When running through Node.js, you can set a few environment variables that will | ||||
|   change the behavior of the debug logging: | ||||
|  | ||||
| | Name      | Purpose                                         | | ||||
| |-----------|-------------------------------------------------| | ||||
| | `DEBUG`   | Enables/disables specific debugging namespaces. | | ||||
| | `DEBUG_COLORS`| Whether or not to use colors in the debug output. | | ||||
| | `DEBUG_DEPTH` | Object inspection depth. | | ||||
| | `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | | ||||
|  | ||||
|  | ||||
|   __Note:__ The environment variables beginning with `DEBUG_` end up being | ||||
|   converted into an Options object that gets used with `%o`/`%O` formatters. | ||||
|   See the Node.js documentation for | ||||
|   [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) | ||||
|   for the complete list. | ||||
|  | ||||
| ## Formatters | ||||
|  | ||||
|  | ||||
|   Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: | ||||
|  | ||||
| | Formatter | Representation | | ||||
| |-----------|----------------| | ||||
| | `%O`      | Pretty-print an Object on multiple lines. | | ||||
| | `%o`      | Pretty-print an Object all on a single line. | | ||||
| | `%s`      | String. | | ||||
| | `%d`      | Number (both integer and float). | | ||||
| | `%j`      | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | | ||||
| | `%%`      | Single percent sign ('%'). This does not consume an argument. | | ||||
|  | ||||
| ### Custom formatters | ||||
|  | ||||
|   You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: | ||||
|  | ||||
| ```js | ||||
| const createDebug = require('debug') | ||||
| createDebug.formatters.h = (v) => { | ||||
|   return v.toString('hex') | ||||
| } | ||||
|  | ||||
| // …elsewhere | ||||
| const debug = createDebug('foo') | ||||
| debug('this is hex: %h', new Buffer('hello world')) | ||||
| //   foo this is hex: 68656c6c6f20776f726c6421 +0ms | ||||
| ``` | ||||
|  | ||||
| ## Browser support | ||||
|   You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), | ||||
|   or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), | ||||
|   if you don't want to build it yourself. | ||||
|  | ||||
|   Debug's enable state is currently persisted by `localStorage`. | ||||
|   Consider the situation shown below where you have `worker:a` and `worker:b`, | ||||
|   and wish to debug both. You can enable this using `localStorage.debug`: | ||||
|  | ||||
| ```js | ||||
| localStorage.debug = 'worker:*' | ||||
| ``` | ||||
|  | ||||
| And then refresh the page. | ||||
|  | ||||
| ```js | ||||
| a = debug('worker:a'); | ||||
| b = debug('worker:b'); | ||||
|  | ||||
| setInterval(function(){ | ||||
|   a('doing some work'); | ||||
| }, 1000); | ||||
|  | ||||
| setInterval(function(){ | ||||
|   b('doing some work'); | ||||
| }, 1200); | ||||
| ``` | ||||
|  | ||||
| #### Web Inspector Colors | ||||
|  | ||||
|   Colors are also enabled on "Web Inspectors" that understand the `%c` formatting | ||||
|   option. These are WebKit web inspectors, Firefox ([since version | ||||
|   31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) | ||||
|   and the Firebug plugin for Firefox (any version). | ||||
|  | ||||
|   Colored output looks something like: | ||||
|  | ||||
|    | ||||
|  | ||||
|  | ||||
| ## Output streams | ||||
|  | ||||
|   By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: | ||||
|  | ||||
| Example _stdout.js_: | ||||
|  | ||||
| ```js | ||||
| var debug = require('debug'); | ||||
| var error = debug('app:error'); | ||||
|  | ||||
| // by default stderr is used | ||||
| error('goes to stderr!'); | ||||
|  | ||||
| var log = debug('app:log'); | ||||
| // set this namespace to log via console.log | ||||
| log.log = console.log.bind(console); // don't forget to bind to console! | ||||
| log('goes to stdout'); | ||||
| error('still goes to stderr!'); | ||||
|  | ||||
| // set all output to go via console.info | ||||
| // overrides all per-namespace log settings | ||||
| debug.log = console.info.bind(console); | ||||
| error('now goes to stdout via console.info'); | ||||
| log('still goes to stdout, but via console.info now'); | ||||
| ``` | ||||
|  | ||||
|  | ||||
| ## Authors | ||||
|  | ||||
|  - TJ Holowaychuk | ||||
|  - Nathan Rajlich | ||||
|  - Andrew Rhyne | ||||
|   | ||||
| ## Backers | ||||
|  | ||||
| Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] | ||||
|  | ||||
| <a href="https://opencollective.com/debug/backer/0/website" target="_blank"><img src="https://opencollective.com/debug/backer/0/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/1/website" target="_blank"><img src="https://opencollective.com/debug/backer/1/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/2/website" target="_blank"><img src="https://opencollective.com/debug/backer/2/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/3/website" target="_blank"><img src="https://opencollective.com/debug/backer/3/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/4/website" target="_blank"><img src="https://opencollective.com/debug/backer/4/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/5/website" target="_blank"><img src="https://opencollective.com/debug/backer/5/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/6/website" target="_blank"><img src="https://opencollective.com/debug/backer/6/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/7/website" target="_blank"><img src="https://opencollective.com/debug/backer/7/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/8/website" target="_blank"><img src="https://opencollective.com/debug/backer/8/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/9/website" target="_blank"><img src="https://opencollective.com/debug/backer/9/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/10/website" target="_blank"><img src="https://opencollective.com/debug/backer/10/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/11/website" target="_blank"><img src="https://opencollective.com/debug/backer/11/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/12/website" target="_blank"><img src="https://opencollective.com/debug/backer/12/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/13/website" target="_blank"><img src="https://opencollective.com/debug/backer/13/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/14/website" target="_blank"><img src="https://opencollective.com/debug/backer/14/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/15/website" target="_blank"><img src="https://opencollective.com/debug/backer/15/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/16/website" target="_blank"><img src="https://opencollective.com/debug/backer/16/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/17/website" target="_blank"><img src="https://opencollective.com/debug/backer/17/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/18/website" target="_blank"><img src="https://opencollective.com/debug/backer/18/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/19/website" target="_blank"><img src="https://opencollective.com/debug/backer/19/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/20/website" target="_blank"><img src="https://opencollective.com/debug/backer/20/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/21/website" target="_blank"><img src="https://opencollective.com/debug/backer/21/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/22/website" target="_blank"><img src="https://opencollective.com/debug/backer/22/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/23/website" target="_blank"><img src="https://opencollective.com/debug/backer/23/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/24/website" target="_blank"><img src="https://opencollective.com/debug/backer/24/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/25/website" target="_blank"><img src="https://opencollective.com/debug/backer/25/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/26/website" target="_blank"><img src="https://opencollective.com/debug/backer/26/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/27/website" target="_blank"><img src="https://opencollective.com/debug/backer/27/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/28/website" target="_blank"><img src="https://opencollective.com/debug/backer/28/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/backer/29/website" target="_blank"><img src="https://opencollective.com/debug/backer/29/avatar.svg"></a> | ||||
|  | ||||
|  | ||||
| ## Sponsors | ||||
|  | ||||
| Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] | ||||
|  | ||||
| <a href="https://opencollective.com/debug/sponsor/0/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/0/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/1/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/1/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/2/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/2/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/3/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/3/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/4/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/4/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/5/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/5/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/6/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/6/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/7/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/7/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/8/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/8/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/9/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/9/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/10/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/10/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/11/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/11/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/12/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/12/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/13/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/13/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/14/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/14/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/15/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/15/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/16/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/16/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/17/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/17/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/18/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/18/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/19/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/19/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/20/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/20/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/21/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/21/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/22/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/22/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/23/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/23/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/24/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/24/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/25/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/25/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/26/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/26/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/27/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/27/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/28/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/28/avatar.svg"></a> | ||||
| <a href="https://opencollective.com/debug/sponsor/29/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/29/avatar.svg"></a> | ||||
|  | ||||
| ## License | ||||
|  | ||||
| (The MIT License) | ||||
|  | ||||
| Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> | ||||
|  | ||||
| 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. | ||||
							
								
								
									
										19
									
								
								17/node_modules/debug/component.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								17/node_modules/debug/component.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| { | ||||
|   "name": "debug", | ||||
|   "repo": "visionmedia/debug", | ||||
|   "description": "small debugging utility", | ||||
|   "version": "2.6.9", | ||||
|   "keywords": [ | ||||
|     "debug", | ||||
|     "log", | ||||
|     "debugger" | ||||
|   ], | ||||
|   "main": "src/browser.js", | ||||
|   "scripts": [ | ||||
|     "src/browser.js", | ||||
|     "src/debug.js" | ||||
|   ], | ||||
|   "dependencies": { | ||||
|     "rauchg/ms.js": "0.7.1" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										70
									
								
								17/node_modules/debug/karma.conf.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								17/node_modules/debug/karma.conf.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| // Karma configuration | ||||
| // Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) | ||||
|  | ||||
| module.exports = function(config) { | ||||
|   config.set({ | ||||
|  | ||||
|     // base path that will be used to resolve all patterns (eg. files, exclude) | ||||
|     basePath: '', | ||||
|  | ||||
|  | ||||
|     // frameworks to use | ||||
|     // available frameworks: https://npmjs.org/browse/keyword/karma-adapter | ||||
|     frameworks: ['mocha', 'chai', 'sinon'], | ||||
|  | ||||
|  | ||||
|     // list of files / patterns to load in the browser | ||||
|     files: [ | ||||
|       'dist/debug.js', | ||||
|       'test/*spec.js' | ||||
|     ], | ||||
|  | ||||
|  | ||||
|     // list of files to exclude | ||||
|     exclude: [ | ||||
|       'src/node.js' | ||||
|     ], | ||||
|  | ||||
|  | ||||
|     // preprocess matching files before serving them to the browser | ||||
|     // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor | ||||
|     preprocessors: { | ||||
|     }, | ||||
|  | ||||
|     // test results reporter to use | ||||
|     // possible values: 'dots', 'progress' | ||||
|     // available reporters: https://npmjs.org/browse/keyword/karma-reporter | ||||
|     reporters: ['progress'], | ||||
|  | ||||
|  | ||||
|     // web server port | ||||
|     port: 9876, | ||||
|  | ||||
|  | ||||
|     // enable / disable colors in the output (reporters and logs) | ||||
|     colors: true, | ||||
|  | ||||
|  | ||||
|     // level of logging | ||||
|     // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG | ||||
|     logLevel: config.LOG_INFO, | ||||
|  | ||||
|  | ||||
|     // enable / disable watching file and executing tests whenever any file changes | ||||
|     autoWatch: true, | ||||
|  | ||||
|  | ||||
|     // start these browsers | ||||
|     // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher | ||||
|     browsers: ['PhantomJS'], | ||||
|  | ||||
|  | ||||
|     // Continuous Integration mode | ||||
|     // if true, Karma captures browsers, runs the tests and exits | ||||
|     singleRun: false, | ||||
|  | ||||
|     // Concurrency level | ||||
|     // how many browser should be started simultaneous | ||||
|     concurrency: Infinity | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										1
									
								
								17/node_modules/debug/node.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								17/node_modules/debug/node.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| module.exports = require('./src/node'); | ||||
							
								
								
									
										49
									
								
								17/node_modules/debug/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								17/node_modules/debug/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| { | ||||
|   "name": "debug", | ||||
|   "version": "2.6.9", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git://github.com/visionmedia/debug.git" | ||||
|   }, | ||||
|   "description": "small debugging utility", | ||||
|   "keywords": [ | ||||
|     "debug", | ||||
|     "log", | ||||
|     "debugger" | ||||
|   ], | ||||
|   "author": "TJ Holowaychuk <tj@vision-media.ca>", | ||||
|   "contributors": [ | ||||
|     "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)", | ||||
|     "Andrew Rhyne <rhyneandrew@gmail.com>" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "ms": "2.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "browserify": "9.0.3", | ||||
|     "chai": "^3.5.0", | ||||
|     "concurrently": "^3.1.0", | ||||
|     "coveralls": "^2.11.15", | ||||
|     "eslint": "^3.12.1", | ||||
|     "istanbul": "^0.4.5", | ||||
|     "karma": "^1.3.0", | ||||
|     "karma-chai": "^0.1.0", | ||||
|     "karma-mocha": "^1.3.0", | ||||
|     "karma-phantomjs-launcher": "^1.0.2", | ||||
|     "karma-sinon": "^1.0.5", | ||||
|     "mocha": "^3.2.0", | ||||
|     "mocha-lcov-reporter": "^1.2.0", | ||||
|     "rimraf": "^2.5.4", | ||||
|     "sinon": "^1.17.6", | ||||
|     "sinon-chai": "^2.8.0" | ||||
|   }, | ||||
|   "main": "./src/index.js", | ||||
|   "browser": "./src/browser.js", | ||||
|   "component": { | ||||
|     "scripts": { | ||||
|       "debug/index.js": "browser.js", | ||||
|       "debug/debug.js": "debug.js" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										185
									
								
								17/node_modules/debug/src/browser.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								17/node_modules/debug/src/browser.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| /** | ||||
|  * This is the web browser implementation of `debug()`. | ||||
|  * | ||||
|  * Expose `debug()` as the module. | ||||
|  */ | ||||
|  | ||||
| exports = module.exports = require('./debug'); | ||||
| exports.log = log; | ||||
| exports.formatArgs = formatArgs; | ||||
| exports.save = save; | ||||
| exports.load = load; | ||||
| exports.useColors = useColors; | ||||
| exports.storage = 'undefined' != typeof chrome | ||||
|                && 'undefined' != typeof chrome.storage | ||||
|                   ? chrome.storage.local | ||||
|                   : localstorage(); | ||||
|  | ||||
| /** | ||||
|  * Colors. | ||||
|  */ | ||||
|  | ||||
| exports.colors = [ | ||||
|   'lightseagreen', | ||||
|   'forestgreen', | ||||
|   'goldenrod', | ||||
|   'dodgerblue', | ||||
|   'darkorchid', | ||||
|   'crimson' | ||||
| ]; | ||||
|  | ||||
| /** | ||||
|  * Currently only WebKit-based Web Inspectors, Firefox >= v31, | ||||
|  * and the Firebug extension (any Firefox version) are known | ||||
|  * to support "%c" CSS customizations. | ||||
|  * | ||||
|  * TODO: add a `localStorage` variable to explicitly enable/disable colors | ||||
|  */ | ||||
|  | ||||
| function useColors() { | ||||
|   // NB: In an Electron preload script, document will be defined but not fully | ||||
|   // initialized. Since we know we're in Chrome, we'll just detect this case | ||||
|   // explicitly | ||||
|   if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   // is webkit? http://stackoverflow.com/a/16459606/376773 | ||||
|   // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 | ||||
|   return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || | ||||
|     // is firebug? http://stackoverflow.com/a/398120/376773 | ||||
|     (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || | ||||
|     // is firefox >= v31? | ||||
|     // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | ||||
|     (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || | ||||
|     // double check webkit in userAgent just in case we are in a worker | ||||
|     (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | ||||
|  */ | ||||
|  | ||||
| exports.formatters.j = function(v) { | ||||
|   try { | ||||
|     return JSON.stringify(v); | ||||
|   } catch (err) { | ||||
|     return '[UnexpectedJSONParseError]: ' + err.message; | ||||
|   } | ||||
| }; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Colorize log arguments if enabled. | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function formatArgs(args) { | ||||
|   var useColors = this.useColors; | ||||
|  | ||||
|   args[0] = (useColors ? '%c' : '') | ||||
|     + this.namespace | ||||
|     + (useColors ? ' %c' : ' ') | ||||
|     + args[0] | ||||
|     + (useColors ? '%c ' : ' ') | ||||
|     + '+' + exports.humanize(this.diff); | ||||
|  | ||||
|   if (!useColors) return; | ||||
|  | ||||
|   var c = 'color: ' + this.color; | ||||
|   args.splice(1, 0, c, 'color: inherit') | ||||
|  | ||||
|   // the final "%c" is somewhat tricky, because there could be other | ||||
|   // arguments passed either before or after the %c, so we need to | ||||
|   // figure out the correct index to insert the CSS into | ||||
|   var index = 0; | ||||
|   var lastC = 0; | ||||
|   args[0].replace(/%[a-zA-Z%]/g, function(match) { | ||||
|     if ('%%' === match) return; | ||||
|     index++; | ||||
|     if ('%c' === match) { | ||||
|       // we only are interested in the *last* %c | ||||
|       // (the user may have provided their own) | ||||
|       lastC = index; | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   args.splice(lastC, 0, c); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Invokes `console.log()` when available. | ||||
|  * No-op when `console.log` is not a "function". | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function log() { | ||||
|   // this hackery is required for IE8/9, where | ||||
|   // the `console.log` function doesn't have 'apply' | ||||
|   return 'object' === typeof console | ||||
|     && console.log | ||||
|     && Function.prototype.apply.call(console.log, console, arguments); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Save `namespaces`. | ||||
|  * | ||||
|  * @param {String} namespaces | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function save(namespaces) { | ||||
|   try { | ||||
|     if (null == namespaces) { | ||||
|       exports.storage.removeItem('debug'); | ||||
|     } else { | ||||
|       exports.storage.debug = namespaces; | ||||
|     } | ||||
|   } catch(e) {} | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Load `namespaces`. | ||||
|  * | ||||
|  * @return {String} returns the previously persisted debug modes | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function load() { | ||||
|   var r; | ||||
|   try { | ||||
|     r = exports.storage.debug; | ||||
|   } catch(e) {} | ||||
|  | ||||
|   // If debug isn't set in LS, and we're in Electron, try to load $DEBUG | ||||
|   if (!r && typeof process !== 'undefined' && 'env' in process) { | ||||
|     r = process.env.DEBUG; | ||||
|   } | ||||
|  | ||||
|   return r; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Enable namespaces listed in `localStorage.debug` initially. | ||||
|  */ | ||||
|  | ||||
| exports.enable(load()); | ||||
|  | ||||
| /** | ||||
|  * Localstorage attempts to return the localstorage. | ||||
|  * | ||||
|  * This is necessary because safari throws | ||||
|  * when a user disables cookies/localstorage | ||||
|  * and you attempt to access it. | ||||
|  * | ||||
|  * @return {LocalStorage} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function localstorage() { | ||||
|   try { | ||||
|     return window.localStorage; | ||||
|   } catch (e) {} | ||||
| } | ||||
							
								
								
									
										202
									
								
								17/node_modules/debug/src/debug.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								17/node_modules/debug/src/debug.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,202 @@ | ||||
|  | ||||
| /** | ||||
|  * This is the common logic for both the Node.js and web browser | ||||
|  * implementations of `debug()`. | ||||
|  * | ||||
|  * Expose `debug()` as the module. | ||||
|  */ | ||||
|  | ||||
| exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; | ||||
| exports.coerce = coerce; | ||||
| exports.disable = disable; | ||||
| exports.enable = enable; | ||||
| exports.enabled = enabled; | ||||
| exports.humanize = require('ms'); | ||||
|  | ||||
| /** | ||||
|  * The currently active debug mode names, and names to skip. | ||||
|  */ | ||||
|  | ||||
| exports.names = []; | ||||
| exports.skips = []; | ||||
|  | ||||
| /** | ||||
|  * Map of special "%n" handling functions, for the debug "format" argument. | ||||
|  * | ||||
|  * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". | ||||
|  */ | ||||
|  | ||||
| exports.formatters = {}; | ||||
|  | ||||
| /** | ||||
|  * Previous log timestamp. | ||||
|  */ | ||||
|  | ||||
| var prevTime; | ||||
|  | ||||
| /** | ||||
|  * Select a color. | ||||
|  * @param {String} namespace | ||||
|  * @return {Number} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function selectColor(namespace) { | ||||
|   var hash = 0, i; | ||||
|  | ||||
|   for (i in namespace) { | ||||
|     hash  = ((hash << 5) - hash) + namespace.charCodeAt(i); | ||||
|     hash |= 0; // Convert to 32bit integer | ||||
|   } | ||||
|  | ||||
|   return exports.colors[Math.abs(hash) % exports.colors.length]; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Create a debugger with the given `namespace`. | ||||
|  * | ||||
|  * @param {String} namespace | ||||
|  * @return {Function} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function createDebug(namespace) { | ||||
|  | ||||
|   function debug() { | ||||
|     // disabled? | ||||
|     if (!debug.enabled) return; | ||||
|  | ||||
|     var self = debug; | ||||
|  | ||||
|     // set `diff` timestamp | ||||
|     var curr = +new Date(); | ||||
|     var ms = curr - (prevTime || curr); | ||||
|     self.diff = ms; | ||||
|     self.prev = prevTime; | ||||
|     self.curr = curr; | ||||
|     prevTime = curr; | ||||
|  | ||||
|     // turn the `arguments` into a proper Array | ||||
|     var args = new Array(arguments.length); | ||||
|     for (var i = 0; i < args.length; i++) { | ||||
|       args[i] = arguments[i]; | ||||
|     } | ||||
|  | ||||
|     args[0] = exports.coerce(args[0]); | ||||
|  | ||||
|     if ('string' !== typeof args[0]) { | ||||
|       // anything else let's inspect with %O | ||||
|       args.unshift('%O'); | ||||
|     } | ||||
|  | ||||
|     // apply any `formatters` transformations | ||||
|     var index = 0; | ||||
|     args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { | ||||
|       // if we encounter an escaped % then don't increase the array index | ||||
|       if (match === '%%') return match; | ||||
|       index++; | ||||
|       var formatter = exports.formatters[format]; | ||||
|       if ('function' === typeof formatter) { | ||||
|         var val = args[index]; | ||||
|         match = formatter.call(self, val); | ||||
|  | ||||
|         // now we need to remove `args[index]` since it's inlined in the `format` | ||||
|         args.splice(index, 1); | ||||
|         index--; | ||||
|       } | ||||
|       return match; | ||||
|     }); | ||||
|  | ||||
|     // apply env-specific formatting (colors, etc.) | ||||
|     exports.formatArgs.call(self, args); | ||||
|  | ||||
|     var logFn = debug.log || exports.log || console.log.bind(console); | ||||
|     logFn.apply(self, args); | ||||
|   } | ||||
|  | ||||
|   debug.namespace = namespace; | ||||
|   debug.enabled = exports.enabled(namespace); | ||||
|   debug.useColors = exports.useColors(); | ||||
|   debug.color = selectColor(namespace); | ||||
|  | ||||
|   // env-specific initialization logic for debug instances | ||||
|   if ('function' === typeof exports.init) { | ||||
|     exports.init(debug); | ||||
|   } | ||||
|  | ||||
|   return debug; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Enables a debug mode by namespaces. This can include modes | ||||
|  * separated by a colon and wildcards. | ||||
|  * | ||||
|  * @param {String} namespaces | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function enable(namespaces) { | ||||
|   exports.save(namespaces); | ||||
|  | ||||
|   exports.names = []; | ||||
|   exports.skips = []; | ||||
|  | ||||
|   var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); | ||||
|   var len = split.length; | ||||
|  | ||||
|   for (var i = 0; i < len; i++) { | ||||
|     if (!split[i]) continue; // ignore empty strings | ||||
|     namespaces = split[i].replace(/\*/g, '.*?'); | ||||
|     if (namespaces[0] === '-') { | ||||
|       exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | ||||
|     } else { | ||||
|       exports.names.push(new RegExp('^' + namespaces + '$')); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Disable debug output. | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function disable() { | ||||
|   exports.enable(''); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Returns true if the given mode name is enabled, false otherwise. | ||||
|  * | ||||
|  * @param {String} name | ||||
|  * @return {Boolean} | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function enabled(name) { | ||||
|   var i, len; | ||||
|   for (i = 0, len = exports.skips.length; i < len; i++) { | ||||
|     if (exports.skips[i].test(name)) { | ||||
|       return false; | ||||
|     } | ||||
|   } | ||||
|   for (i = 0, len = exports.names.length; i < len; i++) { | ||||
|     if (exports.names[i].test(name)) { | ||||
|       return true; | ||||
|     } | ||||
|   } | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Coerce `val`. | ||||
|  * | ||||
|  * @param {Mixed} val | ||||
|  * @return {Mixed} | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function coerce(val) { | ||||
|   if (val instanceof Error) return val.stack || val.message; | ||||
|   return val; | ||||
| } | ||||
							
								
								
									
										10
									
								
								17/node_modules/debug/src/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								17/node_modules/debug/src/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| /** | ||||
|  * Detect Electron renderer process, which is node, but we should | ||||
|  * treat as a browser. | ||||
|  */ | ||||
|  | ||||
| if (typeof process !== 'undefined' && process.type === 'renderer') { | ||||
|   module.exports = require('./browser.js'); | ||||
| } else { | ||||
|   module.exports = require('./node.js'); | ||||
| } | ||||
							
								
								
									
										15
									
								
								17/node_modules/debug/src/inspector-log.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								17/node_modules/debug/src/inspector-log.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| module.exports = inspectorLog; | ||||
|  | ||||
| // black hole | ||||
| const nullStream = new (require('stream').Writable)(); | ||||
| nullStream._write = () => {}; | ||||
|  | ||||
| /** | ||||
|  * Outputs a `console.log()` to the Node.js Inspector console *only*. | ||||
|  */ | ||||
| function inspectorLog() { | ||||
|   const stdout = console._stdout; | ||||
|   console._stdout = nullStream; | ||||
|   console.log.apply(console, arguments); | ||||
|   console._stdout = stdout; | ||||
| } | ||||
							
								
								
									
										248
									
								
								17/node_modules/debug/src/node.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										248
									
								
								17/node_modules/debug/src/node.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,248 @@ | ||||
| /** | ||||
|  * Module dependencies. | ||||
|  */ | ||||
|  | ||||
| var tty = require('tty'); | ||||
| var util = require('util'); | ||||
|  | ||||
| /** | ||||
|  * This is the Node.js implementation of `debug()`. | ||||
|  * | ||||
|  * Expose `debug()` as the module. | ||||
|  */ | ||||
|  | ||||
| exports = module.exports = require('./debug'); | ||||
| exports.init = init; | ||||
| exports.log = log; | ||||
| exports.formatArgs = formatArgs; | ||||
| exports.save = save; | ||||
| exports.load = load; | ||||
| exports.useColors = useColors; | ||||
|  | ||||
| /** | ||||
|  * Colors. | ||||
|  */ | ||||
|  | ||||
| exports.colors = [6, 2, 3, 4, 5, 1]; | ||||
|  | ||||
| /** | ||||
|  * Build up the default `inspectOpts` object from the environment variables. | ||||
|  * | ||||
|  *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js | ||||
|  */ | ||||
|  | ||||
| exports.inspectOpts = Object.keys(process.env).filter(function (key) { | ||||
|   return /^debug_/i.test(key); | ||||
| }).reduce(function (obj, key) { | ||||
|   // camel-case | ||||
|   var prop = key | ||||
|     .substring(6) | ||||
|     .toLowerCase() | ||||
|     .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); | ||||
|  | ||||
|   // coerce string value into JS value | ||||
|   var val = process.env[key]; | ||||
|   if (/^(yes|on|true|enabled)$/i.test(val)) val = true; | ||||
|   else if (/^(no|off|false|disabled)$/i.test(val)) val = false; | ||||
|   else if (val === 'null') val = null; | ||||
|   else val = Number(val); | ||||
|  | ||||
|   obj[prop] = val; | ||||
|   return obj; | ||||
| }, {}); | ||||
|  | ||||
| /** | ||||
|  * The file descriptor to write the `debug()` calls to. | ||||
|  * Set the `DEBUG_FD` env variable to override with another value. i.e.: | ||||
|  * | ||||
|  *   $ DEBUG_FD=3 node script.js 3>debug.log | ||||
|  */ | ||||
|  | ||||
| var fd = parseInt(process.env.DEBUG_FD, 10) || 2; | ||||
|  | ||||
| if (1 !== fd && 2 !== fd) { | ||||
|   util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() | ||||
| } | ||||
|  | ||||
| var stream = 1 === fd ? process.stdout : | ||||
|              2 === fd ? process.stderr : | ||||
|              createWritableStdioStream(fd); | ||||
|  | ||||
| /** | ||||
|  * Is stdout a TTY? Colored output is enabled when `true`. | ||||
|  */ | ||||
|  | ||||
| function useColors() { | ||||
|   return 'colors' in exports.inspectOpts | ||||
|     ? Boolean(exports.inspectOpts.colors) | ||||
|     : tty.isatty(fd); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Map %o to `util.inspect()`, all on a single line. | ||||
|  */ | ||||
|  | ||||
| exports.formatters.o = function(v) { | ||||
|   this.inspectOpts.colors = this.useColors; | ||||
|   return util.inspect(v, this.inspectOpts) | ||||
|     .split('\n').map(function(str) { | ||||
|       return str.trim() | ||||
|     }).join(' '); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Map %o to `util.inspect()`, allowing multiple lines if needed. | ||||
|  */ | ||||
|  | ||||
| exports.formatters.O = function(v) { | ||||
|   this.inspectOpts.colors = this.useColors; | ||||
|   return util.inspect(v, this.inspectOpts); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Adds ANSI color escape codes if enabled. | ||||
|  * | ||||
|  * @api public | ||||
|  */ | ||||
|  | ||||
| function formatArgs(args) { | ||||
|   var name = this.namespace; | ||||
|   var useColors = this.useColors; | ||||
|  | ||||
|   if (useColors) { | ||||
|     var c = this.color; | ||||
|     var prefix = '  \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; | ||||
|  | ||||
|     args[0] = prefix + args[0].split('\n').join('\n' + prefix); | ||||
|     args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); | ||||
|   } else { | ||||
|     args[0] = new Date().toUTCString() | ||||
|       + ' ' + name + ' ' + args[0]; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Invokes `util.format()` with the specified arguments and writes to `stream`. | ||||
|  */ | ||||
|  | ||||
| function log() { | ||||
|   return stream.write(util.format.apply(util, arguments) + '\n'); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Save `namespaces`. | ||||
|  * | ||||
|  * @param {String} namespaces | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function save(namespaces) { | ||||
|   if (null == namespaces) { | ||||
|     // If you set a process.env field to null or undefined, it gets cast to the | ||||
|     // string 'null' or 'undefined'. Just delete instead. | ||||
|     delete process.env.DEBUG; | ||||
|   } else { | ||||
|     process.env.DEBUG = namespaces; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Load `namespaces`. | ||||
|  * | ||||
|  * @return {String} returns the previously persisted debug modes | ||||
|  * @api private | ||||
|  */ | ||||
|  | ||||
| function load() { | ||||
|   return process.env.DEBUG; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Copied from `node/src/node.js`. | ||||
|  * | ||||
|  * XXX: It's lame that node doesn't expose this API out-of-the-box. It also | ||||
|  * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. | ||||
|  */ | ||||
|  | ||||
| function createWritableStdioStream (fd) { | ||||
|   var stream; | ||||
|   var tty_wrap = process.binding('tty_wrap'); | ||||
|  | ||||
|   // Note stream._type is used for test-module-load-list.js | ||||
|  | ||||
|   switch (tty_wrap.guessHandleType(fd)) { | ||||
|     case 'TTY': | ||||
|       stream = new tty.WriteStream(fd); | ||||
|       stream._type = 'tty'; | ||||
|  | ||||
|       // Hack to have stream not keep the event loop alive. | ||||
|       // See https://github.com/joyent/node/issues/1726 | ||||
|       if (stream._handle && stream._handle.unref) { | ||||
|         stream._handle.unref(); | ||||
|       } | ||||
|       break; | ||||
|  | ||||
|     case 'FILE': | ||||
|       var fs = require('fs'); | ||||
|       stream = new fs.SyncWriteStream(fd, { autoClose: false }); | ||||
|       stream._type = 'fs'; | ||||
|       break; | ||||
|  | ||||
|     case 'PIPE': | ||||
|     case 'TCP': | ||||
|       var net = require('net'); | ||||
|       stream = new net.Socket({ | ||||
|         fd: fd, | ||||
|         readable: false, | ||||
|         writable: true | ||||
|       }); | ||||
|  | ||||
|       // FIXME Should probably have an option in net.Socket to create a | ||||
|       // stream from an existing fd which is writable only. But for now | ||||
|       // we'll just add this hack and set the `readable` member to false. | ||||
|       // Test: ./node test/fixtures/echo.js < /etc/passwd | ||||
|       stream.readable = false; | ||||
|       stream.read = null; | ||||
|       stream._type = 'pipe'; | ||||
|  | ||||
|       // FIXME Hack to have stream not keep the event loop alive. | ||||
|       // See https://github.com/joyent/node/issues/1726 | ||||
|       if (stream._handle && stream._handle.unref) { | ||||
|         stream._handle.unref(); | ||||
|       } | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       // Probably an error on in uv_guess_handle() | ||||
|       throw new Error('Implement me. Unknown stream file type!'); | ||||
|   } | ||||
|  | ||||
|   // For supporting legacy API we put the FD here. | ||||
|   stream.fd = fd; | ||||
|  | ||||
|   stream._isStdio = true; | ||||
|  | ||||
|   return stream; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Init logic for `debug` instances. | ||||
|  * | ||||
|  * Create a new `inspectOpts` object in case `useColors` is set | ||||
|  * differently for a particular `debug` instance. | ||||
|  */ | ||||
|  | ||||
| function init (debug) { | ||||
|   debug.inspectOpts = {}; | ||||
|  | ||||
|   var keys = Object.keys(exports.inspectOpts); | ||||
|   for (var i = 0; i < keys.length; i++) { | ||||
|     debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Enable namespaces listed in `process.env.DEBUG` initially. | ||||
|  */ | ||||
|  | ||||
| exports.enable(load()); | ||||
							
								
								
									
										103
									
								
								17/node_modules/depd/History.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								17/node_modules/depd/History.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,103 @@ | ||||
| 2.0.0 / 2018-10-26 | ||||
| ================== | ||||
|  | ||||
|   * Drop support for Node.js 0.6 | ||||
|   * Replace internal `eval` usage with `Function` constructor | ||||
|   * Use instance methods on `process` to check for listeners | ||||
|  | ||||
| 1.1.2 / 2018-01-11 | ||||
| ================== | ||||
|  | ||||
|   * perf: remove argument reassignment | ||||
|   * Support Node.js 0.6 to 9.x | ||||
|  | ||||
| 1.1.1 / 2017-07-27 | ||||
| ================== | ||||
|  | ||||
|   * Remove unnecessary `Buffer` loading | ||||
|   * Support Node.js 0.6 to 8.x | ||||
|  | ||||
| 1.1.0 / 2015-09-14 | ||||
| ================== | ||||
|  | ||||
|   * Enable strict mode in more places | ||||
|   * Support io.js 3.x | ||||
|   * Support io.js 2.x | ||||
|   * Support web browser loading | ||||
|     - Requires bundler like Browserify or webpack | ||||
|  | ||||
| 1.0.1 / 2015-04-07 | ||||
| ================== | ||||
|  | ||||
|   * Fix `TypeError`s when under `'use strict'` code | ||||
|   * Fix useless type name on auto-generated messages | ||||
|   * Support io.js 1.x | ||||
|   * Support Node.js 0.12 | ||||
|  | ||||
| 1.0.0 / 2014-09-17 | ||||
| ================== | ||||
|  | ||||
|   * No changes | ||||
|  | ||||
| 0.4.5 / 2014-09-09 | ||||
| ================== | ||||
|  | ||||
|   * Improve call speed to functions using the function wrapper | ||||
|   * Support Node.js 0.6 | ||||
|  | ||||
| 0.4.4 / 2014-07-27 | ||||
| ================== | ||||
|  | ||||
|   * Work-around v8 generating empty stack traces | ||||
|  | ||||
| 0.4.3 / 2014-07-26 | ||||
| ================== | ||||
|  | ||||
|   * Fix exception when global `Error.stackTraceLimit` is too low | ||||
|  | ||||
| 0.4.2 / 2014-07-19 | ||||
| ================== | ||||
|  | ||||
|   * Correct call site for wrapped functions and properties | ||||
|  | ||||
| 0.4.1 / 2014-07-19 | ||||
| ================== | ||||
|  | ||||
|   * Improve automatic message generation for function properties | ||||
|  | ||||
| 0.4.0 / 2014-07-19 | ||||
| ================== | ||||
|  | ||||
|   * Add `TRACE_DEPRECATION` environment variable | ||||
|   * Remove non-standard grey color from color output | ||||
|   * Support `--no-deprecation` argument | ||||
|   * Support `--trace-deprecation` argument | ||||
|   * Support `deprecate.property(fn, prop, message)` | ||||
|  | ||||
| 0.3.0 / 2014-06-16 | ||||
| ================== | ||||
|  | ||||
|   * Add `NO_DEPRECATION` environment variable | ||||
|  | ||||
| 0.2.0 / 2014-06-15 | ||||
| ================== | ||||
|  | ||||
|   * Add `deprecate.property(obj, prop, message)` | ||||
|   * Remove `supports-color` dependency for node.js 0.8 | ||||
|  | ||||
| 0.1.0 / 2014-06-15 | ||||
| ================== | ||||
|  | ||||
|   * Add `deprecate.function(fn, message)` | ||||
|   * Add `process.on('deprecation', fn)` emitter | ||||
|   * Automatically generate message when omitted from `deprecate()` | ||||
|  | ||||
| 0.0.1 / 2014-06-15 | ||||
| ================== | ||||
|  | ||||
|   * Fix warning for dynamic calls at singe call site | ||||
|  | ||||
| 0.0.0 / 2014-06-15 | ||||
| ================== | ||||
|  | ||||
|   * Initial implementation | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 MishaBagger
					MishaBagger