From 431cf81f447ff4f0f6fe0d538ae7a0a50cc28998 Mon Sep 17 00:00:00 2001 From: lixinyue <3278014195@qq.com> Date: Tue, 9 Jul 2024 10:28:11 +0800 Subject: [PATCH 1/2] lxy-2024.07.09-10:25 --- www2/www2/main.js | 210 + www2/www2/node_modules/.bin/mime | 16 + www2/www2/node_modules/.bin/mime.cmd | 17 + www2/www2/node_modules/.bin/mime.ps1 | 28 + www2/www2/node_modules/.bin/mkdirp | 16 + www2/www2/node_modules/.bin/mkdirp.cmd | 17 + www2/www2/node_modules/.bin/mkdirp.ps1 | 28 + www2/www2/node_modules/.package-lock.json | 933 ++ www2/www2/node_modules/accepts/HISTORY.md | 243 + www2/www2/node_modules/accepts/LICENSE | 23 + www2/www2/node_modules/accepts/README.md | 140 + www2/www2/node_modules/accepts/index.js | 238 + www2/www2/node_modules/accepts/package.json | 47 + .../www2/node_modules/append-field/.npmignore | 1 + www2/www2/node_modules/append-field/LICENSE | 21 + www2/www2/node_modules/append-field/README.md | 44 + www2/www2/node_modules/append-field/index.js | 12 + .../append-field/lib/parse-path.js | 53 + .../append-field/lib/set-value.js | 64 + .../node_modules/append-field/package.json | 19 + .../node_modules/append-field/test/forms.js | 19 + www2/www2/node_modules/array-flatten/LICENSE | 21 + .../www2/node_modules/array-flatten/README.md | 43 + .../array-flatten/array-flatten.js | 64 + .../node_modules/array-flatten/package.json | 39 + .../node_modules/bignumber.js/CHANGELOG.md | 266 + www2/www2/node_modules/bignumber.js/LICENCE | 23 + www2/www2/node_modules/bignumber.js/README.md | 268 + .../node_modules/bignumber.js/bignumber.d.ts | 1829 ++++ .../node_modules/bignumber.js/bignumber.js | 2902 ++++++ .../bignumber.js/bignumber.min.js | 1 + .../bignumber.js/bignumber.min.js.map | 1 + .../node_modules/bignumber.js/bignumber.mjs | 2888 ++++++ .../node_modules/bignumber.js/doc/API.html | 2237 +++++ .../node_modules/bignumber.js/package.json | 40 + www2/www2/node_modules/body-parser/HISTORY.md | 665 ++ www2/www2/node_modules/body-parser/LICENSE | 23 + www2/www2/node_modules/body-parser/README.md | 465 + .../www2/node_modules/body-parser/SECURITY.md | 25 + www2/www2/node_modules/body-parser/index.js | 156 + .../www2/node_modules/body-parser/lib/read.js | 205 + .../body-parser/lib/types/json.js | 247 + .../node_modules/body-parser/lib/types/raw.js | 101 + .../body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 284 + .../node_modules/body-parser/package.json | 56 + www2/www2/node_modules/buffer-from/LICENSE | 21 + www2/www2/node_modules/buffer-from/index.js | 72 + .../node_modules/buffer-from/package.json | 19 + www2/www2/node_modules/buffer-from/readme.md | 69 + www2/www2/node_modules/busboy/.eslintrc.js | 5 + .../busboy/.github/workflows/ci.yml | 24 + .../busboy/.github/workflows/lint.yml | 23 + www2/www2/node_modules/busboy/LICENSE | 19 + www2/www2/node_modules/busboy/README.md | 191 + .../bench/bench-multipart-fields-100mb-big.js | 149 + .../bench-multipart-fields-100mb-small.js | 143 + .../bench/bench-multipart-files-100mb-big.js | 154 + .../bench-multipart-files-100mb-small.js | 148 + .../bench-urlencoded-fields-100pairs-small.js | 101 + ...ch-urlencoded-fields-900pairs-small-alt.js | 84 + www2/www2/node_modules/busboy/lib/index.js | 57 + .../busboy/lib/types/multipart.js | 653 ++ .../busboy/lib/types/urlencoded.js | 350 + www2/www2/node_modules/busboy/lib/utils.js | 596 ++ www2/www2/node_modules/busboy/package.json | 22 + www2/www2/node_modules/busboy/test/common.js | 109 + .../test/test-types-multipart-charsets.js | 94 + .../test/test-types-multipart-stream-pause.js | 102 + .../busboy/test/test-types-multipart.js | 1053 ++ .../busboy/test/test-types-urlencoded.js | 488 + www2/www2/node_modules/busboy/test/test.js | 20 + www2/www2/node_modules/bytes/History.md | 97 + www2/www2/node_modules/bytes/LICENSE | 23 + www2/www2/node_modules/bytes/Readme.md | 152 + www2/www2/node_modules/bytes/index.js | 170 + www2/www2/node_modules/bytes/package.json | 42 + .../www2/node_modules/call-bind/.eslintignore | 1 + www2/www2/node_modules/call-bind/.eslintrc | 16 + .../call-bind/.github/FUNDING.yml | 12 + www2/www2/node_modules/call-bind/.nycrc | 9 + www2/www2/node_modules/call-bind/CHANGELOG.md | 93 + www2/www2/node_modules/call-bind/LICENSE | 21 + www2/www2/node_modules/call-bind/README.md | 64 + www2/www2/node_modules/call-bind/callBound.js | 15 + www2/www2/node_modules/call-bind/index.js | 35 + www2/www2/node_modules/call-bind/package.json | 95 + .../node_modules/call-bind/test/callBound.js | 54 + .../www2/node_modules/call-bind/test/index.js | 80 + www2/www2/node_modules/concat-stream/LICENSE | 24 + www2/www2/node_modules/concat-stream/index.js | 144 + .../node_modules/concat-stream/package.json | 55 + .../www2/node_modules/concat-stream/readme.md | 102 + .../content-disposition/HISTORY.md | 60 + .../node_modules/content-disposition/LICENSE | 22 + .../content-disposition/README.md | 142 + .../node_modules/content-disposition/index.js | 458 + .../content-disposition/package.json | 44 + .../www2/node_modules/content-type/HISTORY.md | 29 + www2/www2/node_modules/content-type/LICENSE | 22 + www2/www2/node_modules/content-type/README.md | 94 + www2/www2/node_modules/content-type/index.js | 225 + .../node_modules/content-type/package.json | 42 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 38 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + www2/www2/node_modules/cookie/HISTORY.md | 147 + www2/www2/node_modules/cookie/LICENSE | 24 + www2/www2/node_modules/cookie/README.md | 317 + www2/www2/node_modules/cookie/SECURITY.md | 25 + www2/www2/node_modules/cookie/index.js | 274 + www2/www2/node_modules/cookie/package.json | 44 + www2/www2/node_modules/core-util-is/LICENSE | 19 + www2/www2/node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/lib/util.js | 107 + .../node_modules/core-util-is/package.json | 38 + www2/www2/node_modules/debug/.coveralls.yml | 1 + www2/www2/node_modules/debug/.eslintrc | 11 + www2/www2/node_modules/debug/.npmignore | 9 + www2/www2/node_modules/debug/.travis.yml | 14 + www2/www2/node_modules/debug/CHANGELOG.md | 362 + www2/www2/node_modules/debug/LICENSE | 19 + www2/www2/node_modules/debug/Makefile | 50 + www2/www2/node_modules/debug/README.md | 312 + www2/www2/node_modules/debug/component.json | 19 + www2/www2/node_modules/debug/karma.conf.js | 70 + www2/www2/node_modules/debug/node.js | 1 + www2/www2/node_modules/debug/package.json | 49 + www2/www2/node_modules/debug/src/browser.js | 185 + www2/www2/node_modules/debug/src/debug.js | 202 + www2/www2/node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + www2/www2/node_modules/debug/src/node.js | 248 + .../define-data-property/.eslintrc | 24 + .../define-data-property/.github/FUNDING.yml | 12 + .../node_modules/define-data-property/.nycrc | 13 + .../define-data-property/CHANGELOG.md | 70 + .../node_modules/define-data-property/LICENSE | 21 + .../define-data-property/README.md | 67 + .../define-data-property/index.d.ts | 12 + .../define-data-property/index.js | 56 + .../define-data-property/package.json | 106 + .../define-data-property/test/index.js | 392 + .../define-data-property/tsconfig.json | 59 + www2/www2/node_modules/depd/History.md | 103 + www2/www2/node_modules/depd/LICENSE | 22 + www2/www2/node_modules/depd/Readme.md | 280 + www2/www2/node_modules/depd/index.js | 538 ++ .../node_modules/depd/lib/browser/index.js | 77 + www2/www2/node_modules/depd/package.json | 45 + www2/www2/node_modules/destroy/LICENSE | 23 + www2/www2/node_modules/destroy/README.md | 63 + www2/www2/node_modules/destroy/index.js | 209 + www2/www2/node_modules/destroy/package.json | 48 + www2/www2/node_modules/ee-first/LICENSE | 22 + www2/www2/node_modules/ee-first/README.md | 80 + www2/www2/node_modules/ee-first/index.js | 95 + www2/www2/node_modules/ee-first/package.json | 29 + www2/www2/node_modules/encodeurl/HISTORY.md | 14 + www2/www2/node_modules/encodeurl/LICENSE | 22 + www2/www2/node_modules/encodeurl/README.md | 128 + www2/www2/node_modules/encodeurl/index.js | 60 + www2/www2/node_modules/encodeurl/package.json | 40 + .../node_modules/es-define-property/.eslintrc | 13 + .../es-define-property/.github/FUNDING.yml | 12 + .../node_modules/es-define-property/.nycrc | 9 + .../es-define-property/CHANGELOG.md | 15 + .../node_modules/es-define-property/LICENSE | 21 + .../node_modules/es-define-property/README.md | 49 + .../es-define-property/index.d.ts | 3 + .../node_modules/es-define-property/index.js | 16 + .../es-define-property/package.json | 81 + .../es-define-property/test/index.js | 55 + .../es-define-property/tsconfig.json | 50 + www2/www2/node_modules/es-errors/.eslintrc | 5 + .../es-errors/.github/FUNDING.yml | 12 + www2/www2/node_modules/es-errors/CHANGELOG.md | 40 + www2/www2/node_modules/es-errors/LICENSE | 21 + www2/www2/node_modules/es-errors/README.md | 55 + www2/www2/node_modules/es-errors/eval.d.ts | 3 + www2/www2/node_modules/es-errors/eval.js | 4 + www2/www2/node_modules/es-errors/index.d.ts | 3 + www2/www2/node_modules/es-errors/index.js | 4 + www2/www2/node_modules/es-errors/package.json | 80 + www2/www2/node_modules/es-errors/range.d.ts | 3 + www2/www2/node_modules/es-errors/range.js | 4 + www2/www2/node_modules/es-errors/ref.d.ts | 3 + www2/www2/node_modules/es-errors/ref.js | 4 + www2/www2/node_modules/es-errors/syntax.d.ts | 3 + www2/www2/node_modules/es-errors/syntax.js | 4 + .../www2/node_modules/es-errors/test/index.js | 19 + .../www2/node_modules/es-errors/tsconfig.json | 49 + www2/www2/node_modules/es-errors/type.d.ts | 3 + www2/www2/node_modules/es-errors/type.js | 4 + www2/www2/node_modules/es-errors/uri.d.ts | 3 + www2/www2/node_modules/es-errors/uri.js | 4 + www2/www2/node_modules/escape-html/LICENSE | 24 + www2/www2/node_modules/escape-html/Readme.md | 43 + www2/www2/node_modules/escape-html/index.js | 78 + .../node_modules/escape-html/package.json | 24 + www2/www2/node_modules/etag/HISTORY.md | 83 + www2/www2/node_modules/etag/LICENSE | 22 + www2/www2/node_modules/etag/README.md | 159 + www2/www2/node_modules/etag/index.js | 131 + www2/www2/node_modules/etag/package.json | 47 + .../express-fileupload/.circleci/config.yml | 54 + .../express-fileupload/.eslintignore | 1 + .../node_modules/express-fileupload/.eslintrc | 23 + .../express-fileupload/.mocharc.json | 3 + .../express-fileupload/.prettierrc | 1 + .../node_modules/express-fileupload/LICENSE | 22 + .../node_modules/express-fileupload/README.md | 132 + .../express-fileupload/SECURITY.md | 15 + .../express-fileupload/example/README.md | 70 + .../express-fileupload/example/index.html | 12 + .../express-fileupload/example/server.js | 41 + .../example/uploads/placeholder.txt | 1 + .../express-fileupload/lib/fileFactory.js | 65 + .../express-fileupload/lib/index.js | 40 + .../lib/isEligibleRequest.js | 46 + .../express-fileupload/lib/memHandler.js | 42 + .../lib/processMultipart.js | 185 + .../express-fileupload/lib/processNested.js | 35 + .../express-fileupload/lib/tempFileHandler.js | 64 + .../express-fileupload/lib/uploadtimer.js | 47 + .../express-fileupload/lib/utilities.js | 335 + .../express-fileupload/package.json | 44 + .../test/fileFactory.spec.js | 78 + .../test/fileLimitUploads.spec.js | 99 + .../test/isEligibleRequest.spec.js | 128 + .../test/multipartFields.spec.js | 85 + .../test/multipartUploads.spec.js | 475 + .../express-fileupload/test/options.spec.js | 219 + .../express-fileupload/test/posttests.js | 5 + .../express-fileupload/test/pretests.js | 5 + .../test/processNested.spec.js | 59 + .../express-fileupload/test/server.js | 295 + .../express-fileupload/test/tempFile.spec.js | 126 + .../test/uploadtimer.spec.js | 41 + .../express-fileupload/test/utilities.spec.js | 503 + .../node_modules/express-session/HISTORY.md | 456 + .../www2/node_modules/express-session/LICENSE | 24 + .../node_modules/express-session/README.md | 1032 ++ .../node_modules/express-session/index.js | 693 ++ .../node_modules/cookie-signature/History.md | 42 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + .../node_modules/express-session/package.json | 47 + .../express-session/session/cookie.js | 152 + .../express-session/session/memory.js | 187 + .../express-session/session/session.js | 143 + .../express-session/session/store.js | 102 + www2/www2/node_modules/express/History.md | 3615 +++++++ www2/www2/node_modules/express/LICENSE | 24 + www2/www2/node_modules/express/Readme.md | 166 + www2/www2/node_modules/express/index.js | 11 + .../node_modules/express/lib/application.js | 661 ++ www2/www2/node_modules/express/lib/express.js | 116 + .../express/lib/middleware/init.js | 43 + .../express/lib/middleware/query.js | 47 + www2/www2/node_modules/express/lib/request.js | 525 + .../www2/node_modules/express/lib/response.js | 1178 +++ .../node_modules/express/lib/router/index.js | 673 ++ .../node_modules/express/lib/router/layer.js | 181 + .../node_modules/express/lib/router/route.js | 230 + www2/www2/node_modules/express/lib/utils.js | 303 + www2/www2/node_modules/express/lib/view.js | 182 + www2/www2/node_modules/express/package.json | 98 + .../www2/node_modules/finalhandler/HISTORY.md | 195 + www2/www2/node_modules/finalhandler/LICENSE | 22 + www2/www2/node_modules/finalhandler/README.md | 147 + .../node_modules/finalhandler/SECURITY.md | 25 + www2/www2/node_modules/finalhandler/index.js | 336 + .../node_modules/finalhandler/package.json | 46 + www2/www2/node_modules/forwarded/HISTORY.md | 21 + www2/www2/node_modules/forwarded/LICENSE | 22 + www2/www2/node_modules/forwarded/README.md | 57 + www2/www2/node_modules/forwarded/index.js | 90 + www2/www2/node_modules/forwarded/package.json | 45 + www2/www2/node_modules/fresh/HISTORY.md | 70 + www2/www2/node_modules/fresh/LICENSE | 23 + www2/www2/node_modules/fresh/README.md | 119 + www2/www2/node_modules/fresh/index.js | 137 + www2/www2/node_modules/fresh/package.json | 46 + .../www2/node_modules/function-bind/.eslintrc | 21 + .../function-bind/.github/FUNDING.yml | 12 + .../function-bind/.github/SECURITY.md | 3 + www2/www2/node_modules/function-bind/.nycrc | 13 + .../node_modules/function-bind/CHANGELOG.md | 136 + www2/www2/node_modules/function-bind/LICENSE | 20 + .../www2/node_modules/function-bind/README.md | 46 + .../function-bind/implementation.js | 84 + www2/www2/node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 87 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + .../www2/node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + www2/www2/node_modules/get-intrinsic/.nycrc | 9 + .../node_modules/get-intrinsic/CHANGELOG.md | 143 + www2/www2/node_modules/get-intrinsic/LICENSE | 21 + .../www2/node_modules/get-intrinsic/README.md | 71 + www2/www2/node_modules/get-intrinsic/index.js | 359 + .../node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + www2/www2/node_modules/gopd/.eslintrc | 16 + .../node_modules/gopd/.github/FUNDING.yml | 12 + www2/www2/node_modules/gopd/CHANGELOG.md | 25 + www2/www2/node_modules/gopd/LICENSE | 21 + www2/www2/node_modules/gopd/README.md | 40 + www2/www2/node_modules/gopd/index.js | 16 + www2/www2/node_modules/gopd/package.json | 71 + www2/www2/node_modules/gopd/test/index.js | 35 + .../has-property-descriptors/.eslintrc | 13 + .../.github/FUNDING.yml | 12 + .../has-property-descriptors/.nycrc | 9 + .../has-property-descriptors/CHANGELOG.md | 35 + .../has-property-descriptors/LICENSE | 21 + .../has-property-descriptors/README.md | 43 + .../has-property-descriptors/index.js | 22 + .../has-property-descriptors/package.json | 77 + .../has-property-descriptors/test/index.js | 57 + www2/www2/node_modules/has-proto/.eslintrc | 5 + .../has-proto/.github/FUNDING.yml | 12 + www2/www2/node_modules/has-proto/CHANGELOG.md | 38 + www2/www2/node_modules/has-proto/LICENSE | 21 + www2/www2/node_modules/has-proto/README.md | 38 + www2/www2/node_modules/has-proto/index.d.ts | 3 + www2/www2/node_modules/has-proto/index.js | 15 + www2/www2/node_modules/has-proto/package.json | 78 + .../www2/node_modules/has-proto/test/index.js | 19 + .../www2/node_modules/has-proto/tsconfig.json | 49 + www2/www2/node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + www2/www2/node_modules/has-symbols/.nycrc | 9 + .../node_modules/has-symbols/CHANGELOG.md | 75 + www2/www2/node_modules/has-symbols/LICENSE | 21 + www2/www2/node_modules/has-symbols/README.md | 46 + www2/www2/node_modules/has-symbols/index.js | 13 + .../node_modules/has-symbols/package.json | 101 + www2/www2/node_modules/has-symbols/shams.js | 42 + .../node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + .../node_modules/has-symbols/test/tests.js | 56 + www2/www2/node_modules/hasown/.eslintrc | 5 + .../node_modules/hasown/.github/FUNDING.yml | 12 + www2/www2/node_modules/hasown/.nycrc | 13 + www2/www2/node_modules/hasown/CHANGELOG.md | 40 + www2/www2/node_modules/hasown/LICENSE | 21 + www2/www2/node_modules/hasown/README.md | 40 + www2/www2/node_modules/hasown/index.d.ts | 3 + www2/www2/node_modules/hasown/index.js | 8 + www2/www2/node_modules/hasown/package.json | 92 + www2/www2/node_modules/hasown/tsconfig.json | 6 + www2/www2/node_modules/http-errors/HISTORY.md | 180 + www2/www2/node_modules/http-errors/LICENSE | 23 + www2/www2/node_modules/http-errors/README.md | 169 + www2/www2/node_modules/http-errors/index.js | 289 + .../node_modules/http-errors/package.json | 50 + .../www2/node_modules/iconv-lite/Changelog.md | 162 + www2/www2/node_modules/iconv-lite/LICENSE | 21 + www2/www2/node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + .../iconv-lite/encodings/index.js | 22 + .../iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 177 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../iconv-lite/lib/extend-node.js | 217 + .../node_modules/iconv-lite/lib/index.d.ts | 24 + .../www2/node_modules/iconv-lite/lib/index.js | 153 + .../node_modules/iconv-lite/lib/streams.js | 121 + .../www2/node_modules/iconv-lite/package.json | 46 + www2/www2/node_modules/inherits/LICENSE | 16 + www2/www2/node_modules/inherits/README.md | 42 + www2/www2/node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + www2/www2/node_modules/inherits/package.json | 29 + www2/www2/node_modules/ipaddr.js/LICENSE | 19 + www2/www2/node_modules/ipaddr.js/README.md | 233 + .../www2/node_modules/ipaddr.js/ipaddr.min.js | 1 + .../www2/node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + www2/www2/node_modules/ipaddr.js/package.json | 35 + www2/www2/node_modules/isarray/.npmignore | 1 + www2/www2/node_modules/isarray/.travis.yml | 4 + www2/www2/node_modules/isarray/Makefile | 6 + www2/www2/node_modules/isarray/README.md | 60 + www2/www2/node_modules/isarray/component.json | 19 + www2/www2/node_modules/isarray/index.js | 5 + www2/www2/node_modules/isarray/package.json | 45 + www2/www2/node_modules/isarray/test.js | 20 + www2/www2/node_modules/media-typer/HISTORY.md | 22 + www2/www2/node_modules/media-typer/LICENSE | 22 + www2/www2/node_modules/media-typer/README.md | 81 + www2/www2/node_modules/media-typer/index.js | 270 + .../node_modules/media-typer/package.json | 26 + .../node_modules/merge-descriptors/HISTORY.md | 21 + .../node_modules/merge-descriptors/LICENSE | 23 + .../node_modules/merge-descriptors/README.md | 48 + .../node_modules/merge-descriptors/index.js | 60 + .../merge-descriptors/package.json | 32 + www2/www2/node_modules/methods/HISTORY.md | 29 + www2/www2/node_modules/methods/LICENSE | 24 + www2/www2/node_modules/methods/README.md | 51 + www2/www2/node_modules/methods/index.js | 69 + www2/www2/node_modules/methods/package.json | 36 + www2/www2/node_modules/mime-db/HISTORY.md | 507 + www2/www2/node_modules/mime-db/LICENSE | 23 + www2/www2/node_modules/mime-db/README.md | 100 + www2/www2/node_modules/mime-db/db.json | 8519 +++++++++++++++++ www2/www2/node_modules/mime-db/index.js | 12 + www2/www2/node_modules/mime-db/package.json | 60 + www2/www2/node_modules/mime-types/HISTORY.md | 397 + www2/www2/node_modules/mime-types/LICENSE | 23 + www2/www2/node_modules/mime-types/README.md | 113 + www2/www2/node_modules/mime-types/index.js | 188 + .../www2/node_modules/mime-types/package.json | 44 + www2/www2/node_modules/mime/.npmignore | 0 www2/www2/node_modules/mime/CHANGELOG.md | 164 + www2/www2/node_modules/mime/LICENSE | 21 + www2/www2/node_modules/mime/README.md | 90 + www2/www2/node_modules/mime/cli.js | 8 + www2/www2/node_modules/mime/mime.js | 108 + www2/www2/node_modules/mime/package.json | 44 + www2/www2/node_modules/mime/src/build.js | 53 + www2/www2/node_modules/mime/src/test.js | 60 + www2/www2/node_modules/mime/types.json | 1 + www2/www2/node_modules/minimist/.eslintrc | 29 + .../node_modules/minimist/.github/FUNDING.yml | 12 + www2/www2/node_modules/minimist/.nycrc | 14 + www2/www2/node_modules/minimist/CHANGELOG.md | 298 + www2/www2/node_modules/minimist/LICENSE | 18 + www2/www2/node_modules/minimist/README.md | 121 + .../node_modules/minimist/example/parse.js | 4 + www2/www2/node_modules/minimist/index.js | 263 + www2/www2/node_modules/minimist/package.json | 75 + .../node_modules/minimist/test/all_bool.js | 34 + www2/www2/node_modules/minimist/test/bool.js | 177 + www2/www2/node_modules/minimist/test/dash.js | 43 + .../minimist/test/default_bool.js | 37 + .../www2/node_modules/minimist/test/dotted.js | 24 + .../node_modules/minimist/test/kv_short.js | 32 + www2/www2/node_modules/minimist/test/long.js | 33 + www2/www2/node_modules/minimist/test/num.js | 38 + www2/www2/node_modules/minimist/test/parse.js | 209 + .../minimist/test/parse_modified.js | 11 + www2/www2/node_modules/minimist/test/proto.js | 64 + www2/www2/node_modules/minimist/test/short.js | 69 + .../node_modules/minimist/test/stop_early.js | 17 + .../node_modules/minimist/test/unknown.js | 104 + .../node_modules/minimist/test/whitespace.js | 10 + www2/www2/node_modules/mkdirp/LICENSE | 21 + www2/www2/node_modules/mkdirp/bin/cmd.js | 33 + www2/www2/node_modules/mkdirp/bin/usage.txt | 12 + www2/www2/node_modules/mkdirp/index.js | 102 + www2/www2/node_modules/mkdirp/package.json | 33 + www2/www2/node_modules/mkdirp/readme.markdown | 100 + www2/www2/node_modules/ms/index.js | 152 + www2/www2/node_modules/ms/license.md | 21 + www2/www2/node_modules/ms/package.json | 37 + www2/www2/node_modules/ms/readme.md | 51 + www2/www2/node_modules/multer/LICENSE | 17 + www2/www2/node_modules/multer/README.md | 333 + www2/www2/node_modules/multer/index.js | 104 + www2/www2/node_modules/multer/lib/counter.js | 28 + .../node_modules/multer/lib/file-appender.js | 67 + .../multer/lib/make-middleware.js | 173 + .../node_modules/multer/lib/multer-error.js | 24 + .../multer/lib/remove-uploaded-files.js | 28 + www2/www2/node_modules/multer/package.json | 52 + www2/www2/node_modules/multer/storage/disk.js | 66 + .../node_modules/multer/storage/memory.js | 21 + www2/www2/node_modules/mysql/Changes.md | 569 ++ www2/www2/node_modules/mysql/License | 19 + www2/www2/node_modules/mysql/Readme.md | 1548 +++ www2/www2/node_modules/mysql/index.js | 161 + .../www2/node_modules/mysql/lib/Connection.js | 529 + .../mysql/lib/ConnectionConfig.js | 209 + www2/www2/node_modules/mysql/lib/Pool.js | 294 + .../node_modules/mysql/lib/PoolCluster.js | 288 + .../www2/node_modules/mysql/lib/PoolConfig.js | 32 + .../node_modules/mysql/lib/PoolConnection.js | 65 + .../node_modules/mysql/lib/PoolNamespace.js | 136 + .../node_modules/mysql/lib/PoolSelector.js | 31 + .../node_modules/mysql/lib/protocol/Auth.js | 168 + .../mysql/lib/protocol/BufferList.js | 25 + .../mysql/lib/protocol/PacketHeader.js | 5 + .../mysql/lib/protocol/PacketWriter.js | 211 + .../node_modules/mysql/lib/protocol/Parser.js | 491 + .../mysql/lib/protocol/Protocol.js | 463 + .../mysql/lib/protocol/ResultSet.js | 7 + .../mysql/lib/protocol/SqlString.js | 1 + .../node_modules/mysql/lib/protocol/Timer.js | 33 + .../mysql/lib/protocol/constants/charsets.js | 262 + .../mysql/lib/protocol/constants/client.js | 26 + .../mysql/lib/protocol/constants/errors.js | 2476 +++++ .../lib/protocol/constants/field_flags.js | 18 + .../lib/protocol/constants/server_status.js | 39 + .../lib/protocol/constants/ssl_profiles.js | 1480 +++ .../mysql/lib/protocol/constants/types.js | 72 + .../packets/AuthSwitchRequestPacket.js | 20 + .../packets/AuthSwitchResponsePacket.js | 14 + .../packets/ClientAuthenticationPacket.js | 54 + .../protocol/packets/ComChangeUserPacket.js | 26 + .../lib/protocol/packets/ComPingPacket.js | 12 + .../lib/protocol/packets/ComQueryPacket.js | 15 + .../lib/protocol/packets/ComQuitPacket.js | 12 + .../protocol/packets/ComStatisticsPacket.js | 12 + .../mysql/lib/protocol/packets/EmptyPacket.js | 9 + .../mysql/lib/protocol/packets/EofPacket.js | 25 + .../mysql/lib/protocol/packets/ErrorPacket.js | 35 + .../mysql/lib/protocol/packets/Field.js | 26 + .../mysql/lib/protocol/packets/FieldPacket.js | 93 + .../packets/HandshakeInitializationPacket.js | 103 + .../protocol/packets/LocalDataFilePacket.js | 15 + .../packets/LocalInfileRequestPacket.js | 21 + .../mysql/lib/protocol/packets/OkPacket.js | 44 + .../lib/protocol/packets/OldPasswordPacket.js | 14 + .../protocol/packets/ResultSetHeaderPacket.js | 14 + .../lib/protocol/packets/RowDataPacket.js | 130 + .../lib/protocol/packets/SSLRequestPacket.js | 27 + .../lib/protocol/packets/StatisticsPacket.js | 20 + .../protocol/packets/UseOldPasswordPacket.js | 14 + .../mysql/lib/protocol/packets/index.js | 23 + .../lib/protocol/sequences/ChangeUser.js | 67 + .../mysql/lib/protocol/sequences/Handshake.js | 126 + .../mysql/lib/protocol/sequences/Ping.js | 19 + .../mysql/lib/protocol/sequences/Query.js | 228 + .../mysql/lib/protocol/sequences/Quit.js | 40 + .../mysql/lib/protocol/sequences/Sequence.js | 125 + .../lib/protocol/sequences/Statistics.js | 30 + .../mysql/lib/protocol/sequences/index.js | 7 + .../mysql/node_modules/safe-buffer/LICENSE | 21 + .../mysql/node_modules/safe-buffer/README.md | 584 ++ .../mysql/node_modules/safe-buffer/index.d.ts | 187 + .../mysql/node_modules/safe-buffer/index.js | 62 + .../node_modules/safe-buffer/package.json | 37 + www2/www2/node_modules/mysql/package.json | 46 + www2/www2/node_modules/negotiator/HISTORY.md | 108 + www2/www2/node_modules/negotiator/LICENSE | 24 + www2/www2/node_modules/negotiator/README.md | 203 + www2/www2/node_modules/negotiator/index.js | 82 + .../node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + .../www2/node_modules/negotiator/package.json | 42 + www2/www2/node_modules/object-assign/index.js | 90 + www2/www2/node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 42 + .../www2/node_modules/object-assign/readme.md | 61 + .../node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + www2/www2/node_modules/object-inspect/.nycrc | 13 + .../node_modules/object-inspect/CHANGELOG.md | 389 + www2/www2/node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + .../www2/node_modules/object-inspect/index.js | 524 + .../object-inspect/package-support.json | 20 + .../node_modules/object-inspect/package.json | 99 + .../object-inspect/readme.markdown | 86 + .../object-inspect/test-core-js.js | 26 + .../object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 16 + .../node_modules/object-inspect/test/deep.js | 12 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 48 + .../node_modules/object-inspect/test/fakes.js | 29 + .../node_modules/object-inspect/test/fn.js | 76 + .../object-inspect/test/global.js | 17 + .../node_modules/object-inspect/test/has.js | 15 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + .../object-inspect/test/inspect.js | 139 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 211 + .../object-inspect/util.inspect.js | 1 + www2/www2/node_modules/on-finished/HISTORY.md | 98 + www2/www2/node_modules/on-finished/LICENSE | 23 + www2/www2/node_modules/on-finished/README.md | 162 + www2/www2/node_modules/on-finished/index.js | 234 + .../node_modules/on-finished/package.json | 39 + www2/www2/node_modules/on-headers/HISTORY.md | 21 + www2/www2/node_modules/on-headers/LICENSE | 22 + www2/www2/node_modules/on-headers/README.md | 81 + www2/www2/node_modules/on-headers/index.js | 132 + .../www2/node_modules/on-headers/package.json | 42 + www2/www2/node_modules/parseurl/HISTORY.md | 58 + www2/www2/node_modules/parseurl/LICENSE | 24 + www2/www2/node_modules/parseurl/README.md | 133 + www2/www2/node_modules/parseurl/index.js | 158 + www2/www2/node_modules/parseurl/package.json | 40 + .../node_modules/path-to-regexp/History.md | 36 + www2/www2/node_modules/path-to-regexp/LICENSE | 21 + .../node_modules/path-to-regexp/Readme.md | 35 + .../www2/node_modules/path-to-regexp/index.js | 129 + .../node_modules/path-to-regexp/package.json | 30 + .../process-nextick-args/index.js | 45 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 25 + .../process-nextick-args/readme.md | 18 + www2/www2/node_modules/proxy-addr/HISTORY.md | 161 + www2/www2/node_modules/proxy-addr/LICENSE | 22 + www2/www2/node_modules/proxy-addr/README.md | 139 + www2/www2/node_modules/proxy-addr/index.js | 327 + .../www2/node_modules/proxy-addr/package.json | 47 + www2/www2/node_modules/qs/.editorconfig | 43 + www2/www2/node_modules/qs/.eslintrc | 38 + www2/www2/node_modules/qs/.github/FUNDING.yml | 12 + www2/www2/node_modules/qs/.nycrc | 13 + www2/www2/node_modules/qs/CHANGELOG.md | 546 ++ www2/www2/node_modules/qs/LICENSE.md | 29 + www2/www2/node_modules/qs/README.md | 625 ++ www2/www2/node_modules/qs/dist/qs.js | 2054 ++++ www2/www2/node_modules/qs/lib/formats.js | 23 + www2/www2/node_modules/qs/lib/index.js | 11 + www2/www2/node_modules/qs/lib/parse.js | 263 + www2/www2/node_modules/qs/lib/stringify.js | 326 + www2/www2/node_modules/qs/lib/utils.js | 252 + www2/www2/node_modules/qs/package.json | 77 + www2/www2/node_modules/qs/test/parse.js | 855 ++ www2/www2/node_modules/qs/test/stringify.js | 909 ++ www2/www2/node_modules/qs/test/utils.js | 136 + .../www2/node_modules/random-bytes/HISTORY.md | 4 + www2/www2/node_modules/random-bytes/LICENSE | 21 + www2/www2/node_modules/random-bytes/README.md | 77 + www2/www2/node_modules/random-bytes/index.js | 101 + .../node_modules/random-bytes/package.json | 36 + .../www2/node_modules/range-parser/HISTORY.md | 56 + www2/www2/node_modules/range-parser/LICENSE | 23 + www2/www2/node_modules/range-parser/README.md | 84 + www2/www2/node_modules/range-parser/index.js | 162 + .../node_modules/range-parser/package.json | 44 + www2/www2/node_modules/raw-body/HISTORY.md | 308 + www2/www2/node_modules/raw-body/LICENSE | 22 + www2/www2/node_modules/raw-body/README.md | 223 + www2/www2/node_modules/raw-body/SECURITY.md | 24 + www2/www2/node_modules/raw-body/index.d.ts | 87 + www2/www2/node_modules/raw-body/index.js | 336 + www2/www2/node_modules/raw-body/package.json | 49 + .../node_modules/readable-stream/.travis.yml | 34 + .../readable-stream/CONTRIBUTING.md | 38 + .../readable-stream/GOVERNANCE.md | 136 + .../www2/node_modules/readable-stream/LICENSE | 47 + .../node_modules/readable-stream/README.md | 58 + .../doc/wg-meetings/2015-01-30.md | 60 + .../readable-stream/duplex-browser.js | 1 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 131 + .../lib/_stream_passthrough.js | 47 + .../readable-stream/lib/_stream_readable.js | 1019 ++ .../readable-stream/lib/_stream_transform.js | 214 + .../readable-stream/lib/_stream_writable.js | 687 ++ .../lib/internal/streams/BufferList.js | 79 + .../lib/internal/streams/destroy.js | 74 + .../lib/internal/streams/stream-browser.js | 1 + .../lib/internal/streams/stream.js | 1 + .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 ++ .../node_modules/safe-buffer/index.d.ts | 187 + .../node_modules/safe-buffer/index.js | 62 + .../node_modules/safe-buffer/package.json | 37 + .../node_modules/readable-stream/package.json | 52 + .../readable-stream/passthrough.js | 1 + .../readable-stream/readable-browser.js | 7 + .../node_modules/readable-stream/readable.js | 19 + .../node_modules/readable-stream/transform.js | 1 + .../readable-stream/writable-browser.js | 1 + .../node_modules/readable-stream/writable.js | 8 + www2/www2/node_modules/safe-buffer/LICENSE | 21 + www2/www2/node_modules/safe-buffer/README.md | 584 ++ www2/www2/node_modules/safe-buffer/index.d.ts | 187 + www2/www2/node_modules/safe-buffer/index.js | 65 + .../node_modules/safe-buffer/package.json | 51 + www2/www2/node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + www2/www2/node_modules/safer-buffer/Readme.md | 156 + .../node_modules/safer-buffer/dangerous.js | 58 + .../node_modules/safer-buffer/package.json | 34 + www2/www2/node_modules/safer-buffer/safer.js | 77 + www2/www2/node_modules/safer-buffer/tests.js | 406 + www2/www2/node_modules/send/HISTORY.md | 521 + www2/www2/node_modules/send/LICENSE | 23 + www2/www2/node_modules/send/README.md | 327 + www2/www2/node_modules/send/SECURITY.md | 24 + www2/www2/node_modules/send/index.js | 1143 +++ .../send/node_modules/ms/index.js | 162 + .../send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + .../send/node_modules/ms/readme.md | 59 + www2/www2/node_modules/send/package.json | 62 + .../www2/node_modules/serve-static/HISTORY.md | 471 + www2/www2/node_modules/serve-static/LICENSE | 25 + www2/www2/node_modules/serve-static/README.md | 257 + www2/www2/node_modules/serve-static/index.js | 210 + .../node_modules/serve-static/package.json | 42 + .../set-function-length/.eslintrc | 27 + .../set-function-length/.github/FUNDING.yml | 12 + .../node_modules/set-function-length/.nycrc | 13 + .../set-function-length/CHANGELOG.md | 70 + .../node_modules/set-function-length/LICENSE | 21 + .../set-function-length/README.md | 56 + .../node_modules/set-function-length/env.d.ts | 9 + .../node_modules/set-function-length/env.js | 25 + .../set-function-length/index.d.ts | 7 + .../node_modules/set-function-length/index.js | 42 + .../set-function-length/package.json | 102 + .../set-function-length/tsconfig.json | 9 + www2/www2/node_modules/setprototypeof/LICENSE | 13 + .../node_modules/setprototypeof/README.md | 31 + .../node_modules/setprototypeof/index.d.ts | 2 + .../www2/node_modules/setprototypeof/index.js | 17 + .../node_modules/setprototypeof/package.json | 38 + .../node_modules/setprototypeof/test/index.js | 24 + .../node_modules/side-channel/.editorconfig | 9 + www2/www2/node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + www2/www2/node_modules/side-channel/.nycrc | 13 + .../node_modules/side-channel/CHANGELOG.md | 95 + www2/www2/node_modules/side-channel/LICENSE | 21 + www2/www2/node_modules/side-channel/README.md | 2 + .../www2/node_modules/side-channel/index.d.ts | 27 + www2/www2/node_modules/side-channel/index.js | 129 + .../node_modules/side-channel/package.json | 84 + .../node_modules/side-channel/test/index.js | 83 + .../node_modules/side-channel/tsconfig.json | 50 + www2/www2/node_modules/sqlstring/HISTORY.md | 43 + www2/www2/node_modules/sqlstring/LICENSE | 19 + www2/www2/node_modules/sqlstring/README.md | 206 + www2/www2/node_modules/sqlstring/index.js | 1 + .../node_modules/sqlstring/lib/SqlString.js | 237 + www2/www2/node_modules/sqlstring/package.json | 47 + www2/www2/node_modules/statuses/HISTORY.md | 82 + www2/www2/node_modules/statuses/LICENSE | 23 + www2/www2/node_modules/statuses/README.md | 136 + www2/www2/node_modules/statuses/codes.json | 65 + www2/www2/node_modules/statuses/index.js | 146 + www2/www2/node_modules/statuses/package.json | 49 + .../node_modules/streamsearch/.eslintrc.js | 5 + .../streamsearch/.github/workflows/ci.yml | 24 + .../streamsearch/.github/workflows/lint.yml | 23 + www2/www2/node_modules/streamsearch/LICENSE | 19 + www2/www2/node_modules/streamsearch/README.md | 95 + .../node_modules/streamsearch/lib/sbmh.js | 267 + .../node_modules/streamsearch/package.json | 34 + .../node_modules/streamsearch/test/test.js | 70 + .../node_modules/string_decoder/.travis.yml | 50 + www2/www2/node_modules/string_decoder/LICENSE | 48 + .../node_modules/string_decoder/README.md | 47 + .../string_decoder/lib/string_decoder.js | 296 + .../node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 ++ .../node_modules/safe-buffer/index.d.ts | 187 + .../node_modules/safe-buffer/index.js | 62 + .../node_modules/safe-buffer/package.json | 37 + .../node_modules/string_decoder/package.json | 31 + .../www2/node_modules/toidentifier/HISTORY.md | 9 + www2/www2/node_modules/toidentifier/LICENSE | 21 + www2/www2/node_modules/toidentifier/README.md | 61 + www2/www2/node_modules/toidentifier/index.js | 32 + .../node_modules/toidentifier/package.json | 38 + www2/www2/node_modules/type-is/HISTORY.md | 259 + www2/www2/node_modules/type-is/LICENSE | 23 + www2/www2/node_modules/type-is/README.md | 170 + www2/www2/node_modules/type-is/index.js | 266 + www2/www2/node_modules/type-is/package.json | 45 + www2/www2/node_modules/typedarray/.travis.yml | 4 + www2/www2/node_modules/typedarray/LICENSE | 35 + .../node_modules/typedarray/example/tarray.js | 4 + www2/www2/node_modules/typedarray/index.js | 630 ++ .../www2/node_modules/typedarray/package.json | 55 + .../node_modules/typedarray/readme.markdown | 61 + .../typedarray/test/server/undef_globals.js | 19 + .../node_modules/typedarray/test/tarray.js | 10 + www2/www2/node_modules/uid-safe/HISTORY.md | 61 + www2/www2/node_modules/uid-safe/LICENSE | 22 + www2/www2/node_modules/uid-safe/README.md | 77 + www2/www2/node_modules/uid-safe/index.js | 107 + www2/www2/node_modules/uid-safe/package.json | 46 + www2/www2/node_modules/unpipe/HISTORY.md | 4 + www2/www2/node_modules/unpipe/LICENSE | 22 + www2/www2/node_modules/unpipe/README.md | 43 + www2/www2/node_modules/unpipe/index.js | 69 + www2/www2/node_modules/unpipe/package.json | 27 + .../node_modules/util-deprecate/History.md | 16 + www2/www2/node_modules/util-deprecate/LICENSE | 24 + .../node_modules/util-deprecate/README.md | 53 + .../node_modules/util-deprecate/browser.js | 67 + www2/www2/node_modules/util-deprecate/node.js | 6 + .../node_modules/util-deprecate/package.json | 27 + www2/www2/node_modules/utils-merge/.npmignore | 9 + www2/www2/node_modules/utils-merge/LICENSE | 20 + www2/www2/node_modules/utils-merge/README.md | 34 + www2/www2/node_modules/utils-merge/index.js | 23 + .../node_modules/utils-merge/package.json | 40 + www2/www2/node_modules/vary/HISTORY.md | 39 + www2/www2/node_modules/vary/LICENSE | 22 + www2/www2/node_modules/vary/README.md | 101 + www2/www2/node_modules/vary/index.js | 149 + www2/www2/node_modules/vary/package.json | 43 + www2/www2/node_modules/xtend/.jshintrc | 30 + www2/www2/node_modules/xtend/LICENSE | 20 + www2/www2/node_modules/xtend/README.md | 32 + www2/www2/node_modules/xtend/immutable.js | 19 + www2/www2/node_modules/xtend/mutable.js | 17 + www2/www2/node_modules/xtend/package.json | 55 + www2/www2/node_modules/xtend/test.js | 103 + www2/www2/package-lock.json | 943 ++ www2/www2/package.json | 10 + www2/www2/sql/mailrecords.sql | 42 + www2/www2/static/Untitled-1.html | 33 + www2/www2/static/form.html | 93 + www2/www2/static/logo.png | Bin 0 -> 5074 bytes www2/www2/static/style.css | 105 + www2/www2/static/welcome.html | 152 + www2/www2/static/welcome_bg.png | Bin 0 -> 44047 bytes www2/www2/static/work1.html | 222 + www2/www2/test.js | 38 + www2/www2/uploads/3.PNG | Bin 0 -> 414783 bytes www2/www2/uploads/4.PNG | Bin 0 -> 312705 bytes www2/www2/uploads/5.PNG | Bin 0 -> 386938 bytes .../uploads/6æ18æ¥-å°é¢.jpg | Bin 0 -> 165779 bytes www2/www2/uploads/7.PNG | Bin 0 -> 371367 bytes .../uploads/97aa9d1125106a7414f1dafcddd6dffd | Bin 0 -> 414783 bytes ...ç¨è§£æå¨0618 (1)_Page1.png | Bin 0 -> 804372 bytes ...ç¨è§£æå¨0618 (1)_Page3.png | Bin 0 -> 372174 bytes .../www2/uploads/ä¸çº§æµæ°´.png | Bin 0 -> 83031 bytes www2/www2/uploads/第ä¸é¡µ0619.PNG | Bin 0 -> 371367 bytes www2/www2/uploads/第ä¸é¡µ.png | Bin 0 -> 970794 bytes www2/www2/uploads/第ä¸é¡µ0619.PNG | Bin 0 -> 414783 bytes www2/www2/uploads/第äºé¡µ0619.PNG | Bin 0 -> 386938 bytes www2/www2/uploads/éå®ä½.png | Bin 0 -> 21378 bytes 857 files changed, 112825 insertions(+) create mode 100644 www2/www2/main.js create mode 100644 www2/www2/node_modules/.bin/mime create mode 100644 www2/www2/node_modules/.bin/mime.cmd create mode 100644 www2/www2/node_modules/.bin/mime.ps1 create mode 100644 www2/www2/node_modules/.bin/mkdirp create mode 100644 www2/www2/node_modules/.bin/mkdirp.cmd create mode 100644 www2/www2/node_modules/.bin/mkdirp.ps1 create mode 100644 www2/www2/node_modules/.package-lock.json create mode 100644 www2/www2/node_modules/accepts/HISTORY.md create mode 100644 www2/www2/node_modules/accepts/LICENSE create mode 100644 www2/www2/node_modules/accepts/README.md create mode 100644 www2/www2/node_modules/accepts/index.js create mode 100644 www2/www2/node_modules/accepts/package.json create mode 100644 www2/www2/node_modules/append-field/.npmignore create mode 100644 www2/www2/node_modules/append-field/LICENSE create mode 100644 www2/www2/node_modules/append-field/README.md create mode 100644 www2/www2/node_modules/append-field/index.js create mode 100644 www2/www2/node_modules/append-field/lib/parse-path.js create mode 100644 www2/www2/node_modules/append-field/lib/set-value.js create mode 100644 www2/www2/node_modules/append-field/package.json create mode 100644 www2/www2/node_modules/append-field/test/forms.js create mode 100644 www2/www2/node_modules/array-flatten/LICENSE create mode 100644 www2/www2/node_modules/array-flatten/README.md create mode 100644 www2/www2/node_modules/array-flatten/array-flatten.js create mode 100644 www2/www2/node_modules/array-flatten/package.json create mode 100644 www2/www2/node_modules/bignumber.js/CHANGELOG.md create mode 100644 www2/www2/node_modules/bignumber.js/LICENCE create mode 100644 www2/www2/node_modules/bignumber.js/README.md create mode 100644 www2/www2/node_modules/bignumber.js/bignumber.d.ts create mode 100644 www2/www2/node_modules/bignumber.js/bignumber.js create mode 100644 www2/www2/node_modules/bignumber.js/bignumber.min.js create mode 100644 www2/www2/node_modules/bignumber.js/bignumber.min.js.map create mode 100644 www2/www2/node_modules/bignumber.js/bignumber.mjs create mode 100644 www2/www2/node_modules/bignumber.js/doc/API.html create mode 100644 www2/www2/node_modules/bignumber.js/package.json create mode 100644 www2/www2/node_modules/body-parser/HISTORY.md create mode 100644 www2/www2/node_modules/body-parser/LICENSE create mode 100644 www2/www2/node_modules/body-parser/README.md create mode 100644 www2/www2/node_modules/body-parser/SECURITY.md create mode 100644 www2/www2/node_modules/body-parser/index.js create mode 100644 www2/www2/node_modules/body-parser/lib/read.js create mode 100644 www2/www2/node_modules/body-parser/lib/types/json.js create mode 100644 www2/www2/node_modules/body-parser/lib/types/raw.js create mode 100644 www2/www2/node_modules/body-parser/lib/types/text.js create mode 100644 www2/www2/node_modules/body-parser/lib/types/urlencoded.js create mode 100644 www2/www2/node_modules/body-parser/package.json create mode 100644 www2/www2/node_modules/buffer-from/LICENSE create mode 100644 www2/www2/node_modules/buffer-from/index.js create mode 100644 www2/www2/node_modules/buffer-from/package.json create mode 100644 www2/www2/node_modules/buffer-from/readme.md create mode 100644 www2/www2/node_modules/busboy/.eslintrc.js create mode 100644 www2/www2/node_modules/busboy/.github/workflows/ci.yml create mode 100644 www2/www2/node_modules/busboy/.github/workflows/lint.yml create mode 100644 www2/www2/node_modules/busboy/LICENSE create mode 100644 www2/www2/node_modules/busboy/README.md create mode 100644 www2/www2/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js create mode 100644 www2/www2/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js create mode 100644 www2/www2/node_modules/busboy/bench/bench-multipart-files-100mb-big.js create mode 100644 www2/www2/node_modules/busboy/bench/bench-multipart-files-100mb-small.js create mode 100644 www2/www2/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js create mode 100644 www2/www2/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js create mode 100644 www2/www2/node_modules/busboy/lib/index.js create mode 100644 www2/www2/node_modules/busboy/lib/types/multipart.js create mode 100644 www2/www2/node_modules/busboy/lib/types/urlencoded.js create mode 100644 www2/www2/node_modules/busboy/lib/utils.js create mode 100644 www2/www2/node_modules/busboy/package.json create mode 100644 www2/www2/node_modules/busboy/test/common.js create mode 100644 www2/www2/node_modules/busboy/test/test-types-multipart-charsets.js create mode 100644 www2/www2/node_modules/busboy/test/test-types-multipart-stream-pause.js create mode 100644 www2/www2/node_modules/busboy/test/test-types-multipart.js create mode 100644 www2/www2/node_modules/busboy/test/test-types-urlencoded.js create mode 100644 www2/www2/node_modules/busboy/test/test.js create mode 100644 www2/www2/node_modules/bytes/History.md create mode 100644 www2/www2/node_modules/bytes/LICENSE create mode 100644 www2/www2/node_modules/bytes/Readme.md create mode 100644 www2/www2/node_modules/bytes/index.js create mode 100644 www2/www2/node_modules/bytes/package.json create mode 100644 www2/www2/node_modules/call-bind/.eslintignore create mode 100644 www2/www2/node_modules/call-bind/.eslintrc create mode 100644 www2/www2/node_modules/call-bind/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/call-bind/.nycrc create mode 100644 www2/www2/node_modules/call-bind/CHANGELOG.md create mode 100644 www2/www2/node_modules/call-bind/LICENSE create mode 100644 www2/www2/node_modules/call-bind/README.md create mode 100644 www2/www2/node_modules/call-bind/callBound.js create mode 100644 www2/www2/node_modules/call-bind/index.js create mode 100644 www2/www2/node_modules/call-bind/package.json create mode 100644 www2/www2/node_modules/call-bind/test/callBound.js create mode 100644 www2/www2/node_modules/call-bind/test/index.js create mode 100644 www2/www2/node_modules/concat-stream/LICENSE create mode 100644 www2/www2/node_modules/concat-stream/index.js create mode 100644 www2/www2/node_modules/concat-stream/package.json create mode 100644 www2/www2/node_modules/concat-stream/readme.md create mode 100644 www2/www2/node_modules/content-disposition/HISTORY.md create mode 100644 www2/www2/node_modules/content-disposition/LICENSE create mode 100644 www2/www2/node_modules/content-disposition/README.md create mode 100644 www2/www2/node_modules/content-disposition/index.js create mode 100644 www2/www2/node_modules/content-disposition/package.json create mode 100644 www2/www2/node_modules/content-type/HISTORY.md create mode 100644 www2/www2/node_modules/content-type/LICENSE create mode 100644 www2/www2/node_modules/content-type/README.md create mode 100644 www2/www2/node_modules/content-type/index.js create mode 100644 www2/www2/node_modules/content-type/package.json create mode 100644 www2/www2/node_modules/cookie-signature/.npmignore create mode 100644 www2/www2/node_modules/cookie-signature/History.md create mode 100644 www2/www2/node_modules/cookie-signature/Readme.md create mode 100644 www2/www2/node_modules/cookie-signature/index.js create mode 100644 www2/www2/node_modules/cookie-signature/package.json create mode 100644 www2/www2/node_modules/cookie/HISTORY.md create mode 100644 www2/www2/node_modules/cookie/LICENSE create mode 100644 www2/www2/node_modules/cookie/README.md create mode 100644 www2/www2/node_modules/cookie/SECURITY.md create mode 100644 www2/www2/node_modules/cookie/index.js create mode 100644 www2/www2/node_modules/cookie/package.json create mode 100644 www2/www2/node_modules/core-util-is/LICENSE create mode 100644 www2/www2/node_modules/core-util-is/README.md create mode 100644 www2/www2/node_modules/core-util-is/lib/util.js create mode 100644 www2/www2/node_modules/core-util-is/package.json create mode 100644 www2/www2/node_modules/debug/.coveralls.yml create mode 100644 www2/www2/node_modules/debug/.eslintrc create mode 100644 www2/www2/node_modules/debug/.npmignore create mode 100644 www2/www2/node_modules/debug/.travis.yml create mode 100644 www2/www2/node_modules/debug/CHANGELOG.md create mode 100644 www2/www2/node_modules/debug/LICENSE create mode 100644 www2/www2/node_modules/debug/Makefile create mode 100644 www2/www2/node_modules/debug/README.md create mode 100644 www2/www2/node_modules/debug/component.json create mode 100644 www2/www2/node_modules/debug/karma.conf.js create mode 100644 www2/www2/node_modules/debug/node.js create mode 100644 www2/www2/node_modules/debug/package.json create mode 100644 www2/www2/node_modules/debug/src/browser.js create mode 100644 www2/www2/node_modules/debug/src/debug.js create mode 100644 www2/www2/node_modules/debug/src/index.js create mode 100644 www2/www2/node_modules/debug/src/inspector-log.js create mode 100644 www2/www2/node_modules/debug/src/node.js create mode 100644 www2/www2/node_modules/define-data-property/.eslintrc create mode 100644 www2/www2/node_modules/define-data-property/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/define-data-property/.nycrc create mode 100644 www2/www2/node_modules/define-data-property/CHANGELOG.md create mode 100644 www2/www2/node_modules/define-data-property/LICENSE create mode 100644 www2/www2/node_modules/define-data-property/README.md create mode 100644 www2/www2/node_modules/define-data-property/index.d.ts create mode 100644 www2/www2/node_modules/define-data-property/index.js create mode 100644 www2/www2/node_modules/define-data-property/package.json create mode 100644 www2/www2/node_modules/define-data-property/test/index.js create mode 100644 www2/www2/node_modules/define-data-property/tsconfig.json create mode 100644 www2/www2/node_modules/depd/History.md create mode 100644 www2/www2/node_modules/depd/LICENSE create mode 100644 www2/www2/node_modules/depd/Readme.md create mode 100644 www2/www2/node_modules/depd/index.js create mode 100644 www2/www2/node_modules/depd/lib/browser/index.js create mode 100644 www2/www2/node_modules/depd/package.json create mode 100644 www2/www2/node_modules/destroy/LICENSE create mode 100644 www2/www2/node_modules/destroy/README.md create mode 100644 www2/www2/node_modules/destroy/index.js create mode 100644 www2/www2/node_modules/destroy/package.json create mode 100644 www2/www2/node_modules/ee-first/LICENSE create mode 100644 www2/www2/node_modules/ee-first/README.md create mode 100644 www2/www2/node_modules/ee-first/index.js create mode 100644 www2/www2/node_modules/ee-first/package.json create mode 100644 www2/www2/node_modules/encodeurl/HISTORY.md create mode 100644 www2/www2/node_modules/encodeurl/LICENSE create mode 100644 www2/www2/node_modules/encodeurl/README.md create mode 100644 www2/www2/node_modules/encodeurl/index.js create mode 100644 www2/www2/node_modules/encodeurl/package.json create mode 100644 www2/www2/node_modules/es-define-property/.eslintrc create mode 100644 www2/www2/node_modules/es-define-property/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/es-define-property/.nycrc create mode 100644 www2/www2/node_modules/es-define-property/CHANGELOG.md create mode 100644 www2/www2/node_modules/es-define-property/LICENSE create mode 100644 www2/www2/node_modules/es-define-property/README.md create mode 100644 www2/www2/node_modules/es-define-property/index.d.ts create mode 100644 www2/www2/node_modules/es-define-property/index.js create mode 100644 www2/www2/node_modules/es-define-property/package.json create mode 100644 www2/www2/node_modules/es-define-property/test/index.js create mode 100644 www2/www2/node_modules/es-define-property/tsconfig.json create mode 100644 www2/www2/node_modules/es-errors/.eslintrc create mode 100644 www2/www2/node_modules/es-errors/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/es-errors/CHANGELOG.md create mode 100644 www2/www2/node_modules/es-errors/LICENSE create mode 100644 www2/www2/node_modules/es-errors/README.md create mode 100644 www2/www2/node_modules/es-errors/eval.d.ts create mode 100644 www2/www2/node_modules/es-errors/eval.js create mode 100644 www2/www2/node_modules/es-errors/index.d.ts create mode 100644 www2/www2/node_modules/es-errors/index.js create mode 100644 www2/www2/node_modules/es-errors/package.json create mode 100644 www2/www2/node_modules/es-errors/range.d.ts create mode 100644 www2/www2/node_modules/es-errors/range.js create mode 100644 www2/www2/node_modules/es-errors/ref.d.ts create mode 100644 www2/www2/node_modules/es-errors/ref.js create mode 100644 www2/www2/node_modules/es-errors/syntax.d.ts create mode 100644 www2/www2/node_modules/es-errors/syntax.js create mode 100644 www2/www2/node_modules/es-errors/test/index.js create mode 100644 www2/www2/node_modules/es-errors/tsconfig.json create mode 100644 www2/www2/node_modules/es-errors/type.d.ts create mode 100644 www2/www2/node_modules/es-errors/type.js create mode 100644 www2/www2/node_modules/es-errors/uri.d.ts create mode 100644 www2/www2/node_modules/es-errors/uri.js create mode 100644 www2/www2/node_modules/escape-html/LICENSE create mode 100644 www2/www2/node_modules/escape-html/Readme.md create mode 100644 www2/www2/node_modules/escape-html/index.js create mode 100644 www2/www2/node_modules/escape-html/package.json create mode 100644 www2/www2/node_modules/etag/HISTORY.md create mode 100644 www2/www2/node_modules/etag/LICENSE create mode 100644 www2/www2/node_modules/etag/README.md create mode 100644 www2/www2/node_modules/etag/index.js create mode 100644 www2/www2/node_modules/etag/package.json create mode 100644 www2/www2/node_modules/express-fileupload/.circleci/config.yml create mode 100644 www2/www2/node_modules/express-fileupload/.eslintignore create mode 100644 www2/www2/node_modules/express-fileupload/.eslintrc create mode 100644 www2/www2/node_modules/express-fileupload/.mocharc.json create mode 100644 www2/www2/node_modules/express-fileupload/.prettierrc create mode 100644 www2/www2/node_modules/express-fileupload/LICENSE create mode 100644 www2/www2/node_modules/express-fileupload/README.md create mode 100644 www2/www2/node_modules/express-fileupload/SECURITY.md create mode 100644 www2/www2/node_modules/express-fileupload/example/README.md create mode 100644 www2/www2/node_modules/express-fileupload/example/index.html create mode 100644 www2/www2/node_modules/express-fileupload/example/server.js create mode 100644 www2/www2/node_modules/express-fileupload/example/uploads/placeholder.txt create mode 100644 www2/www2/node_modules/express-fileupload/lib/fileFactory.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/index.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/isEligibleRequest.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/memHandler.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/processMultipart.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/processNested.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/tempFileHandler.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/uploadtimer.js create mode 100644 www2/www2/node_modules/express-fileupload/lib/utilities.js create mode 100644 www2/www2/node_modules/express-fileupload/package.json create mode 100644 www2/www2/node_modules/express-fileupload/test/fileFactory.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/fileLimitUploads.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/isEligibleRequest.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/multipartFields.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/multipartUploads.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/options.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/posttests.js create mode 100644 www2/www2/node_modules/express-fileupload/test/pretests.js create mode 100644 www2/www2/node_modules/express-fileupload/test/processNested.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/server.js create mode 100644 www2/www2/node_modules/express-fileupload/test/tempFile.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/uploadtimer.spec.js create mode 100644 www2/www2/node_modules/express-fileupload/test/utilities.spec.js create mode 100644 www2/www2/node_modules/express-session/HISTORY.md create mode 100644 www2/www2/node_modules/express-session/LICENSE create mode 100644 www2/www2/node_modules/express-session/README.md create mode 100644 www2/www2/node_modules/express-session/index.js create mode 100644 www2/www2/node_modules/express-session/node_modules/cookie-signature/History.md create mode 100644 www2/www2/node_modules/express-session/node_modules/cookie-signature/Readme.md create mode 100644 www2/www2/node_modules/express-session/node_modules/cookie-signature/index.js create mode 100644 www2/www2/node_modules/express-session/node_modules/cookie-signature/package.json create mode 100644 www2/www2/node_modules/express-session/package.json create mode 100644 www2/www2/node_modules/express-session/session/cookie.js create mode 100644 www2/www2/node_modules/express-session/session/memory.js create mode 100644 www2/www2/node_modules/express-session/session/session.js create mode 100644 www2/www2/node_modules/express-session/session/store.js create mode 100644 www2/www2/node_modules/express/History.md create mode 100644 www2/www2/node_modules/express/LICENSE create mode 100644 www2/www2/node_modules/express/Readme.md create mode 100644 www2/www2/node_modules/express/index.js create mode 100644 www2/www2/node_modules/express/lib/application.js create mode 100644 www2/www2/node_modules/express/lib/express.js create mode 100644 www2/www2/node_modules/express/lib/middleware/init.js create mode 100644 www2/www2/node_modules/express/lib/middleware/query.js create mode 100644 www2/www2/node_modules/express/lib/request.js create mode 100644 www2/www2/node_modules/express/lib/response.js create mode 100644 www2/www2/node_modules/express/lib/router/index.js create mode 100644 www2/www2/node_modules/express/lib/router/layer.js create mode 100644 www2/www2/node_modules/express/lib/router/route.js create mode 100644 www2/www2/node_modules/express/lib/utils.js create mode 100644 www2/www2/node_modules/express/lib/view.js create mode 100644 www2/www2/node_modules/express/package.json create mode 100644 www2/www2/node_modules/finalhandler/HISTORY.md create mode 100644 www2/www2/node_modules/finalhandler/LICENSE create mode 100644 www2/www2/node_modules/finalhandler/README.md create mode 100644 www2/www2/node_modules/finalhandler/SECURITY.md create mode 100644 www2/www2/node_modules/finalhandler/index.js create mode 100644 www2/www2/node_modules/finalhandler/package.json create mode 100644 www2/www2/node_modules/forwarded/HISTORY.md create mode 100644 www2/www2/node_modules/forwarded/LICENSE create mode 100644 www2/www2/node_modules/forwarded/README.md create mode 100644 www2/www2/node_modules/forwarded/index.js create mode 100644 www2/www2/node_modules/forwarded/package.json create mode 100644 www2/www2/node_modules/fresh/HISTORY.md create mode 100644 www2/www2/node_modules/fresh/LICENSE create mode 100644 www2/www2/node_modules/fresh/README.md create mode 100644 www2/www2/node_modules/fresh/index.js create mode 100644 www2/www2/node_modules/fresh/package.json create mode 100644 www2/www2/node_modules/function-bind/.eslintrc create mode 100644 www2/www2/node_modules/function-bind/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/function-bind/.github/SECURITY.md create mode 100644 www2/www2/node_modules/function-bind/.nycrc create mode 100644 www2/www2/node_modules/function-bind/CHANGELOG.md create mode 100644 www2/www2/node_modules/function-bind/LICENSE create mode 100644 www2/www2/node_modules/function-bind/README.md create mode 100644 www2/www2/node_modules/function-bind/implementation.js create mode 100644 www2/www2/node_modules/function-bind/index.js create mode 100644 www2/www2/node_modules/function-bind/package.json create mode 100644 www2/www2/node_modules/function-bind/test/.eslintrc create mode 100644 www2/www2/node_modules/function-bind/test/index.js create mode 100644 www2/www2/node_modules/get-intrinsic/.eslintrc create mode 100644 www2/www2/node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/get-intrinsic/.nycrc create mode 100644 www2/www2/node_modules/get-intrinsic/CHANGELOG.md create mode 100644 www2/www2/node_modules/get-intrinsic/LICENSE create mode 100644 www2/www2/node_modules/get-intrinsic/README.md create mode 100644 www2/www2/node_modules/get-intrinsic/index.js create mode 100644 www2/www2/node_modules/get-intrinsic/package.json create mode 100644 www2/www2/node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 www2/www2/node_modules/gopd/.eslintrc create mode 100644 www2/www2/node_modules/gopd/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/gopd/CHANGELOG.md create mode 100644 www2/www2/node_modules/gopd/LICENSE create mode 100644 www2/www2/node_modules/gopd/README.md create mode 100644 www2/www2/node_modules/gopd/index.js create mode 100644 www2/www2/node_modules/gopd/package.json create mode 100644 www2/www2/node_modules/gopd/test/index.js create mode 100644 www2/www2/node_modules/has-property-descriptors/.eslintrc create mode 100644 www2/www2/node_modules/has-property-descriptors/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/has-property-descriptors/.nycrc create mode 100644 www2/www2/node_modules/has-property-descriptors/CHANGELOG.md create mode 100644 www2/www2/node_modules/has-property-descriptors/LICENSE create mode 100644 www2/www2/node_modules/has-property-descriptors/README.md create mode 100644 www2/www2/node_modules/has-property-descriptors/index.js create mode 100644 www2/www2/node_modules/has-property-descriptors/package.json create mode 100644 www2/www2/node_modules/has-property-descriptors/test/index.js create mode 100644 www2/www2/node_modules/has-proto/.eslintrc create mode 100644 www2/www2/node_modules/has-proto/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/has-proto/CHANGELOG.md create mode 100644 www2/www2/node_modules/has-proto/LICENSE create mode 100644 www2/www2/node_modules/has-proto/README.md create mode 100644 www2/www2/node_modules/has-proto/index.d.ts create mode 100644 www2/www2/node_modules/has-proto/index.js create mode 100644 www2/www2/node_modules/has-proto/package.json create mode 100644 www2/www2/node_modules/has-proto/test/index.js create mode 100644 www2/www2/node_modules/has-proto/tsconfig.json create mode 100644 www2/www2/node_modules/has-symbols/.eslintrc create mode 100644 www2/www2/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/has-symbols/.nycrc create mode 100644 www2/www2/node_modules/has-symbols/CHANGELOG.md create mode 100644 www2/www2/node_modules/has-symbols/LICENSE create mode 100644 www2/www2/node_modules/has-symbols/README.md create mode 100644 www2/www2/node_modules/has-symbols/index.js create mode 100644 www2/www2/node_modules/has-symbols/package.json create mode 100644 www2/www2/node_modules/has-symbols/shams.js create mode 100644 www2/www2/node_modules/has-symbols/test/index.js create mode 100644 www2/www2/node_modules/has-symbols/test/shams/core-js.js create mode 100644 www2/www2/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 www2/www2/node_modules/has-symbols/test/tests.js create mode 100644 www2/www2/node_modules/hasown/.eslintrc create mode 100644 www2/www2/node_modules/hasown/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/hasown/.nycrc create mode 100644 www2/www2/node_modules/hasown/CHANGELOG.md create mode 100644 www2/www2/node_modules/hasown/LICENSE create mode 100644 www2/www2/node_modules/hasown/README.md create mode 100644 www2/www2/node_modules/hasown/index.d.ts create mode 100644 www2/www2/node_modules/hasown/index.js create mode 100644 www2/www2/node_modules/hasown/package.json create mode 100644 www2/www2/node_modules/hasown/tsconfig.json create mode 100644 www2/www2/node_modules/http-errors/HISTORY.md create mode 100644 www2/www2/node_modules/http-errors/LICENSE create mode 100644 www2/www2/node_modules/http-errors/README.md create mode 100644 www2/www2/node_modules/http-errors/index.js create mode 100644 www2/www2/node_modules/http-errors/package.json create mode 100644 www2/www2/node_modules/iconv-lite/Changelog.md create mode 100644 www2/www2/node_modules/iconv-lite/LICENSE create mode 100644 www2/www2/node_modules/iconv-lite/README.md create mode 100644 www2/www2/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/index.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/internal.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 www2/www2/node_modules/iconv-lite/encodings/utf16.js create mode 100644 www2/www2/node_modules/iconv-lite/encodings/utf7.js create mode 100644 www2/www2/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 www2/www2/node_modules/iconv-lite/lib/extend-node.js create mode 100644 www2/www2/node_modules/iconv-lite/lib/index.d.ts create mode 100644 www2/www2/node_modules/iconv-lite/lib/index.js create mode 100644 www2/www2/node_modules/iconv-lite/lib/streams.js create mode 100644 www2/www2/node_modules/iconv-lite/package.json create mode 100644 www2/www2/node_modules/inherits/LICENSE create mode 100644 www2/www2/node_modules/inherits/README.md create mode 100644 www2/www2/node_modules/inherits/inherits.js create mode 100644 www2/www2/node_modules/inherits/inherits_browser.js create mode 100644 www2/www2/node_modules/inherits/package.json create mode 100644 www2/www2/node_modules/ipaddr.js/LICENSE create mode 100644 www2/www2/node_modules/ipaddr.js/README.md create mode 100644 www2/www2/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 www2/www2/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 www2/www2/node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 www2/www2/node_modules/ipaddr.js/package.json create mode 100644 www2/www2/node_modules/isarray/.npmignore create mode 100644 www2/www2/node_modules/isarray/.travis.yml create mode 100644 www2/www2/node_modules/isarray/Makefile create mode 100644 www2/www2/node_modules/isarray/README.md create mode 100644 www2/www2/node_modules/isarray/component.json create mode 100644 www2/www2/node_modules/isarray/index.js create mode 100644 www2/www2/node_modules/isarray/package.json create mode 100644 www2/www2/node_modules/isarray/test.js create mode 100644 www2/www2/node_modules/media-typer/HISTORY.md create mode 100644 www2/www2/node_modules/media-typer/LICENSE create mode 100644 www2/www2/node_modules/media-typer/README.md create mode 100644 www2/www2/node_modules/media-typer/index.js create mode 100644 www2/www2/node_modules/media-typer/package.json create mode 100644 www2/www2/node_modules/merge-descriptors/HISTORY.md create mode 100644 www2/www2/node_modules/merge-descriptors/LICENSE create mode 100644 www2/www2/node_modules/merge-descriptors/README.md create mode 100644 www2/www2/node_modules/merge-descriptors/index.js create mode 100644 www2/www2/node_modules/merge-descriptors/package.json create mode 100644 www2/www2/node_modules/methods/HISTORY.md create mode 100644 www2/www2/node_modules/methods/LICENSE create mode 100644 www2/www2/node_modules/methods/README.md create mode 100644 www2/www2/node_modules/methods/index.js create mode 100644 www2/www2/node_modules/methods/package.json create mode 100644 www2/www2/node_modules/mime-db/HISTORY.md create mode 100644 www2/www2/node_modules/mime-db/LICENSE create mode 100644 www2/www2/node_modules/mime-db/README.md create mode 100644 www2/www2/node_modules/mime-db/db.json create mode 100644 www2/www2/node_modules/mime-db/index.js create mode 100644 www2/www2/node_modules/mime-db/package.json create mode 100644 www2/www2/node_modules/mime-types/HISTORY.md create mode 100644 www2/www2/node_modules/mime-types/LICENSE create mode 100644 www2/www2/node_modules/mime-types/README.md create mode 100644 www2/www2/node_modules/mime-types/index.js create mode 100644 www2/www2/node_modules/mime-types/package.json create mode 100644 www2/www2/node_modules/mime/.npmignore create mode 100644 www2/www2/node_modules/mime/CHANGELOG.md create mode 100644 www2/www2/node_modules/mime/LICENSE create mode 100644 www2/www2/node_modules/mime/README.md create mode 100644 www2/www2/node_modules/mime/cli.js create mode 100644 www2/www2/node_modules/mime/mime.js create mode 100644 www2/www2/node_modules/mime/package.json create mode 100644 www2/www2/node_modules/mime/src/build.js create mode 100644 www2/www2/node_modules/mime/src/test.js create mode 100644 www2/www2/node_modules/mime/types.json create mode 100644 www2/www2/node_modules/minimist/.eslintrc create mode 100644 www2/www2/node_modules/minimist/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/minimist/.nycrc create mode 100644 www2/www2/node_modules/minimist/CHANGELOG.md create mode 100644 www2/www2/node_modules/minimist/LICENSE create mode 100644 www2/www2/node_modules/minimist/README.md create mode 100644 www2/www2/node_modules/minimist/example/parse.js create mode 100644 www2/www2/node_modules/minimist/index.js create mode 100644 www2/www2/node_modules/minimist/package.json create mode 100644 www2/www2/node_modules/minimist/test/all_bool.js create mode 100644 www2/www2/node_modules/minimist/test/bool.js create mode 100644 www2/www2/node_modules/minimist/test/dash.js create mode 100644 www2/www2/node_modules/minimist/test/default_bool.js create mode 100644 www2/www2/node_modules/minimist/test/dotted.js create mode 100644 www2/www2/node_modules/minimist/test/kv_short.js create mode 100644 www2/www2/node_modules/minimist/test/long.js create mode 100644 www2/www2/node_modules/minimist/test/num.js create mode 100644 www2/www2/node_modules/minimist/test/parse.js create mode 100644 www2/www2/node_modules/minimist/test/parse_modified.js create mode 100644 www2/www2/node_modules/minimist/test/proto.js create mode 100644 www2/www2/node_modules/minimist/test/short.js create mode 100644 www2/www2/node_modules/minimist/test/stop_early.js create mode 100644 www2/www2/node_modules/minimist/test/unknown.js create mode 100644 www2/www2/node_modules/minimist/test/whitespace.js create mode 100644 www2/www2/node_modules/mkdirp/LICENSE create mode 100644 www2/www2/node_modules/mkdirp/bin/cmd.js create mode 100644 www2/www2/node_modules/mkdirp/bin/usage.txt create mode 100644 www2/www2/node_modules/mkdirp/index.js create mode 100644 www2/www2/node_modules/mkdirp/package.json create mode 100644 www2/www2/node_modules/mkdirp/readme.markdown create mode 100644 www2/www2/node_modules/ms/index.js create mode 100644 www2/www2/node_modules/ms/license.md create mode 100644 www2/www2/node_modules/ms/package.json create mode 100644 www2/www2/node_modules/ms/readme.md create mode 100644 www2/www2/node_modules/multer/LICENSE create mode 100644 www2/www2/node_modules/multer/README.md create mode 100644 www2/www2/node_modules/multer/index.js create mode 100644 www2/www2/node_modules/multer/lib/counter.js create mode 100644 www2/www2/node_modules/multer/lib/file-appender.js create mode 100644 www2/www2/node_modules/multer/lib/make-middleware.js create mode 100644 www2/www2/node_modules/multer/lib/multer-error.js create mode 100644 www2/www2/node_modules/multer/lib/remove-uploaded-files.js create mode 100644 www2/www2/node_modules/multer/package.json create mode 100644 www2/www2/node_modules/multer/storage/disk.js create mode 100644 www2/www2/node_modules/multer/storage/memory.js create mode 100644 www2/www2/node_modules/mysql/Changes.md create mode 100644 www2/www2/node_modules/mysql/License create mode 100644 www2/www2/node_modules/mysql/Readme.md create mode 100644 www2/www2/node_modules/mysql/index.js create mode 100644 www2/www2/node_modules/mysql/lib/Connection.js create mode 100644 www2/www2/node_modules/mysql/lib/ConnectionConfig.js create mode 100644 www2/www2/node_modules/mysql/lib/Pool.js create mode 100644 www2/www2/node_modules/mysql/lib/PoolCluster.js create mode 100644 www2/www2/node_modules/mysql/lib/PoolConfig.js create mode 100644 www2/www2/node_modules/mysql/lib/PoolConnection.js create mode 100644 www2/www2/node_modules/mysql/lib/PoolNamespace.js create mode 100644 www2/www2/node_modules/mysql/lib/PoolSelector.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/Auth.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/BufferList.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/PacketHeader.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/PacketWriter.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/Parser.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/Protocol.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/ResultSet.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/SqlString.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/Timer.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/charsets.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/client.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/errors.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/field_flags.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/server_status.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/ssl_profiles.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/constants/types.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/AuthSwitchRequestPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/AuthSwitchResponsePacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ComPingPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ComQueryPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ComQuitPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/EmptyPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/EofPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ErrorPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/Field.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/FieldPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/LocalInfileRequestPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/OkPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/RowDataPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/SSLRequestPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/StatisticsPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/packets/index.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/ChangeUser.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/Handshake.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/Ping.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/Query.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/Quit.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/Sequence.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/Statistics.js create mode 100644 www2/www2/node_modules/mysql/lib/protocol/sequences/index.js create mode 100644 www2/www2/node_modules/mysql/node_modules/safe-buffer/LICENSE create mode 100644 www2/www2/node_modules/mysql/node_modules/safe-buffer/README.md create mode 100644 www2/www2/node_modules/mysql/node_modules/safe-buffer/index.d.ts create mode 100644 www2/www2/node_modules/mysql/node_modules/safe-buffer/index.js create mode 100644 www2/www2/node_modules/mysql/node_modules/safe-buffer/package.json create mode 100644 www2/www2/node_modules/mysql/package.json create mode 100644 www2/www2/node_modules/negotiator/HISTORY.md create mode 100644 www2/www2/node_modules/negotiator/LICENSE create mode 100644 www2/www2/node_modules/negotiator/README.md create mode 100644 www2/www2/node_modules/negotiator/index.js create mode 100644 www2/www2/node_modules/negotiator/lib/charset.js create mode 100644 www2/www2/node_modules/negotiator/lib/encoding.js create mode 100644 www2/www2/node_modules/negotiator/lib/language.js create mode 100644 www2/www2/node_modules/negotiator/lib/mediaType.js create mode 100644 www2/www2/node_modules/negotiator/package.json create mode 100644 www2/www2/node_modules/object-assign/index.js create mode 100644 www2/www2/node_modules/object-assign/license create mode 100644 www2/www2/node_modules/object-assign/package.json create mode 100644 www2/www2/node_modules/object-assign/readme.md create mode 100644 www2/www2/node_modules/object-inspect/.eslintrc create mode 100644 www2/www2/node_modules/object-inspect/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/object-inspect/.nycrc create mode 100644 www2/www2/node_modules/object-inspect/CHANGELOG.md create mode 100644 www2/www2/node_modules/object-inspect/LICENSE create mode 100644 www2/www2/node_modules/object-inspect/example/all.js create mode 100644 www2/www2/node_modules/object-inspect/example/circular.js create mode 100644 www2/www2/node_modules/object-inspect/example/fn.js create mode 100644 www2/www2/node_modules/object-inspect/example/inspect.js create mode 100644 www2/www2/node_modules/object-inspect/index.js create mode 100644 www2/www2/node_modules/object-inspect/package-support.json create mode 100644 www2/www2/node_modules/object-inspect/package.json create mode 100644 www2/www2/node_modules/object-inspect/readme.markdown create mode 100644 www2/www2/node_modules/object-inspect/test-core-js.js create mode 100644 www2/www2/node_modules/object-inspect/test/bigint.js create mode 100644 www2/www2/node_modules/object-inspect/test/browser/dom.js create mode 100644 www2/www2/node_modules/object-inspect/test/circular.js create mode 100644 www2/www2/node_modules/object-inspect/test/deep.js create mode 100644 www2/www2/node_modules/object-inspect/test/element.js create mode 100644 www2/www2/node_modules/object-inspect/test/err.js create mode 100644 www2/www2/node_modules/object-inspect/test/fakes.js create mode 100644 www2/www2/node_modules/object-inspect/test/fn.js create mode 100644 www2/www2/node_modules/object-inspect/test/global.js create mode 100644 www2/www2/node_modules/object-inspect/test/has.js create mode 100644 www2/www2/node_modules/object-inspect/test/holes.js create mode 100644 www2/www2/node_modules/object-inspect/test/indent-option.js create mode 100644 www2/www2/node_modules/object-inspect/test/inspect.js create mode 100644 www2/www2/node_modules/object-inspect/test/lowbyte.js create mode 100644 www2/www2/node_modules/object-inspect/test/number.js create mode 100644 www2/www2/node_modules/object-inspect/test/quoteStyle.js create mode 100644 www2/www2/node_modules/object-inspect/test/toStringTag.js create mode 100644 www2/www2/node_modules/object-inspect/test/undef.js create mode 100644 www2/www2/node_modules/object-inspect/test/values.js create mode 100644 www2/www2/node_modules/object-inspect/util.inspect.js create mode 100644 www2/www2/node_modules/on-finished/HISTORY.md create mode 100644 www2/www2/node_modules/on-finished/LICENSE create mode 100644 www2/www2/node_modules/on-finished/README.md create mode 100644 www2/www2/node_modules/on-finished/index.js create mode 100644 www2/www2/node_modules/on-finished/package.json create mode 100644 www2/www2/node_modules/on-headers/HISTORY.md create mode 100644 www2/www2/node_modules/on-headers/LICENSE create mode 100644 www2/www2/node_modules/on-headers/README.md create mode 100644 www2/www2/node_modules/on-headers/index.js create mode 100644 www2/www2/node_modules/on-headers/package.json create mode 100644 www2/www2/node_modules/parseurl/HISTORY.md create mode 100644 www2/www2/node_modules/parseurl/LICENSE create mode 100644 www2/www2/node_modules/parseurl/README.md create mode 100644 www2/www2/node_modules/parseurl/index.js create mode 100644 www2/www2/node_modules/parseurl/package.json create mode 100644 www2/www2/node_modules/path-to-regexp/History.md create mode 100644 www2/www2/node_modules/path-to-regexp/LICENSE create mode 100644 www2/www2/node_modules/path-to-regexp/Readme.md create mode 100644 www2/www2/node_modules/path-to-regexp/index.js create mode 100644 www2/www2/node_modules/path-to-regexp/package.json create mode 100644 www2/www2/node_modules/process-nextick-args/index.js create mode 100644 www2/www2/node_modules/process-nextick-args/license.md create mode 100644 www2/www2/node_modules/process-nextick-args/package.json create mode 100644 www2/www2/node_modules/process-nextick-args/readme.md create mode 100644 www2/www2/node_modules/proxy-addr/HISTORY.md create mode 100644 www2/www2/node_modules/proxy-addr/LICENSE create mode 100644 www2/www2/node_modules/proxy-addr/README.md create mode 100644 www2/www2/node_modules/proxy-addr/index.js create mode 100644 www2/www2/node_modules/proxy-addr/package.json create mode 100644 www2/www2/node_modules/qs/.editorconfig create mode 100644 www2/www2/node_modules/qs/.eslintrc create mode 100644 www2/www2/node_modules/qs/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/qs/.nycrc create mode 100644 www2/www2/node_modules/qs/CHANGELOG.md create mode 100644 www2/www2/node_modules/qs/LICENSE.md create mode 100644 www2/www2/node_modules/qs/README.md create mode 100644 www2/www2/node_modules/qs/dist/qs.js create mode 100644 www2/www2/node_modules/qs/lib/formats.js create mode 100644 www2/www2/node_modules/qs/lib/index.js create mode 100644 www2/www2/node_modules/qs/lib/parse.js create mode 100644 www2/www2/node_modules/qs/lib/stringify.js create mode 100644 www2/www2/node_modules/qs/lib/utils.js create mode 100644 www2/www2/node_modules/qs/package.json create mode 100644 www2/www2/node_modules/qs/test/parse.js create mode 100644 www2/www2/node_modules/qs/test/stringify.js create mode 100644 www2/www2/node_modules/qs/test/utils.js create mode 100644 www2/www2/node_modules/random-bytes/HISTORY.md create mode 100644 www2/www2/node_modules/random-bytes/LICENSE create mode 100644 www2/www2/node_modules/random-bytes/README.md create mode 100644 www2/www2/node_modules/random-bytes/index.js create mode 100644 www2/www2/node_modules/random-bytes/package.json create mode 100644 www2/www2/node_modules/range-parser/HISTORY.md create mode 100644 www2/www2/node_modules/range-parser/LICENSE create mode 100644 www2/www2/node_modules/range-parser/README.md create mode 100644 www2/www2/node_modules/range-parser/index.js create mode 100644 www2/www2/node_modules/range-parser/package.json create mode 100644 www2/www2/node_modules/raw-body/HISTORY.md create mode 100644 www2/www2/node_modules/raw-body/LICENSE create mode 100644 www2/www2/node_modules/raw-body/README.md create mode 100644 www2/www2/node_modules/raw-body/SECURITY.md create mode 100644 www2/www2/node_modules/raw-body/index.d.ts create mode 100644 www2/www2/node_modules/raw-body/index.js create mode 100644 www2/www2/node_modules/raw-body/package.json create mode 100644 www2/www2/node_modules/readable-stream/.travis.yml create mode 100644 www2/www2/node_modules/readable-stream/CONTRIBUTING.md create mode 100644 www2/www2/node_modules/readable-stream/GOVERNANCE.md create mode 100644 www2/www2/node_modules/readable-stream/LICENSE create mode 100644 www2/www2/node_modules/readable-stream/README.md create mode 100644 www2/www2/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 www2/www2/node_modules/readable-stream/duplex-browser.js create mode 100644 www2/www2/node_modules/readable-stream/duplex.js create mode 100644 www2/www2/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 www2/www2/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 www2/www2/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 www2/www2/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 www2/www2/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 www2/www2/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 www2/www2/node_modules/readable-stream/lib/internal/streams/destroy.js create mode 100644 www2/www2/node_modules/readable-stream/lib/internal/streams/stream-browser.js create mode 100644 www2/www2/node_modules/readable-stream/lib/internal/streams/stream.js create mode 100644 www2/www2/node_modules/readable-stream/node_modules/safe-buffer/LICENSE create mode 100644 www2/www2/node_modules/readable-stream/node_modules/safe-buffer/README.md create mode 100644 www2/www2/node_modules/readable-stream/node_modules/safe-buffer/index.d.ts create mode 100644 www2/www2/node_modules/readable-stream/node_modules/safe-buffer/index.js create mode 100644 www2/www2/node_modules/readable-stream/node_modules/safe-buffer/package.json create mode 100644 www2/www2/node_modules/readable-stream/package.json create mode 100644 www2/www2/node_modules/readable-stream/passthrough.js create mode 100644 www2/www2/node_modules/readable-stream/readable-browser.js create mode 100644 www2/www2/node_modules/readable-stream/readable.js create mode 100644 www2/www2/node_modules/readable-stream/transform.js create mode 100644 www2/www2/node_modules/readable-stream/writable-browser.js create mode 100644 www2/www2/node_modules/readable-stream/writable.js create mode 100644 www2/www2/node_modules/safe-buffer/LICENSE create mode 100644 www2/www2/node_modules/safe-buffer/README.md create mode 100644 www2/www2/node_modules/safe-buffer/index.d.ts create mode 100644 www2/www2/node_modules/safe-buffer/index.js create mode 100644 www2/www2/node_modules/safe-buffer/package.json create mode 100644 www2/www2/node_modules/safer-buffer/LICENSE create mode 100644 www2/www2/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 www2/www2/node_modules/safer-buffer/Readme.md create mode 100644 www2/www2/node_modules/safer-buffer/dangerous.js create mode 100644 www2/www2/node_modules/safer-buffer/package.json create mode 100644 www2/www2/node_modules/safer-buffer/safer.js create mode 100644 www2/www2/node_modules/safer-buffer/tests.js create mode 100644 www2/www2/node_modules/send/HISTORY.md create mode 100644 www2/www2/node_modules/send/LICENSE create mode 100644 www2/www2/node_modules/send/README.md create mode 100644 www2/www2/node_modules/send/SECURITY.md create mode 100644 www2/www2/node_modules/send/index.js create mode 100644 www2/www2/node_modules/send/node_modules/ms/index.js create mode 100644 www2/www2/node_modules/send/node_modules/ms/license.md create mode 100644 www2/www2/node_modules/send/node_modules/ms/package.json create mode 100644 www2/www2/node_modules/send/node_modules/ms/readme.md create mode 100644 www2/www2/node_modules/send/package.json create mode 100644 www2/www2/node_modules/serve-static/HISTORY.md create mode 100644 www2/www2/node_modules/serve-static/LICENSE create mode 100644 www2/www2/node_modules/serve-static/README.md create mode 100644 www2/www2/node_modules/serve-static/index.js create mode 100644 www2/www2/node_modules/serve-static/package.json create mode 100644 www2/www2/node_modules/set-function-length/.eslintrc create mode 100644 www2/www2/node_modules/set-function-length/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/set-function-length/.nycrc create mode 100644 www2/www2/node_modules/set-function-length/CHANGELOG.md create mode 100644 www2/www2/node_modules/set-function-length/LICENSE create mode 100644 www2/www2/node_modules/set-function-length/README.md create mode 100644 www2/www2/node_modules/set-function-length/env.d.ts create mode 100644 www2/www2/node_modules/set-function-length/env.js create mode 100644 www2/www2/node_modules/set-function-length/index.d.ts create mode 100644 www2/www2/node_modules/set-function-length/index.js create mode 100644 www2/www2/node_modules/set-function-length/package.json create mode 100644 www2/www2/node_modules/set-function-length/tsconfig.json create mode 100644 www2/www2/node_modules/setprototypeof/LICENSE create mode 100644 www2/www2/node_modules/setprototypeof/README.md create mode 100644 www2/www2/node_modules/setprototypeof/index.d.ts create mode 100644 www2/www2/node_modules/setprototypeof/index.js create mode 100644 www2/www2/node_modules/setprototypeof/package.json create mode 100644 www2/www2/node_modules/setprototypeof/test/index.js create mode 100644 www2/www2/node_modules/side-channel/.editorconfig create mode 100644 www2/www2/node_modules/side-channel/.eslintrc create mode 100644 www2/www2/node_modules/side-channel/.github/FUNDING.yml create mode 100644 www2/www2/node_modules/side-channel/.nycrc create mode 100644 www2/www2/node_modules/side-channel/CHANGELOG.md create mode 100644 www2/www2/node_modules/side-channel/LICENSE create mode 100644 www2/www2/node_modules/side-channel/README.md create mode 100644 www2/www2/node_modules/side-channel/index.d.ts create mode 100644 www2/www2/node_modules/side-channel/index.js create mode 100644 www2/www2/node_modules/side-channel/package.json create mode 100644 www2/www2/node_modules/side-channel/test/index.js create mode 100644 www2/www2/node_modules/side-channel/tsconfig.json create mode 100644 www2/www2/node_modules/sqlstring/HISTORY.md create mode 100644 www2/www2/node_modules/sqlstring/LICENSE create mode 100644 www2/www2/node_modules/sqlstring/README.md create mode 100644 www2/www2/node_modules/sqlstring/index.js create mode 100644 www2/www2/node_modules/sqlstring/lib/SqlString.js create mode 100644 www2/www2/node_modules/sqlstring/package.json create mode 100644 www2/www2/node_modules/statuses/HISTORY.md create mode 100644 www2/www2/node_modules/statuses/LICENSE create mode 100644 www2/www2/node_modules/statuses/README.md create mode 100644 www2/www2/node_modules/statuses/codes.json create mode 100644 www2/www2/node_modules/statuses/index.js create mode 100644 www2/www2/node_modules/statuses/package.json create mode 100644 www2/www2/node_modules/streamsearch/.eslintrc.js create mode 100644 www2/www2/node_modules/streamsearch/.github/workflows/ci.yml create mode 100644 www2/www2/node_modules/streamsearch/.github/workflows/lint.yml create mode 100644 www2/www2/node_modules/streamsearch/LICENSE create mode 100644 www2/www2/node_modules/streamsearch/README.md create mode 100644 www2/www2/node_modules/streamsearch/lib/sbmh.js create mode 100644 www2/www2/node_modules/streamsearch/package.json create mode 100644 www2/www2/node_modules/streamsearch/test/test.js create mode 100644 www2/www2/node_modules/string_decoder/.travis.yml create mode 100644 www2/www2/node_modules/string_decoder/LICENSE create mode 100644 www2/www2/node_modules/string_decoder/README.md create mode 100644 www2/www2/node_modules/string_decoder/lib/string_decoder.js create mode 100644 www2/www2/node_modules/string_decoder/node_modules/safe-buffer/LICENSE create mode 100644 www2/www2/node_modules/string_decoder/node_modules/safe-buffer/README.md create mode 100644 www2/www2/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts create mode 100644 www2/www2/node_modules/string_decoder/node_modules/safe-buffer/index.js create mode 100644 www2/www2/node_modules/string_decoder/node_modules/safe-buffer/package.json create mode 100644 www2/www2/node_modules/string_decoder/package.json create mode 100644 www2/www2/node_modules/toidentifier/HISTORY.md create mode 100644 www2/www2/node_modules/toidentifier/LICENSE create mode 100644 www2/www2/node_modules/toidentifier/README.md create mode 100644 www2/www2/node_modules/toidentifier/index.js create mode 100644 www2/www2/node_modules/toidentifier/package.json create mode 100644 www2/www2/node_modules/type-is/HISTORY.md create mode 100644 www2/www2/node_modules/type-is/LICENSE create mode 100644 www2/www2/node_modules/type-is/README.md create mode 100644 www2/www2/node_modules/type-is/index.js create mode 100644 www2/www2/node_modules/type-is/package.json create mode 100644 www2/www2/node_modules/typedarray/.travis.yml create mode 100644 www2/www2/node_modules/typedarray/LICENSE create mode 100644 www2/www2/node_modules/typedarray/example/tarray.js create mode 100644 www2/www2/node_modules/typedarray/index.js create mode 100644 www2/www2/node_modules/typedarray/package.json create mode 100644 www2/www2/node_modules/typedarray/readme.markdown create mode 100644 www2/www2/node_modules/typedarray/test/server/undef_globals.js create mode 100644 www2/www2/node_modules/typedarray/test/tarray.js create mode 100644 www2/www2/node_modules/uid-safe/HISTORY.md create mode 100644 www2/www2/node_modules/uid-safe/LICENSE create mode 100644 www2/www2/node_modules/uid-safe/README.md create mode 100644 www2/www2/node_modules/uid-safe/index.js create mode 100644 www2/www2/node_modules/uid-safe/package.json create mode 100644 www2/www2/node_modules/unpipe/HISTORY.md create mode 100644 www2/www2/node_modules/unpipe/LICENSE create mode 100644 www2/www2/node_modules/unpipe/README.md create mode 100644 www2/www2/node_modules/unpipe/index.js create mode 100644 www2/www2/node_modules/unpipe/package.json create mode 100644 www2/www2/node_modules/util-deprecate/History.md create mode 100644 www2/www2/node_modules/util-deprecate/LICENSE create mode 100644 www2/www2/node_modules/util-deprecate/README.md create mode 100644 www2/www2/node_modules/util-deprecate/browser.js create mode 100644 www2/www2/node_modules/util-deprecate/node.js create mode 100644 www2/www2/node_modules/util-deprecate/package.json create mode 100644 www2/www2/node_modules/utils-merge/.npmignore create mode 100644 www2/www2/node_modules/utils-merge/LICENSE create mode 100644 www2/www2/node_modules/utils-merge/README.md create mode 100644 www2/www2/node_modules/utils-merge/index.js create mode 100644 www2/www2/node_modules/utils-merge/package.json create mode 100644 www2/www2/node_modules/vary/HISTORY.md create mode 100644 www2/www2/node_modules/vary/LICENSE create mode 100644 www2/www2/node_modules/vary/README.md create mode 100644 www2/www2/node_modules/vary/index.js create mode 100644 www2/www2/node_modules/vary/package.json create mode 100644 www2/www2/node_modules/xtend/.jshintrc create mode 100644 www2/www2/node_modules/xtend/LICENSE create mode 100644 www2/www2/node_modules/xtend/README.md create mode 100644 www2/www2/node_modules/xtend/immutable.js create mode 100644 www2/www2/node_modules/xtend/mutable.js create mode 100644 www2/www2/node_modules/xtend/package.json create mode 100644 www2/www2/node_modules/xtend/test.js create mode 100644 www2/www2/package-lock.json create mode 100644 www2/www2/package.json create mode 100644 www2/www2/sql/mailrecords.sql create mode 100644 www2/www2/static/Untitled-1.html create mode 100644 www2/www2/static/form.html create mode 100644 www2/www2/static/logo.png create mode 100644 www2/www2/static/style.css create mode 100644 www2/www2/static/welcome.html create mode 100644 www2/www2/static/welcome_bg.png create mode 100644 www2/www2/static/work1.html create mode 100644 www2/www2/test.js create mode 100644 www2/www2/uploads/3.PNG create mode 100644 www2/www2/uploads/4.PNG create mode 100644 www2/www2/uploads/5.PNG create mode 100644 www2/www2/uploads/6æ18æ¥-å°é¢.jpg create mode 100644 www2/www2/uploads/7.PNG create mode 100644 www2/www2/uploads/97aa9d1125106a7414f1dafcddd6dffd create mode 100644 www2/www2/uploads/StreamParserï¼é¢åæ载路ç±å¨çæµå¼å¯ç¼ç¨è§£æå¨0618 (1)_Page1.png create mode 100644 www2/www2/uploads/StreamParserï¼é¢åæ载路ç±å¨çæµå¼å¯ç¼ç¨è§£æå¨0618 (1)_Page3.png create mode 100644 www2/www2/uploads/ä¸çº§æµæ°´.png create mode 100644 www2/www2/uploads/第ä¸é¡µ0619.PNG create mode 100644 www2/www2/uploads/第ä¸é¡µ.png create mode 100644 www2/www2/uploads/第ä¸é¡µ0619.PNG create mode 100644 www2/www2/uploads/第äºé¡µ0619.PNG create mode 100644 www2/www2/uploads/éå®ä½.png diff --git a/www2/www2/main.js b/www2/www2/main.js new file mode 100644 index 0000000..811530d --- /dev/null +++ b/www2/www2/main.js @@ -0,0 +1,210 @@ +var mysql = require('mysql'); +var express = require('express'); +var app = express(); +var bodyParser = require('body-parser'); +const crypto = require('crypto'); +const fs = require('fs'); +const path = require('path'); +const fileUpload = require('express-fileupload'); +const session = require('express-session'); +const multer = require('multer'); + +var connection = mysql.createConnection({ + host : 'localhost', + port : '13307', + user : 'root', + password : '123456', + database : 'mailbox' +}); + + +// 创建 application/x-www-form-urlencoded 编码解析 +var urlencodedParser = bodyParser.urlencoded({ extended: false }) +app.use(express.static('static')); + + +app.get('/', function (req, res) { + //var result_string = build_html_head('识别系统') + '
用户名 | 密码 | 身份 | 邮箱 |
---|---|---|---|
' + + results[i].name + + ' | ' + + results[i].passwd + + ' | ' + + results[i].id + + ' | ' + + results[i].msg + + ' | \r\n'); + result_string +='
A JavaScript library for arbitrary-precision arithmetic.
+ + ++ See the README on GitHub for a + quick-start introduction. +
+
+ In all examples below, var
and semicolons are not shown, and if a commented-out
+ value is in quotes it means toString
has been called on the preceding expression.
+
BigNumber(n [, base]) ⇒ BigNumber
+
+ n
: number|string|BigNumber
+ base
: number: integer, 2
to 36
inclusive. (See
+ ALPHABET
to extend this range).
+
+ Returns a new instance of a BigNumber object with value n
, where n
+ is a numeric value in the specified base
, or base 10
if
+ base
is omitted or is null
or undefined
.
+
+x = new BigNumber(123.4567) // '123.4567' +// 'new' is optional +y = BigNumber(x) // '123.4567'+
+ If n
is a base 10
value it can be in normal (fixed-point) or
+ exponential notation. Values in other bases must be in normal notation. Values in any base can
+ have fraction digits, i.e. digits after the decimal point.
+
+new BigNumber(43210) // '43210' +new BigNumber('4.321e+4') // '43210' +new BigNumber('-735.0918e-430') // '-7.350918e-428' +new BigNumber('123412421.234324', 5) // '607236.557696'+
+ Signed 0
, signed Infinity
and NaN
are supported.
+
+new BigNumber('-Infinity') // '-Infinity' +new BigNumber(NaN) // 'NaN' +new BigNumber(-0) // '0' +new BigNumber('.5') // '0.5' +new BigNumber('+2') // '2'+
+ String values in hexadecimal literal form, e.g. '0xff'
, are valid, as are
+ string values with the octal and binary prefixs '0o'
and '0b'
.
+ String values in octal literal form without the prefix will be interpreted as
+ decimals, e.g. '011'
is interpreted as 11, not 9.
+
+new BigNumber(-10110100.1, 2) // '-180.5' +new BigNumber('-0b10110100.1') // '-180.5' +new BigNumber('ff.8', 16) // '255.5' +new BigNumber('0xff.8') // '255.5'+
+ If a base is specified, n
is rounded according to the current
+ DECIMAL_PLACES
and
+ ROUNDING_MODE
settings. This includes base
+ 10
so don't include a base
parameter for decimal values unless
+ this behaviour is wanted.
+
BigNumber.config({ DECIMAL_PLACES: 5 }) +new BigNumber(1.23456789) // '1.23456789' +new BigNumber(1.23456789, 10) // '1.23457'+
An error is thrown if base
is invalid. See Errors.
+ There is no limit to the number of digits of a value of type string (other than
+ that of JavaScript's maximum array size). See RANGE
to set
+ the maximum and minimum possible exponent value of a BigNumber.
+
+new BigNumber('5032485723458348569331745.33434346346912144534543') +new BigNumber('4.321e10000000')+
BigNumber NaN
is returned if n
is invalid
+ (unless BigNumber.DEBUG
is true
, see below).
+new BigNumber('.1*') // 'NaN' +new BigNumber('blurgh') // 'NaN' +new BigNumber(9, 2) // 'NaN'+
+ To aid in debugging, if BigNumber.DEBUG
is true
then an error will
+ be thrown on an invalid n
. An error will also be thrown if n
is of
+ type number with more than 15
significant digits, as calling
+ toString
or valueOf
on
+ these numbers may not result in the intended value.
+
+console.log(823456789123456.3) // 823456789123456.2 +new BigNumber(823456789123456.3) // '823456789123456.2' +BigNumber.DEBUG = true +// '[BigNumber Error] Number primitive has more than 15 significant digits' +new BigNumber(823456789123456.3) +// '[BigNumber Error] Not a base 2 number' +new BigNumber(9, 2)+
+ A BigNumber can also be created from an object literal.
+ Use isBigNumber
to check that it is well-formed.
+
new BigNumber({ s: 1, e: 2, c: [ 777, 12300000000000 ], _isBigNumber: true }) // '777.123'+ + + + +
The static methods of a BigNumber constructor.
+ + + + +.clone([object]) ⇒ BigNumber constructor
+ object
: object
+ Returns a new independent BigNumber constructor with configuration as described by
+ object
(see config
), or with the default
+ configuration if object
is null
or undefined
.
+
+ Throws if object
is not an object. See Errors.
+
BigNumber.config({ DECIMAL_PLACES: 5 }) +BN = BigNumber.clone({ DECIMAL_PLACES: 9 }) + +x = new BigNumber(1) +y = new BN(1) + +x.div(3) // 0.33333 +y.div(3) // 0.333333333 + +// BN = BigNumber.clone({ DECIMAL_PLACES: 9 }) is equivalent to: +BN = BigNumber.clone() +BN.config({ DECIMAL_PLACES: 9 })+ + + +
set([object]) ⇒ object
+ object
: object: an object that contains some or all of the following
+ properties.
+
Configures the settings for this particular BigNumber constructor.
+ +DECIMAL_PLACES
0
to 1e+9
inclusive20
+ BigNumber.config({ DECIMAL_PLACES: 5 }) +BigNumber.set({ DECIMAL_PLACES: 5 }) // equivalent+
ROUNDING_MODE
0
to 8
inclusive4
(ROUND_HALF_UP
)
+ decimalPlaces
,
+ precision
,
+ toExponential
,
+ toFixed
,
+ toFormat
and
+ toPrecision
.
+ BigNumber.config({ ROUNDING_MODE: 0 }) +BigNumber.set({ ROUNDING_MODE: BigNumber.ROUND_UP }) // equivalent+
EXPONENTIAL_AT
0
to 1e+9
inclusive, or
+ -1e+9
to 0
inclusive, integer
+ 0
to 1e+9
inclusive ][-7, 20]
+ toString
returns exponential notation.
+ [-7, 20]
.
+ BigNumber.config({ EXPONENTIAL_AT: 2 }) +new BigNumber(12.3) // '12.3' e is only 1 +new BigNumber(123) // '1.23e+2' +new BigNumber(0.123) // '0.123' e is only -1 +new BigNumber(0.0123) // '1.23e-2' + +BigNumber.config({ EXPONENTIAL_AT: [-7, 20] }) +new BigNumber(123456789) // '123456789' e is only 8 +new BigNumber(0.000000123) // '1.23e-7' + +// Almost never return exponential notation: +BigNumber.config({ EXPONENTIAL_AT: 1e+9 }) + +// Always return exponential notation: +BigNumber.config({ EXPONENTIAL_AT: 0 })+
EXPONENTIAL_AT
, the toFixed
method
+ will always return a value in normal notation and the toExponential
method
+ will always return a value in exponential form.
+ toString
with a base argument, e.g. toString(10)
, will
+ also always return normal notation.
+ RANGE
1
to 1e+9
inclusive, or
+ -1e+9
to -1
inclusive, integer
+ 1
to 1e+9
inclusive ][-1e+9, 1e+9]
+ Infinity
and underflow to
+ zero occurs.
+ Infinity
and those with a
+ negative exponent of greater magnitude become zero.
+ Infinity
, use [-324, 308]
.
+ BigNumber.config({ RANGE: 500 }) +BigNumber.config().RANGE // [ -500, 500 ] +new BigNumber('9.999e499') // '9.999e+499' +new BigNumber('1e500') // 'Infinity' +new BigNumber('1e-499') // '1e-499' +new BigNumber('1e-500') // '0' + +BigNumber.config({ RANGE: [-3, 4] }) +new BigNumber(99999) // '99999' e is only 4 +new BigNumber(100000) // 'Infinity' e is 5 +new BigNumber(0.001) // '0.01' e is only -3 +new BigNumber(0.0001) // '0' e is -4+
9.999...e+1000000000
.1e-1000000000
.
+ CRYPTO
true
or false
.false
+ CRYPTO
is set to true
then the
+ random
method will generate random digits using
+ crypto.getRandomValues
in browsers that support it, or
+ crypto.randomBytes
if using Node.js.
+ CRYPTO
to true
will fail and an exception will be thrown.
+ CRYPTO
is false
then the source of randomness used will be
+ Math.random
(which is assumed to generate at least 30
bits of
+ randomness).
+ random
.+// Node.js +global.crypto = require('crypto') + +BigNumber.config({ CRYPTO: true }) +BigNumber.config().CRYPTO // true +BigNumber.random() // 0.54340758610486147524+
MODULO_MODE
0
to 9
inclusive1
(ROUND_DOWN
)
+ a mod n
.q = a / n
, is calculated according to the
+ ROUNDING_MODE
that corresponds to the chosen
+ MODULO_MODE
.
+ r
, is calculated as: r = a - n * q
.Property | Value | Description |
---|---|---|
ROUND_UP | 0 | ++ The remainder is positive if the dividend is negative, otherwise it is negative. + | +
ROUND_DOWN | 1 | +
+ The remainder has the same sign as the dividend. + This uses 'truncating division' and matches the behaviour of JavaScript's + remainder operator % .
+ |
+
ROUND_FLOOR | 3 | +
+ The remainder has the same sign as the divisor. + This matches Python's % operator.
+ |
+
ROUND_HALF_EVEN | 6 | +The IEEE 754 remainder function. | +
EUCLID | 9 | +
+ The remainder is always positive. Euclidian division: + q = sign(n) * floor(a / abs(n))
+ |
+
modulo
.BigNumber.config({ MODULO_MODE: BigNumber.EUCLID }) +BigNumber.config({ MODULO_MODE: 9 }) // equivalent+
POW_PRECISION
0
to 1e+9
inclusive.0
+ 0
, the number of significant digits will not be limited.exponentiatedBy
.BigNumber.config({ POW_PRECISION: 100 })
FORMAT
FORMAT
object configures the format of the string returned by the
+ toFormat
method.
+ FORMAT
object that are
+ recognised, and their default values.
+ FORMAT
object will not be checked for validity. The existing
+ FORMAT
object will simply be replaced by the object that is passed in.
+ The object can include any number of the properties shown below.
+ toFormat
for examples of usage.+BigNumber.config({ + FORMAT: { + // string to prepend + prefix: '', + // decimal separator + decimalSeparator: '.', + // grouping separator of the integer part + groupSeparator: ',', + // primary grouping size of the integer part + groupSize: 3, + // secondary grouping size of the integer part + secondaryGroupSize: 0, + // grouping separator of the fraction part + fractionGroupSeparator: ' ', + // grouping size of the fraction part + fractionGroupSize: 0, + // string to append + suffix: '' + } +});+
ALPHABET
'0123456789abcdefghijklmnopqrstuvwxyz'
+ BigNumber
constructor or
+ toString
.
+ '+'
and '-'
, or the decimal separator '.'
.
+ // duodecimal (base 12) +BigNumber.config({ ALPHABET: '0123456789TE' }) +x = new BigNumber('T', 12) +x.toString() // '10' +x.toString(12) // 'T'+
Returns an object with the above properties and their current values.
+
+ Throws if object
is not an object, or if an invalid value is assigned to
+ one or more of the above properties. See Errors.
+
+BigNumber.config({ + DECIMAL_PLACES: 40, + ROUNDING_MODE: BigNumber.ROUND_HALF_CEIL, + EXPONENTIAL_AT: [-10, 20], + RANGE: [-500, 500], + CRYPTO: true, + MODULO_MODE: BigNumber.ROUND_FLOOR, + POW_PRECISION: 80, + FORMAT: { + groupSize: 3, + groupSeparator: ' ', + decimalSeparator: ',' + }, + ALPHABET: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_' +}); + +obj = BigNumber.config(); +obj.DECIMAL_PLACES // 40 +obj.RANGE // [-500, 500]+ + + +
.isBigNumber(value) ⇒ boolean
+ value
: any
+ Returns true
if value
is a BigNumber instance, otherwise returns
+ false
.
+
x = 42 +y = new BigNumber(x) + +BigNumber.isBigNumber(x) // false +y instanceof BigNumber // true +BigNumber.isBigNumber(y) // true + +BN = BigNumber.clone(); +z = new BN(x) +z instanceof BigNumber // false +BigNumber.isBigNumber(z) // true+
+ If value
is a BigNumber instance and BigNumber.DEBUG
is true
,
+ then this method will also check if value
is well-formed, and throw if it is not.
+ See Errors.
+
+ The check can be useful if creating a BigNumber from an object literal. + See BigNumber. +
++x = new BigNumber(10) + +// Change x.c to an illegitimate value. +x.c = NaN + +BigNumber.DEBUG = false + +// No error. +BigNumber.isBigNumber(x) // true + +BigNumber.DEBUG = true + +// Error. +BigNumber.isBigNumber(x) // '[BigNumber Error] Invalid BigNumber'+ + + +
.max(n...) ⇒ BigNumber
+ n
: number|string|BigNumber
+ See BigNumber
for further parameter details.
+
+ Returns a BigNumber whose value is the maximum of the arguments. +
+The return value is always exact and unrounded.
+x = new BigNumber('3257869345.0378653') +BigNumber.maximum(4e9, x, '123456789.9') // '4000000000' + +arr = [12, '13', new BigNumber(14)] +BigNumber.max.apply(null, arr) // '14'+ + + +
.min(n...) ⇒ BigNumber
+ n
: number|string|BigNumber
+ See BigNumber
for further parameter details.
+
+ Returns a BigNumber whose value is the minimum of the arguments. +
+The return value is always exact and unrounded.
+x = new BigNumber('3257869345.0378653') +BigNumber.minimum(4e9, x, '123456789.9') // '123456789.9' + +arr = [2, new BigNumber(-14), '-15.9999', -12] +BigNumber.min.apply(null, arr) // '-15.9999'+ + + +
.random([dp]) ⇒ BigNumber
+ dp
: number: integer, 0
to 1e+9
inclusive
+ Returns a new BigNumber with a pseudo-random value equal to or greater than 0
and
+ less than 1
.
+
+ The return value will have dp
decimal places (or less if trailing zeros are
+ produced).
+ If dp
is omitted then the number of decimal places will default to the current
+ DECIMAL_PLACES
setting.
+
+ Depending on the value of this BigNumber constructor's
+ CRYPTO
setting and the support for the
+ crypto
object in the host environment, the random digits of the return value are
+ generated by either Math.random
(fastest), crypto.getRandomValues
+ (Web Cryptography API in recent browsers) or crypto.randomBytes
(Node.js).
+
+ To be able to set CRYPTO
to true
when using
+ Node.js, the crypto
object must be available globally:
+
global.crypto = require('crypto')+
+ If CRYPTO
is true
, i.e. one of the
+ crypto
methods is to be used, the value of a returned BigNumber should be
+ cryptographically-secure and statistically indistinguishable from a random value.
+
+ Throws if dp
is invalid. See Errors.
+
BigNumber.config({ DECIMAL_PLACES: 10 }) +BigNumber.random() // '0.4117936847' +BigNumber.random(20) // '0.78193327636914089009'+ + + +
.sum(n...) ⇒ BigNumber
+ n
: number|string|BigNumber
+ See BigNumber
for further parameter details.
+
Returns a BigNumber whose value is the sum of the arguments.
+The return value is always exact and unrounded.
+x = new BigNumber('3257869345.0378653') +BigNumber.sum(4e9, x, '123456789.9') // '7381326134.9378653' + +arr = [2, new BigNumber(14), '15.9999', 12] +BigNumber.sum.apply(null, arr) // '43.9999'+ + + +
+ The library's enumerated rounding modes are stored as properties of the constructor.
+ (They are not referenced internally by the library itself.)
+
+ Rounding modes 0
to 6
(inclusive) are the same as those of Java's
+ BigDecimal class.
+
Property | +Value | +Description | +
---|---|---|
ROUND_UP | +0 | +Rounds away from zero | +
ROUND_DOWN | +1 | +Rounds towards zero | +
ROUND_CEIL | +2 | +Rounds towards Infinity |
+
ROUND_FLOOR | +3 | +Rounds towards -Infinity |
+
ROUND_HALF_UP | +4 | +
+ Rounds towards nearest neighbour. + If equidistant, rounds away from zero + |
+
ROUND_HALF_DOWN | +5 | +
+ Rounds towards nearest neighbour. + If equidistant, rounds towards zero + |
+
ROUND_HALF_EVEN | +6 | +
+ Rounds towards nearest neighbour. + If equidistant, rounds towards even neighbour + |
+
ROUND_HALF_CEIL | +7 | +
+ Rounds towards nearest neighbour. + If equidistant, rounds towards Infinity
+ |
+
ROUND_HALF_FLOOR | +8 | +
+ Rounds towards nearest neighbour. + If equidistant, rounds towards -Infinity
+ |
+
+BigNumber.config({ ROUNDING_MODE: BigNumber.ROUND_CEIL }) +BigNumber.config({ ROUNDING_MODE: 2 }) // equivalent+ +
undefined|false|true
+
+ If BigNumber.DEBUG
is set true
then an error will be thrown
+ if this BigNumber constructor receives an invalid value, such as
+ a value of type number with more than 15
significant digits.
+ See BigNumber.
+
+ An error will also be thrown if the isBigNumber
+ method receives a BigNumber that is not well-formed.
+ See isBigNumber
.
+
BigNumber.DEBUG = true+ + +
The methods inherited by a BigNumber instance from its constructor's prototype object.
+A BigNumber is immutable in the sense that it is not changed by its methods.
+
+ The treatment of ±0
, ±Infinity
and NaN
is
+ consistent with how JavaScript treats these values.
+
Many method names have a shorter alias.
+ + + +.abs() ⇒ BigNumber
+ Returns a BigNumber whose value is the absolute value, i.e. the magnitude, of the value of + this BigNumber. +
+The return value is always exact and unrounded.
++x = new BigNumber(-0.8) +y = x.absoluteValue() // '0.8' +z = y.abs() // '0.8'+ + + +
.comparedTo(n [, base]) ⇒ number
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
Returns | |
---|---|
1 |
+ If the value of this BigNumber is greater than the value of n |
+
-1 |
+ If the value of this BigNumber is less than the value of n |
+
0 |
+ If this BigNumber and n have the same value |
+
null |
+ If the value of either this BigNumber or n is NaN |
+
+x = new BigNumber(Infinity) +y = new BigNumber(5) +x.comparedTo(y) // 1 +x.comparedTo(x.minus(1)) // 0 +y.comparedTo(NaN) // null +y.comparedTo('110', 2) // -1+ + + +
.dp([dp [, rm]]) ⇒ BigNumber|number
+
+ dp
: number: integer, 0
to 1e+9
inclusive
+ rm
: number: integer, 0
to 8
inclusive
+
+ If dp
is a number, returns a BigNumber whose value is the value of this BigNumber
+ rounded by rounding mode rm
to a maximum of dp
decimal places.
+
+ If dp
is omitted, or is null
or undefined
, the return
+ value is the number of decimal places of the value of this BigNumber, or null
if
+ the value of this BigNumber is ±Infinity
or NaN
.
+
+ If rm
is omitted, or is null
or undefined
,
+ ROUNDING_MODE
is used.
+
+ Throws if dp
or rm
is invalid. See Errors.
+
+x = new BigNumber(1234.56) +x.decimalPlaces(1) // '1234.6' +x.dp() // 2 +x.decimalPlaces(2) // '1234.56' +x.dp(10) // '1234.56' +x.decimalPlaces(0, 1) // '1234' +x.dp(0, 6) // '1235' +x.decimalPlaces(1, 1) // '1234.5' +x.dp(1, BigNumber.ROUND_HALF_EVEN) // '1234.6' +x // '1234.56' +y = new BigNumber('9.9e-101') +y.dp() // 102+ + + +
.div(n [, base]) ⇒ BigNumber
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns a BigNumber whose value is the value of this BigNumber divided by
+ n
, rounded according to the current
+ DECIMAL_PLACES
and
+ ROUNDING_MODE
settings.
+
+x = new BigNumber(355) +y = new BigNumber(113) +x.dividedBy(y) // '3.14159292035398230088' +x.div(5) // '71' +x.div(47, 16) // '5'+ + + +
.idiv(n [, base]) ⇒
+ BigNumber
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns a BigNumber whose value is the integer part of dividing the value of this BigNumber by
+ n
.
+
+x = new BigNumber(5) +y = new BigNumber(3) +x.dividedToIntegerBy(y) // '1' +x.idiv(0.7) // '7' +x.idiv('0.f', 16) // '5'+ + + +
.pow(n [, m]) ⇒ BigNumber
+
+ n
: number|string|BigNumber: integer
+ m
: number|string|BigNumber
+
+ Returns a BigNumber whose value is the value of this BigNumber exponentiated by
+ n
, i.e. raised to the power n
, and optionally modulo a modulus
+ m
.
+
+ Throws if n
is not an integer. See Errors.
+
+ If n
is negative the result is rounded according to the current
+ DECIMAL_PLACES
and
+ ROUNDING_MODE
settings.
+
+ As the number of digits of the result of the power operation can grow so large so quickly,
+ e.g. 123.45610000 has over 50000
digits, the number of significant
+ digits calculated is limited to the value of the
+ POW_PRECISION
setting (unless a modulus
+ m
is specified).
+
+ By default POW_PRECISION
is set to 0
.
+ This means that an unlimited number of significant digits will be calculated, and that the
+ method's performance will decrease dramatically for larger exponents.
+
+ If m
is specified and the value of m
, n
and this
+ BigNumber are integers, and n
is positive, then a fast modular exponentiation
+ algorithm is used, otherwise the operation will be performed as
+ x.exponentiatedBy(n).modulo(m)
with a
+ POW_PRECISION
of 0
.
+
+Math.pow(0.7, 2) // 0.48999999999999994 +x = new BigNumber(0.7) +x.exponentiatedBy(2) // '0.49' +BigNumber(3).pow(-2) // '0.11111111111111111111'+ + + +
.integerValue([rm]) ⇒ BigNumber
+
+ rm
: number: integer, 0
to 8
inclusive
+
+ Returns a BigNumber whose value is the value of this BigNumber rounded to an integer using
+ rounding mode rm
.
+
+ If rm
is omitted, or is null
or undefined
,
+ ROUNDING_MODE
is used.
+
+ Throws if rm
is invalid. See Errors.
+
+x = new BigNumber(123.456) +x.integerValue() // '123' +x.integerValue(BigNumber.ROUND_CEIL) // '124' +y = new BigNumber(-12.7) +y.integerValue() // '-13' +y.integerValue(BigNumber.ROUND_DOWN) // '-12'+
+ The following is an example of how to add a prototype method that emulates JavaScript's
+ Math.round
function. Math.ceil
, Math.floor
and
+ Math.trunc
can be emulated in the same way with
+ BigNumber.ROUND_CEIL
, BigNumber.ROUND_FLOOR
and
+ BigNumber.ROUND_DOWN
respectively.
+
+BigNumber.prototype.round = function (n) { + return n.integerValue(BigNumber.ROUND_HALF_CEIL); +}; +x.round() // '123'+ + + +
.eq(n [, base]) ⇒ boolean
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns true
if the value of this BigNumber is equal to the value of
+ n
, otherwise returns false
.
+ As with JavaScript, NaN
does not equal NaN
.
+
Note: This method uses the comparedTo
method internally.
+0 === 1e-324 // true +x = new BigNumber(0) +x.isEqualTo('1e-324') // false +BigNumber(-0).eq(x) // true ( -0 === 0 ) +BigNumber(255).eq('ff', 16) // true + +y = new BigNumber(NaN) +y.isEqualTo(NaN) // false+ + + +
.isFinite() ⇒ boolean
+ Returns true
if the value of this BigNumber is a finite number, otherwise
+ returns false
.
+
+ The only possible non-finite values of a BigNumber are NaN
, Infinity
+ and -Infinity
.
+
+x = new BigNumber(1) +x.isFinite() // true +y = new BigNumber(Infinity) +y.isFinite() // false+
+ Note: The native method isFinite()
can be used if
+ n <= Number.MAX_VALUE
.
+
.gt(n [, base]) ⇒ boolean
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns true
if the value of this BigNumber is greater than the value of
+ n
, otherwise returns false
.
+
Note: This method uses the comparedTo
method internally.
+0.1 > (0.3 - 0.2) // true +x = new BigNumber(0.1) +x.isGreaterThan(BigNumber(0.3).minus(0.2)) // false +BigNumber(0).gt(x) // false +BigNumber(11, 3).gt(11.1, 2) // true+ + + +
.gte(n [, base]) ⇒ boolean
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns true
if the value of this BigNumber is greater than or equal to the value
+ of n
, otherwise returns false
.
+
Note: This method uses the comparedTo
method internally.
+(0.3 - 0.2) >= 0.1 // false +x = new BigNumber(0.3).minus(0.2) +x.isGreaterThanOrEqualTo(0.1) // true +BigNumber(1).gte(x) // true +BigNumber(10, 18).gte('i', 36) // true+ + + +
.isInteger() ⇒ boolean
+ Returns true
if the value of this BigNumber is an integer, otherwise returns
+ false
.
+
+x = new BigNumber(1) +x.isInteger() // true +y = new BigNumber(123.456) +y.isInteger() // false+ + + +
.lt(n [, base]) ⇒ boolean
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns true
if the value of this BigNumber is less than the value of
+ n
, otherwise returns false
.
+
Note: This method uses the comparedTo
method internally.
+(0.3 - 0.2) < 0.1 // true +x = new BigNumber(0.3).minus(0.2) +x.isLessThan(0.1) // false +BigNumber(0).lt(x) // true +BigNumber(11.1, 2).lt(11, 3) // true+ + + +
.lte(n [, base]) ⇒ boolean
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns true
if the value of this BigNumber is less than or equal to the value of
+ n
, otherwise returns false
.
+
Note: This method uses the comparedTo
method internally.
+0.1 <= (0.3 - 0.2) // false +x = new BigNumber(0.1) +x.isLessThanOrEqualTo(BigNumber(0.3).minus(0.2)) // true +BigNumber(-1).lte(x) // true +BigNumber(10, 18).lte('i', 36) // true+ + + +
.isNaN() ⇒ boolean
+ Returns true
if the value of this BigNumber is NaN
, otherwise
+ returns false
.
+
+x = new BigNumber(NaN) +x.isNaN() // true +y = new BigNumber('Infinity') +y.isNaN() // false+
Note: The native method isNaN()
can also be used.
.isNegative() ⇒ boolean
+ Returns true
if the sign of this BigNumber is negative, otherwise returns
+ false
.
+
+x = new BigNumber(-0) +x.isNegative() // true +y = new BigNumber(2) +y.isNegative() // false+
Note: n < 0
can be used if n <= -Number.MIN_VALUE
.
.isPositive() ⇒ boolean
+ Returns true
if the sign of this BigNumber is positive, otherwise returns
+ false
.
+
+x = new BigNumber(-0) +x.isPositive() // false +y = new BigNumber(2) +y.isPositive() // true+ + + +
.isZero() ⇒ boolean
+ Returns true
if the value of this BigNumber is zero or minus zero, otherwise
+ returns false
.
+
+x = new BigNumber(-0) +x.isZero() && x.isNegative() // true +y = new BigNumber(Infinity) +y.isZero() // false+
Note: n == 0
can be used if n >= Number.MIN_VALUE
.
.minus(n [, base]) ⇒ BigNumber
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
Returns a BigNumber whose value is the value of this BigNumber minus n
.
The return value is always exact and unrounded.
++0.3 - 0.1 // 0.19999999999999998 +x = new BigNumber(0.3) +x.minus(0.1) // '0.2' +x.minus(0.6, 20) // '0'+ + + +
.mod(n [, base]) ⇒ BigNumber
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns a BigNumber whose value is the value of this BigNumber modulo n
, i.e.
+ the integer remainder of dividing this BigNumber by n
.
+
+ The value returned, and in particular its sign, is dependent on the value of the
+ MODULO_MODE
setting of this BigNumber constructor.
+ If it is 1
(default value), the result will have the same sign as this BigNumber,
+ and it will match that of Javascript's %
operator (within the limits of double
+ precision) and BigDecimal's remainder
method.
+
The return value is always exact and unrounded.
+
+ See MODULO_MODE
for a description of the other
+ modulo modes.
+
+1 % 0.9 // 0.09999999999999998 +x = new BigNumber(1) +x.modulo(0.9) // '0.1' +y = new BigNumber(33) +y.mod('a', 33) // '3'+ + + +
.times(n [, base]) ⇒ BigNumber
+
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
+ Returns a BigNumber whose value is the value of this BigNumber multiplied by n
.
+
The return value is always exact and unrounded.
++0.6 * 3 // 1.7999999999999998 +x = new BigNumber(0.6) +y = x.multipliedBy(3) // '1.8' +BigNumber('7e+500').times(y) // '1.26e+501' +x.multipliedBy('-a', 16) // '-6'+ + + +
.negated() ⇒ BigNumber
+ Returns a BigNumber whose value is the value of this BigNumber negated, i.e. multiplied by
+ -1
.
+
+x = new BigNumber(1.8) +x.negated() // '-1.8' +y = new BigNumber(-1.3) +y.negated() // '1.3'+ + + +
.plus(n [, base]) ⇒ BigNumber
+ n
: number|string|BigNumber
+ base
: number
+ See BigNumber for further parameter details.
+
Returns a BigNumber whose value is the value of this BigNumber plus n
.
The return value is always exact and unrounded.
++0.1 + 0.2 // 0.30000000000000004 +x = new BigNumber(0.1) +y = x.plus(0.2) // '0.3' +BigNumber(0.7).plus(x).plus(y) // '1' +x.plus('0.1', 8) // '0.225'+ + + +
.sd([d [, rm]]) ⇒ BigNumber|number
+
+ d
: number|boolean: integer, 1
to 1e+9
+ inclusive, or true
or false
+ rm
: number: integer, 0
to 8
inclusive.
+
+ If d
is a number, returns a BigNumber whose value is the value of this BigNumber
+ rounded to a precision of d
significant digits using rounding mode
+ rm
.
+
+ If d
is omitted or is null
or undefined
, the return
+ value is the number of significant digits of the value of this BigNumber, or null
+ if the value of this BigNumber is ±Infinity
or NaN
.
+ If d
is true
then any trailing zeros of the integer
+ part of a number are counted as significant digits, otherwise they are not.
+
+ If rm
is omitted or is null
or undefined
,
+ ROUNDING_MODE
will be used.
+
+ Throws if d
or rm
is invalid. See Errors.
+
+x = new BigNumber(9876.54321) +x.precision(6) // '9876.54' +x.sd() // 9 +x.precision(6, BigNumber.ROUND_UP) // '9876.55' +x.sd(2) // '9900' +x.precision(2, 1) // '9800' +x // '9876.54321' +y = new BigNumber(987000) +y.precision() // 3 +y.sd(true) // 6+ + + +
.shiftedBy(n) ⇒ BigNumber
+ n
: number: integer,
+ -9007199254740991
to 9007199254740991
inclusive
+
+ Returns a BigNumber whose value is the value of this BigNumber shifted by n
+ places.
+
+ The shift is of the decimal point, i.e. of powers of ten, and is to the left if n
+ is negative or to the right if n
is positive.
+
The return value is always exact and unrounded.
+
+ Throws if n
is invalid. See Errors.
+
+x = new BigNumber(1.23) +x.shiftedBy(3) // '1230' +x.shiftedBy(-3) // '0.00123'+ + + +
.sqrt() ⇒ BigNumber
+ Returns a BigNumber whose value is the square root of the value of this BigNumber,
+ rounded according to the current
+ DECIMAL_PLACES
and
+ ROUNDING_MODE
settings.
+
+ The return value will be correctly rounded, i.e. rounded as if the result was first calculated + to an infinite number of correct digits before rounding. +
++x = new BigNumber(16) +x.squareRoot() // '4' +y = new BigNumber(3) +y.sqrt() // '1.73205080756887729353'+ + + +
.toExponential([dp [, rm]]) ⇒ string
+
+ dp
: number: integer, 0
to 1e+9
inclusive
+ rm
: number: integer, 0
to 8
inclusive
+
+ Returns a string representing the value of this BigNumber in exponential notation rounded
+ using rounding mode rm
to dp
decimal places, i.e with one digit
+ before the decimal point and dp
digits after it.
+
+ If the value of this BigNumber in exponential notation has fewer than dp
fraction
+ digits, the return value will be appended with zeros accordingly.
+
+ If dp
is omitted, or is null
or undefined
, the number
+ of digits after the decimal point defaults to the minimum number of digits necessary to
+ represent the value exactly.
+ If rm
is omitted or is null
or undefined
,
+ ROUNDING_MODE
is used.
+
+ Throws if dp
or rm
is invalid. See Errors.
+
+x = 45.6 +y = new BigNumber(x) +x.toExponential() // '4.56e+1' +y.toExponential() // '4.56e+1' +x.toExponential(0) // '5e+1' +y.toExponential(0) // '5e+1' +x.toExponential(1) // '4.6e+1' +y.toExponential(1) // '4.6e+1' +y.toExponential(1, 1) // '4.5e+1' (ROUND_DOWN) +x.toExponential(3) // '4.560e+1' +y.toExponential(3) // '4.560e+1'+ + + +
.toFixed([dp [, rm]]) ⇒ string
+
+ dp
: number: integer, 0
to 1e+9
inclusive
+ rm
: number: integer, 0
to 8
inclusive
+
+ Returns a string representing the value of this BigNumber in normal (fixed-point) notation
+ rounded to dp
decimal places using rounding mode rm
.
+
+ If the value of this BigNumber in normal notation has fewer than dp
fraction
+ digits, the return value will be appended with zeros accordingly.
+
+ Unlike Number.prototype.toFixed
, which returns exponential notation if a number
+ is greater or equal to 1021
, this method will always return normal
+ notation.
+
+ If dp
is omitted or is null
or undefined
, the return
+ value will be unrounded and in normal notation. This is also unlike
+ Number.prototype.toFixed
, which returns the value to zero decimal places.
+ It is useful when fixed-point notation is required and the current
+ EXPONENTIAL_AT
setting causes
+ toString
to return exponential notation.
+ If rm
is omitted or is null
or undefined
,
+ ROUNDING_MODE
is used.
+
+ Throws if dp
or rm
is invalid. See Errors.
+
+x = 3.456 +y = new BigNumber(x) +x.toFixed() // '3' +y.toFixed() // '3.456' +y.toFixed(0) // '3' +x.toFixed(2) // '3.46' +y.toFixed(2) // '3.46' +y.toFixed(2, 1) // '3.45' (ROUND_DOWN) +x.toFixed(5) // '3.45600' +y.toFixed(5) // '3.45600'+ + + +
.toFormat([dp [, rm[, format]]]) ⇒ string
+
+ dp
: number: integer, 0
to 1e+9
inclusive
+ rm
: number: integer, 0
to 8
inclusive
+ format
: object: see FORMAT
+
+
+ Returns a string representing the value of this BigNumber in normal (fixed-point) notation
+ rounded to dp
decimal places using rounding mode rm
, and formatted
+ according to the properties of the format
object.
+
+ See FORMAT
and the examples below for the properties of the
+ format
object, their types, and their usage. A formatting object may contain
+ some or all of the recognised properties.
+
+ If dp
is omitted or is null
or undefined
, then the
+ return value is not rounded to a fixed number of decimal places.
+ If rm
is omitted or is null
or undefined
,
+ ROUNDING_MODE
is used.
+ If format
is omitted or is null
or undefined
, the
+ FORMAT
object is used.
+
+ Throws if dp
, rm
or format
is invalid. See
+ Errors.
+
+fmt = { + prefix = '', + decimalSeparator: '.', + groupSeparator: ',', + groupSize: 3, + secondaryGroupSize: 0, + fractionGroupSeparator: ' ', + fractionGroupSize: 0, + suffix = '' +} + +x = new BigNumber('123456789.123456789') + +// Set the global formatting options +BigNumber.config({ FORMAT: fmt }) + +x.toFormat() // '123,456,789.123456789' +x.toFormat(3) // '123,456,789.123' + +// If a reference to the object assigned to FORMAT has been retained, +// the format properties can be changed directly +fmt.groupSeparator = ' ' +fmt.fractionGroupSize = 5 +x.toFormat() // '123 456 789.12345 6789' + +// Alternatively, pass the formatting options as an argument +fmt = { + prefix: '=> ', + decimalSeparator: ',', + groupSeparator: '.', + groupSize: 3, + secondaryGroupSize: 2 +} + +x.toFormat() // '123 456 789.12345 6789' +x.toFormat(fmt) // '=> 12.34.56.789,123456789' +x.toFormat(2, fmt) // '=> 12.34.56.789,12' +x.toFormat(3, BigNumber.ROUND_UP, fmt) // '=> 12.34.56.789,124'+ + + +
.toFraction([maximum_denominator])
+ ⇒ [BigNumber, BigNumber]
+
+ maximum_denominator
:
+ number|string|BigNumber: integer >= 1
and <=
+ Infinity
+
+ Returns an array of two BigNumbers representing the value of this BigNumber as a simple
+ fraction with an integer numerator and an integer denominator. The denominator will be a
+ positive non-zero value less than or equal to maximum_denominator
.
+
+ If a maximum_denominator
is not specified, or is null
or
+ undefined
, the denominator will be the lowest value necessary to represent the
+ number exactly.
+
+ Throws if maximum_denominator
is invalid. See Errors.
+
+x = new BigNumber(1.75) +x.toFraction() // '7, 4' + +pi = new BigNumber('3.14159265358') +pi.toFraction() // '157079632679,50000000000' +pi.toFraction(100000) // '312689, 99532' +pi.toFraction(10000) // '355, 113' +pi.toFraction(100) // '311, 99' +pi.toFraction(10) // '22, 7' +pi.toFraction(1) // '3, 1'+ + + +
.toJSON() ⇒ string
As valueOf
.
+x = new BigNumber('177.7e+457') +y = new BigNumber(235.4325) +z = new BigNumber('0.0098074') + +// Serialize an array of three BigNumbers +str = JSON.stringify( [x, y, z] ) +// "["1.777e+459","235.4325","0.0098074"]" + +// Return an array of three BigNumbers +JSON.parse(str, function (key, val) { + return key === '' ? val : new BigNumber(val) +})+ + + +
.toNumber() ⇒ number
Returns the value of this BigNumber as a JavaScript number primitive.
++ This method is identical to using type coercion with the unary plus operator. +
++x = new BigNumber(456.789) +x.toNumber() // 456.789 ++x // 456.789 + +y = new BigNumber('45987349857634085409857349856430985') +y.toNumber() // 4.598734985763409e+34 + +z = new BigNumber(-0) +1 / z.toNumber() // -Infinity +1 / +z // -Infinity+ + + +
.toPrecision([sd [, rm]]) ⇒ string
+
+ sd
: number: integer, 1
to 1e+9
inclusive
+ rm
: number: integer, 0
to 8
inclusive
+
+ Returns a string representing the value of this BigNumber rounded to sd
+ significant digits using rounding mode rm
.
+
+ If sd
is less than the number of digits necessary to represent the integer part
+ of the value in normal (fixed-point) notation, then exponential notation is used.
+
+ If sd
is omitted, or is null
or undefined
, then the
+ return value is the same as n.toString()
.
+ If rm
is omitted or is null
or undefined
,
+ ROUNDING_MODE
is used.
+
+ Throws if sd
or rm
is invalid. See Errors.
+
+x = 45.6 +y = new BigNumber(x) +x.toPrecision() // '45.6' +y.toPrecision() // '45.6' +x.toPrecision(1) // '5e+1' +y.toPrecision(1) // '5e+1' +y.toPrecision(2, 0) // '4.6e+1' (ROUND_UP) +y.toPrecision(2, 1) // '4.5e+1' (ROUND_DOWN) +x.toPrecision(5) // '45.600' +y.toPrecision(5) // '45.600'+ + + +
.toString([base]) ⇒ string
+ base
: number: integer, 2
to ALPHABET.length
+ inclusive (see ALPHABET
).
+
+ Returns a string representing the value of this BigNumber in the specified base, or base
+ 10
if base
is omitted or is null
or
+ undefined
.
+
+ For bases above 10
, and using the default base conversion alphabet
+ (see ALPHABET
), values from 10
to
+ 35
are represented by a-z
+ (as with Number.prototype.toString
).
+
+ If a base is specified the value is rounded according to the current
+ DECIMAL_PLACES
+ and ROUNDING_MODE
settings.
+
+ If a base is not specified, and this BigNumber has a positive
+ exponent that is equal to or greater than the positive component of the
+ current EXPONENTIAL_AT
setting,
+ or a negative exponent equal to or less than the negative component of the
+ setting, then exponential notation is returned.
+
If base
is null
or undefined
it is ignored.
+ Throws if base
is invalid. See Errors.
+
+x = new BigNumber(750000) +x.toString() // '750000' +BigNumber.config({ EXPONENTIAL_AT: 5 }) +x.toString() // '7.5e+5' + +y = new BigNumber(362.875) +y.toString(2) // '101101010.111' +y.toString(9) // '442.77777777777777777778' +y.toString(32) // 'ba.s' + +BigNumber.config({ DECIMAL_PLACES: 4 }); +z = new BigNumber('1.23456789') +z.toString() // '1.23456789' +z.toString(10) // '1.2346'+ + + +
.valueOf() ⇒ string
+ As toString
, but does not accept a base argument and includes
+ the minus sign for negative zero.
+
+x = new BigNumber('-0') +x.toString() // '0' +x.valueOf() // '-0' +y = new BigNumber('1.777e+457') +y.valueOf() // '1.777e+457'+ + + +
The properties of a BigNumber instance:
+Property | +Description | +Type | +Value | +
---|---|---|---|
c | +coefficient* | +number[] |
+ Array of base 1e14 numbers |
+
e | +exponent | +number | +Integer, -1000000000 to 1000000000 inclusive |
+
s | +sign | +number | +-1 or 1 |
+
*significand
+
+ The value of any of the c
, e
and s
properties may also
+ be null
.
+
+ The above properties are best considered to be read-only. In early versions of this library it + was okay to change the exponent of a BigNumber by writing to its exponent property directly, + but this is no longer reliable as the value of the first element of the coefficient array is + now dependent on the exponent. +
++ Note that, as with JavaScript numbers, the original exponent and fractional trailing zeros are + not necessarily preserved. +
+x = new BigNumber(0.123) // '0.123' +x.toExponential() // '1.23e-1' +x.c // '1,2,3' +x.e // -1 +x.s // 1 + +y = new Number(-123.4567000e+2) // '-12345.67' +y.toExponential() // '-1.234567e+4' +z = new BigNumber('-123.4567000e+2') // '-12345.67' +z.toExponential() // '-1.234567e+4' +z.c // '1,2,3,4,5,6,7' +z.e // 4 +z.s // -1+ + + +
+ The table below shows how ±0
, NaN
and
+ ±Infinity
are stored.
+
+ | c | +e | +s | +
---|---|---|---|
±0 | +[0] |
+ 0 |
+ ±1 |
+
NaN | +null |
+ null |
+ null |
+
±Infinity | +null |
+ null |
+ ±1 |
+
+x = new Number(-0) // 0 +1 / x == -Infinity // true + +y = new BigNumber(-0) // '0' +y.c // '0' ( [0].toString() ) +y.e // 0 +y.s // -1+ + + +
The table below shows the errors that are thrown.
+
+ The errors are generic Error
objects whose message begins
+ '[BigNumber Error]'
.
+
Method | +Throws | +
---|---|
+ BigNumber + comparedTo + dividedBy + dividedToIntegerBy + isEqualTo + isGreaterThan + isGreaterThanOrEqualTo + isLessThan + isLessThanOrEqualTo + minus + modulo + plus + multipliedBy
+ |
+ Base not a primitive number | +
Base not an integer | +|
Base out of range | +|
Number primitive has more than 15 significant digits* | +|
Not a base... number* | +|
Not a number* | +|
clone |
+ Object expected | +
config |
+ Object expected | +
DECIMAL_PLACES not a primitive number |
+ |
DECIMAL_PLACES not an integer |
+ |
DECIMAL_PLACES out of range |
+ |
ROUNDING_MODE not a primitive number |
+ |
ROUNDING_MODE not an integer |
+ |
ROUNDING_MODE out of range |
+ |
EXPONENTIAL_AT not a primitive number |
+ |
EXPONENTIAL_AT not an integer |
+ |
EXPONENTIAL_AT out of range |
+ |
RANGE not a primitive number |
+ |
RANGE not an integer |
+ |
RANGE cannot be zero |
+ |
RANGE cannot be zero |
+ |
CRYPTO not true or false |
+ |
crypto unavailable |
+ |
MODULO_MODE not a primitive number |
+ |
MODULO_MODE not an integer |
+ |
MODULO_MODE out of range |
+ |
POW_PRECISION not a primitive number |
+ |
POW_PRECISION not an integer |
+ |
POW_PRECISION out of range |
+ |
FORMAT not an object |
+ |
ALPHABET invalid |
+ |
+ decimalPlaces + precision + random + shiftedBy + toExponential + toFixed + toFormat + toPrecision
+ |
+ Argument not a primitive number | +
Argument not an integer | +|
Argument out of range | +|
+ decimalPlaces + precision
+ |
+ Argument not true or false | +
exponentiatedBy |
+ Argument not an integer | +
isBigNumber |
+ Invalid BigNumber* | +
+ minimum + maximum
+ |
+ Not a number* | +
+ random
+ |
+ crypto unavailable | +
+ toFormat
+ |
+ Argument not an object | +
toFraction |
+ Argument not an integer | +
Argument out of range | +|
toString |
+ Base not a primitive number | +
Base not an integer | +|
Base out of range | +
*Only thrown if BigNumber.DEBUG
is true
.
To determine if an exception is a BigNumber Error:
++try { + // ... +} catch (e) { + if (e instanceof Error && e.message.indexOf('[BigNumber Error]') === 0) { + // ... + } +}+ + + +
+ To prevent the accidental use of a BigNumber in primitive number operations, or the
+ accidental addition of a BigNumber to a string, the valueOf
method can be safely
+ overwritten as shown below.
+
+ The valueOf
method is the same as the
+ toJSON
method, and both are the same as the
+ toString
method except they do not take a base
+ argument and they include the minus sign for negative zero.
+
+BigNumber.prototype.valueOf = function () { + throw Error('valueOf called!') +} + +x = new BigNumber(1) +x / 2 // '[BigNumber Error] valueOf called!' +x + 'abc' // '[BigNumber Error] valueOf called!' ++ + + +
+ Some arbitrary-precision libraries retain trailing fractional zeros as they can indicate the + precision of a value. This can be useful but the results of arithmetic operations can be + misleading. +
++x = new BigDecimal("1.0") +y = new BigDecimal("1.1000") +z = x.add(y) // 2.1000 + +x = new BigDecimal("1.20") +y = new BigDecimal("3.45000") +z = x.multiply(y) // 4.1400000+
+ To specify the precision of a value is to specify that the value lies + within a certain range. +
+
+ In the first example, x
has a value of 1.0
. The trailing zero shows
+ the precision of the value, implying that it is in the range 0.95
to
+ 1.05
. Similarly, the precision indicated by the trailing zeros of y
+ indicates that the value is in the range 1.09995
to 1.10005
.
+
+ If we add the two lowest values in the ranges we have, 0.95 + 1.09995 = 2.04995
,
+ and if we add the two highest values we have, 1.05 + 1.10005 = 2.15005
, so the
+ range of the result of the addition implied by the precision of its operands is
+ 2.04995
to 2.15005
.
+
+ The result given by BigDecimal of 2.1000
however, indicates that the value is in
+ the range 2.09995
to 2.10005
and therefore the precision implied by
+ its trailing zeros may be misleading.
+
+ In the second example, the true range is 4.122744
to 4.157256
yet
+ the BigDecimal answer of 4.1400000
indicates a range of 4.13999995
+ to 4.14000005
. Again, the precision implied by the trailing zeros may be
+ misleading.
+
+ This library, like binary floating point and most calculators, does not retain trailing
+ fractional zeros. Instead, the toExponential
, toFixed
and
+ toPrecision
methods enable trailing zeros to be added if and when required.
+
Welcome back, ' + escapeHtml(name) + '!
'); + } else { + res.write('Hello, new visitor!
'); + } + + res.write(''); +} + +http.createServer(onRequest).listen(3000); +``` + +## Testing + +```sh +$ npm test +``` + +## Benchmark + +``` +$ npm run bench + +> cookie@0.5.0 bench +> node benchmark/index.js + + node@18.18.2 + acorn@8.10.0 + ada@2.6.0 + ares@1.19.1 + brotli@1.0.9 + cldr@43.1 + icu@73.2 + llhttp@6.0.11 + modules@108 + napi@9 + nghttp2@1.57.0 + nghttp3@0.7.0 + ngtcp2@0.8.1 + openssl@3.0.10+quic + simdutf@3.2.14 + tz@2023c + undici@5.26.3 + unicode@15.0 + uv@1.44.2 + uvwasi@0.0.18 + v8@10.2.154.26-node.26 + zlib@1.2.13.1-motley + +> node benchmark/parse-top.js + + cookie.parse - top sites + + 14 tests completed. + + parse accounts.google.com x 2,588,913 ops/sec ±0.74% (186 runs sampled) + parse apple.com x 2,370,002 ops/sec ±0.69% (186 runs sampled) + parse cloudflare.com x 2,213,102 ops/sec ±0.88% (188 runs sampled) + parse docs.google.com x 2,194,157 ops/sec ±1.03% (184 runs sampled) + parse drive.google.com x 2,265,084 ops/sec ±0.79% (187 runs sampled) + parse en.wikipedia.org x 457,099 ops/sec ±0.81% (186 runs sampled) + parse linkedin.com x 504,407 ops/sec ±0.89% (186 runs sampled) + parse maps.google.com x 1,230,959 ops/sec ±0.98% (186 runs sampled) + parse microsoft.com x 926,294 ops/sec ±0.88% (184 runs sampled) + parse play.google.com x 2,311,338 ops/sec ±0.83% (185 runs sampled) + parse support.google.com x 1,508,850 ops/sec ±0.86% (186 runs sampled) + parse www.google.com x 1,022,582 ops/sec ±1.32% (182 runs sampled) + parse youtu.be x 332,136 ops/sec ±1.02% (185 runs sampled) + parse youtube.com x 323,833 ops/sec ±0.77% (183 runs sampled) + +> node benchmark/parse.js + + cookie.parse - generic + + 6 tests completed. + + simple x 3,214,032 ops/sec ±1.61% (183 runs sampled) + decode x 587,237 ops/sec ±1.16% (187 runs sampled) + unquote x 2,954,618 ops/sec ±1.35% (183 runs sampled) + duplicates x 857,008 ops/sec ±0.89% (187 runs sampled) + 10 cookies x 292,133 ops/sec ±0.89% (187 runs sampled) + 100 cookies x 22,610 ops/sec ±0.68% (187 runs sampled) +``` + +## References + +- [RFC 6265: HTTP State Management Mechanism][rfc-6265] +- [Same-site Cookies][rfc-6265bis-09-5.4.7] + +[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/ +[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) + +[ci-image]: https://badgen.net/github/checks/jshttp/cookie/master?label=ci +[ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master +[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master +[node-image]: https://badgen.net/npm/node/cookie +[node-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 diff --git a/www2/www2/node_modules/cookie/SECURITY.md b/www2/www2/node_modules/cookie/SECURITY.md new file mode 100644 index 0000000..fd4a6c5 --- /dev/null +++ b/www2/www2/node_modules/cookie/SECURITY.md @@ -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. diff --git a/www2/www2/node_modules/cookie/index.js b/www2/www2/node_modules/cookie/index.js new file mode 100644 index 0000000..03d4c38 --- /dev/null +++ b/www2/www2/node_modules/cookie/index.js @@ -0,0 +1,274 @@ +/*! + * 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.partitioned) { + str += '; Partitioned' + } + + 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} val + * @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; + } +} diff --git a/www2/www2/node_modules/cookie/package.json b/www2/www2/node_modules/cookie/package.json new file mode 100644 index 0000000..0c3f006 --- /dev/null +++ b/www2/www2/node_modules/cookie/package.json @@ -0,0 +1,44 @@ +{ + "name": "cookie", + "description": "HTTP server cookie parsing and serialization", + "version": "0.6.0", + "author": "Roman ShtylmanLocation ' + escapeHtml(url) + ' not found
' + + // send a 404 + res.statusCode = 404 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) + res.end(body, 'utf-8') +}) +``` + +### Encode a URL for use in a header field + +```js +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') +var url = require('url') + +http.createServer(function onRequest (req, res) { + // parse inbound url + var href = url.parse(req) + + // set new host for redirect + href.host = 'localhost' + href.protocol = 'https:' + href.slashes = true + + // create location header + var location = encodeUrl(url.format(href)) + + // create html message + var body = 'Redirecting to new site: ' + escapeHtml(location) + '
' + + // send a 301 + res.statusCode = 301 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) + res.setHeader('Location', location) + res.end(body, 'utf-8') +}) +``` + +## Testing + +```sh +$ npm test +$ npm run lint +``` + +## References + +- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986] +- [WHATWG URL Living Standard][whatwg-url] + +[rfc-3986]: https://tools.ietf.org/html/rfc3986 +[whatwg-url]: https://url.spec.whatwg.org/ + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/encodeurl.svg +[npm-url]: https://npmjs.org/package/encodeurl +[node-version-image]: https://img.shields.io/node/v/encodeurl.svg +[node-version-url]: https://nodejs.org/en/download +[travis-image]: https://img.shields.io/travis/pillarjs/encodeurl.svg +[travis-url]: https://travis-ci.org/pillarjs/encodeurl +[coveralls-image]: https://img.shields.io/coveralls/pillarjs/encodeurl.svg +[coveralls-url]: https://coveralls.io/r/pillarjs/encodeurl?branch=master +[downloads-image]: https://img.shields.io/npm/dm/encodeurl.svg +[downloads-url]: https://npmjs.org/package/encodeurl diff --git a/www2/www2/node_modules/encodeurl/index.js b/www2/www2/node_modules/encodeurl/index.js new file mode 100644 index 0000000..fc4906c --- /dev/null +++ b/www2/www2/node_modules/encodeurl/index.js @@ -0,0 +1,60 @@ +/*! + * encodeurl + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = encodeUrl + +/** + * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") + * and including invalid escape sequences. + * @private + */ + +var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g + +/** + * RegExp to match unmatched surrogate pair. + * @private + */ + +var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g + +/** + * String to replace unmatched surrogate pair with. + * @private + */ + +var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2' + +/** + * Encode a URL to a percent-encoded form, excluding already-encoded sequences. + * + * This function will take an already-encoded URL and encode all the non-URL + * code points. This function will not encode the "%" character unless it is + * not part of a valid sequence (`%20` will be left as-is, but `%foo` will + * be encoded as `%25foo`). + * + * This encode is meant to be "safe" and does not throw errors. It will try as + * hard as it can to properly encode the given URL, including replacing any raw, + * unpaired surrogate pairs with the Unicode replacement character prior to + * encoding. + * + * @param {string} url + * @return {string} + * @public + */ + +function encodeUrl (url) { + return String(url) + .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) + .replace(ENCODE_CHARS_REGEXP, encodeURI) +} diff --git a/www2/www2/node_modules/encodeurl/package.json b/www2/www2/node_modules/encodeurl/package.json new file mode 100644 index 0000000..b9f25ef --- /dev/null +++ b/www2/www2/node_modules/encodeurl/package.json @@ -0,0 +1,40 @@ +{ + "name": "encodeurl", + "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences", + "version": "1.0.2", + "contributors": [ + "Douglas Christopher Wilsonfalse
**(default)**true
false
**(default)**true
false
**(default)**true
false
**(default)**true
*Number*
safeFileNames
option. If set to true
, will default to an extension length of 3. If set to *Number*
, this will be the max allowable extension length. If an extension is smaller than the extension length, it remains untouched. If the extension is longer, it is shifted.app.use(fileUpload({ safeFileNames: true, preserveExtension: true }));
app.use(fileUpload({ safeFileNames: true, preserveExtension: 2 }));
false
**(default)**true
truncated = true
to the resulting file structure.
+responseOnLimit | 'File size limit has been reached'
**(default)***String*
false
**(default)**function(req, res, next)
false
**(default)**true
String
**(path)**useTempFiles
option. By default this module uses 'tmp' folder in the current working directory.false
**(default)**true
{'name': 'John', 'hobbies[0]': 'Cinema', 'hobbies[1]': 'Bike'}
{'name': 'John', 'hobbies': ['Cinema', 'Bike']}
+debug | false
**(default)**true
console
**(default)**{log: function(msg: string)}
60000
**(default)**Integer
views: ' + req.session.views + '
') + res.write('expires in: ' + (req.session.cookie.maxAge / 1000) + 's
') + res.end() + } else { + req.session.views = 1 + res.end('welcome to the session demo. refresh!') + } +}) +``` + +#### Session.regenerate(callback) + +To regenerate the session simply invoke the method. Once complete, +a new SID and `Session` instance will be initialized at `req.session` +and the `callback` will be invoked. + +```js +req.session.regenerate(function(err) { + // will have a new session here +}) +``` + +#### Session.destroy(callback) + +Destroys the session and will unset the `req.session` property. +Once complete, the `callback` will be invoked. + +```js +req.session.destroy(function(err) { + // cannot access session here +}) +``` + +#### Session.reload(callback) + +Reloads the session data from the store and re-populates the +`req.session` object. Once complete, the `callback` will be invoked. + +```js +req.session.reload(function(err) { + // session updated +}) +``` + +#### Session.save(callback) + +Save the session back to the store, replacing the contents on the store with the +contents in memory (though a store may do something else--consult the store's +documentation for exact behavior). + +This method is automatically called at the end of the HTTP response if the +session data has been altered (though this behavior can be altered with various +options in the middleware constructor). Because of this, typically this method +does not need to be called. + +There are some cases where it is useful to call this method, for example, +redirects, long-lived requests or in WebSockets. + +```js +req.session.save(function(err) { + // session saved +}) +``` + +#### Session.touch() + +Updates the `.maxAge` property. Typically this is +not necessary to call, as the session middleware does this for you. + +### req.session.id + +Each session has a unique ID associated with it. This property is an +alias of [`req.sessionID`](#reqsessionid-1) and cannot be modified. +It has been added to make the session ID accessible from the `session` +object. + +### req.session.cookie + +Each session has a unique cookie object accompany it. This allows +you to alter the session cookie per visitor. For example we can +set `req.session.cookie.expires` to `false` to enable the cookie +to remain for only the duration of the user-agent. + +#### Cookie.maxAge + +Alternatively `req.session.cookie.maxAge` will return the time +remaining in milliseconds, which we may also re-assign a new value +to adjust the `.expires` property appropriately. The following +are essentially equivalent + +```js +var hour = 3600000 +req.session.cookie.expires = new Date(Date.now() + hour) +req.session.cookie.maxAge = hour +``` + +For example when `maxAge` is set to `60000` (one minute), and 30 seconds +has elapsed it will return `30000` until the current request has completed, +at which time `req.session.touch()` is called to reset +`req.session.cookie.maxAge` to its original value. + +```js +req.session.cookie.maxAge // => 30000 +``` + +#### Cookie.originalMaxAge + +The `req.session.cookie.originalMaxAge` property returns the original +`maxAge` (time-to-live), in milliseconds, of the session cookie. + +### req.sessionID + +To get the ID of the loaded session, access the request property +`req.sessionID`. This is simply a read-only value set when a session +is loaded/created. + +## Session Store Implementation + +Every session store _must_ be an `EventEmitter` and implement specific +methods. The following methods are the list of **required**, **recommended**, +and **optional**. + + * Required methods are ones that this module will always call on the store. + * Recommended methods are ones that this module will call on the store if + available. + * Optional methods are ones this module does not call at all, but helps + present uniform stores to users. + +For an example implementation view the [connect-redis](http://github.com/visionmedia/connect-redis) repo. + +### store.all(callback) + +**Optional** + +This optional method is used to get all sessions in the store as an array. The +`callback` should be called as `callback(error, sessions)`. + +### store.destroy(sid, callback) + +**Required** + +This required method is used to destroy/delete a session from the store given +a session ID (`sid`). The `callback` should be called as `callback(error)` once +the session is destroyed. + +### store.clear(callback) + +**Optional** + +This optional method is used to delete all sessions from the store. The +`callback` should be called as `callback(error)` once the store is cleared. + +### store.length(callback) + +**Optional** + +This optional method is used to get the count of all sessions in the store. +The `callback` should be called as `callback(error, len)`. + +### store.get(sid, callback) + +**Required** + +This required method is used to get a session from the store given a session +ID (`sid`). The `callback` should be called as `callback(error, session)`. + +The `session` argument should be a session if found, otherwise `null` or +`undefined` if the session was not found (and there was no error). A special +case is made when `error.code === 'ENOENT'` to act like `callback(null, null)`. + +### store.set(sid, session, callback) + +**Required** + +This required method is used to upsert a session into the store given a +session ID (`sid`) and session (`session`) object. The callback should be +called as `callback(error)` once the session has been set in the store. + +### store.touch(sid, session, callback) + +**Recommended** + +This recommended method is used to "touch" a given session given a +session ID (`sid`) and session (`session`) object. The `callback` should be +called as `callback(error)` once the session has been touched. + +This is primarily used when the store will automatically delete idle sessions +and this method is used to signal to the store the given session is active, +potentially resetting the idle timer. + +## Compatible Session Stores + +The following modules implement a session store that is compatible with this +module. Please make a PR to add additional modules :) + +[![★][aerospike-session-store-image] aerospike-session-store][aerospike-session-store-url] A session store using [Aerospike](http://www.aerospike.com/). + +[aerospike-session-store-url]: https://www.npmjs.com/package/aerospike-session-store +[aerospike-session-store-image]: https://badgen.net/github/stars/aerospike/aerospike-session-store-expressjs?label=%E2%98%85 + +[![★][better-sqlite3-session-store-image] better-sqlite3-session-store][better-sqlite3-session-store-url] A session store based on [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3). + +[better-sqlite3-session-store-url]: https://www.npmjs.com/package/better-sqlite3-session-store +[better-sqlite3-session-store-image]: https://badgen.net/github/stars/timdaub/better-sqlite3-session-store?label=%E2%98%85 + +[![★][cassandra-store-image] cassandra-store][cassandra-store-url] An Apache Cassandra-based session store. + +[cassandra-store-url]: https://www.npmjs.com/package/cassandra-store +[cassandra-store-image]: https://badgen.net/github/stars/webcc/cassandra-store?label=%E2%98%85 + +[![★][cluster-store-image] cluster-store][cluster-store-url] A wrapper for using in-process / embedded +stores - such as SQLite (via knex), leveldb, files, or memory - with node cluster (desirable for Raspberry Pi 2 +and other multi-core embedded devices). + +[cluster-store-url]: https://www.npmjs.com/package/cluster-store +[cluster-store-image]: https://badgen.net/github/stars/coolaj86/cluster-store?label=%E2%98%85 + +[![★][connect-arango-image] connect-arango][connect-arango-url] An ArangoDB-based session store. + +[connect-arango-url]: https://www.npmjs.com/package/connect-arango +[connect-arango-image]: https://badgen.net/github/stars/AlexanderArvidsson/connect-arango?label=%E2%98%85 + +[![★][connect-azuretables-image] connect-azuretables][connect-azuretables-url] An [Azure Table Storage](https://azure.microsoft.com/en-gb/services/storage/tables/)-based session store. + +[connect-azuretables-url]: https://www.npmjs.com/package/connect-azuretables +[connect-azuretables-image]: https://badgen.net/github/stars/mike-goodwin/connect-azuretables?label=%E2%98%85 + +[![★][connect-cloudant-store-image] connect-cloudant-store][connect-cloudant-store-url] An [IBM Cloudant](https://cloudant.com/)-based session store. + +[connect-cloudant-store-url]: https://www.npmjs.com/package/connect-cloudant-store +[connect-cloudant-store-image]: https://badgen.net/github/stars/adriantanasa/connect-cloudant-store?label=%E2%98%85 + +[![★][connect-cosmosdb-image] connect-cosmosdb][connect-cosmosdb-url] An Azure [Cosmos DB](https://azure.microsoft.com/en-us/products/cosmos-db/)-based session store. + +[connect-cosmosdb-url]: https://www.npmjs.com/package/connect-cosmosdb +[connect-cosmosdb-image]: https://badgen.net/github/stars/thekillingspree/connect-cosmosdb?label=%E2%98%85 + +[![★][connect-couchbase-image] connect-couchbase][connect-couchbase-url] A [couchbase](http://www.couchbase.com/)-based session store. + +[connect-couchbase-url]: https://www.npmjs.com/package/connect-couchbase +[connect-couchbase-image]: https://badgen.net/github/stars/christophermina/connect-couchbase?label=%E2%98%85 + +[![★][connect-datacache-image] connect-datacache][connect-datacache-url] An [IBM Bluemix Data Cache](http://www.ibm.com/cloud-computing/bluemix/)-based session store. + +[connect-datacache-url]: https://www.npmjs.com/package/connect-datacache +[connect-datacache-image]: https://badgen.net/github/stars/adriantanasa/connect-datacache?label=%E2%98%85 + +[![★][@google-cloud/connect-datastore-image] @google-cloud/connect-datastore][@google-cloud/connect-datastore-url] A [Google Cloud Datastore](https://cloud.google.com/datastore/docs/concepts/overview)-based session store. + +[@google-cloud/connect-datastore-url]: https://www.npmjs.com/package/@google-cloud/connect-datastore +[@google-cloud/connect-datastore-image]: https://badgen.net/github/stars/GoogleCloudPlatform/cloud-datastore-session-node?label=%E2%98%85 + +[![★][connect-db2-image] connect-db2][connect-db2-url] An IBM DB2-based session store built using [ibm_db](https://www.npmjs.com/package/ibm_db) module. + +[connect-db2-url]: https://www.npmjs.com/package/connect-db2 +[connect-db2-image]: https://badgen.net/github/stars/wallali/connect-db2?label=%E2%98%85 + +[![★][connect-dynamodb-image] connect-dynamodb][connect-dynamodb-url] A DynamoDB-based session store. + +[connect-dynamodb-url]: https://www.npmjs.com/package/connect-dynamodb +[connect-dynamodb-image]: https://badgen.net/github/stars/ca98am79/connect-dynamodb?label=%E2%98%85 + +[![★][@google-cloud/connect-firestore-image] @google-cloud/connect-firestore][@google-cloud/connect-firestore-url] A [Google Cloud Firestore](https://cloud.google.com/firestore/docs/overview)-based session store. + +[@google-cloud/connect-firestore-url]: https://www.npmjs.com/package/@google-cloud/connect-firestore +[@google-cloud/connect-firestore-image]: https://badgen.net/github/stars/googleapis/nodejs-firestore-session?label=%E2%98%85 + +[![★][connect-hazelcast-image] connect-hazelcast][connect-hazelcast-url] Hazelcast session store for Connect and Express. + +[connect-hazelcast-url]: https://www.npmjs.com/package/connect-hazelcast +[connect-hazelcast-image]: https://badgen.net/github/stars/huseyinbabal/connect-hazelcast?label=%E2%98%85 + +[![★][connect-loki-image] connect-loki][connect-loki-url] A Loki.js-based session store. + +[connect-loki-url]: https://www.npmjs.com/package/connect-loki +[connect-loki-image]: https://badgen.net/github/stars/Requarks/connect-loki?label=%E2%98%85 + +[![★][connect-lowdb-image] connect-lowdb][connect-lowdb-url] A lowdb-based session store. + +[connect-lowdb-url]: https://www.npmjs.com/package/connect-lowdb +[connect-lowdb-image]: https://badgen.net/github/stars/travishorn/connect-lowdb?label=%E2%98%85 + +[![★][connect-memcached-image] connect-memcached][connect-memcached-url] A memcached-based session store. + +[connect-memcached-url]: https://www.npmjs.com/package/connect-memcached +[connect-memcached-image]: https://badgen.net/github/stars/balor/connect-memcached?label=%E2%98%85 + +[![★][connect-memjs-image] connect-memjs][connect-memjs-url] A memcached-based session store using +[memjs](https://www.npmjs.com/package/memjs) as the memcached client. + +[connect-memjs-url]: https://www.npmjs.com/package/connect-memjs +[connect-memjs-image]: https://badgen.net/github/stars/liamdon/connect-memjs?label=%E2%98%85 + +[![★][connect-ml-image] connect-ml][connect-ml-url] A MarkLogic Server-based session store. + +[connect-ml-url]: https://www.npmjs.com/package/connect-ml +[connect-ml-image]: https://badgen.net/github/stars/bluetorch/connect-ml?label=%E2%98%85 + +[![★][connect-monetdb-image] connect-monetdb][connect-monetdb-url] A MonetDB-based session store. + +[connect-monetdb-url]: https://www.npmjs.com/package/connect-monetdb +[connect-monetdb-image]: https://badgen.net/github/stars/MonetDB/npm-connect-monetdb?label=%E2%98%85 + +[![★][connect-mongo-image] connect-mongo][connect-mongo-url] A MongoDB-based session store. + +[connect-mongo-url]: https://www.npmjs.com/package/connect-mongo +[connect-mongo-image]: https://badgen.net/github/stars/kcbanner/connect-mongo?label=%E2%98%85 + +[![★][connect-mongodb-session-image] connect-mongodb-session][connect-mongodb-session-url] Lightweight MongoDB-based session store built and maintained by MongoDB. + +[connect-mongodb-session-url]: https://www.npmjs.com/package/connect-mongodb-session +[connect-mongodb-session-image]: https://badgen.net/github/stars/mongodb-js/connect-mongodb-session?label=%E2%98%85 + +[![★][connect-mssql-v2-image] connect-mssql-v2][connect-mssql-v2-url] A Microsoft SQL Server-based session store based on [connect-mssql](https://www.npmjs.com/package/connect-mssql). + +[connect-mssql-v2-url]: https://www.npmjs.com/package/connect-mssql-v2 +[connect-mssql-v2-image]: https://badgen.net/github/stars/jluboff/connect-mssql-v2?label=%E2%98%85 + +[![★][connect-neo4j-image] connect-neo4j][connect-neo4j-url] A [Neo4j](https://neo4j.com)-based session store. + +[connect-neo4j-url]: https://www.npmjs.com/package/connect-neo4j +[connect-neo4j-image]: https://badgen.net/github/stars/MaxAndersson/connect-neo4j?label=%E2%98%85 + +[![★][connect-ottoman-image] connect-ottoman][connect-ottoman-url] A [couchbase ottoman](http://www.couchbase.com/)-based session store. + +[connect-ottoman-url]: https://www.npmjs.com/package/connect-ottoman +[connect-ottoman-image]: https://badgen.net/github/stars/noiissyboy/connect-ottoman?label=%E2%98%85 + +[![★][connect-pg-simple-image] connect-pg-simple][connect-pg-simple-url] A PostgreSQL-based session store. + +[connect-pg-simple-url]: https://www.npmjs.com/package/connect-pg-simple +[connect-pg-simple-image]: https://badgen.net/github/stars/voxpelli/node-connect-pg-simple?label=%E2%98%85 + +[![★][connect-redis-image] connect-redis][connect-redis-url] A Redis-based session store. + +[connect-redis-url]: https://www.npmjs.com/package/connect-redis +[connect-redis-image]: https://badgen.net/github/stars/tj/connect-redis?label=%E2%98%85 + +[![★][connect-session-firebase-image] connect-session-firebase][connect-session-firebase-url] A session store based on the [Firebase Realtime Database](https://firebase.google.com/docs/database/) + +[connect-session-firebase-url]: https://www.npmjs.com/package/connect-session-firebase +[connect-session-firebase-image]: https://badgen.net/github/stars/benweier/connect-session-firebase?label=%E2%98%85 + +[![★][connect-session-knex-image] connect-session-knex][connect-session-knex-url] A session store using +[Knex.js](http://knexjs.org/), which is a SQL query builder for PostgreSQL, MySQL, MariaDB, SQLite3, and Oracle. + +[connect-session-knex-url]: https://www.npmjs.com/package/connect-session-knex +[connect-session-knex-image]: https://badgen.net/github/stars/llambda/connect-session-knex?label=%E2%98%85 + +[![★][connect-session-sequelize-image] connect-session-sequelize][connect-session-sequelize-url] A session store using +[Sequelize.js](http://sequelizejs.com/), which is a Node.js / io.js ORM for PostgreSQL, MySQL, SQLite and MSSQL. + +[connect-session-sequelize-url]: https://www.npmjs.com/package/connect-session-sequelize +[connect-session-sequelize-image]: https://badgen.net/github/stars/mweibel/connect-session-sequelize?label=%E2%98%85 + +[![★][connect-sqlite3-image] connect-sqlite3][connect-sqlite3-url] A [SQLite3](https://github.com/mapbox/node-sqlite3) session store modeled after the TJ's `connect-redis` store. + +[connect-sqlite3-url]: https://www.npmjs.com/package/connect-sqlite3 +[connect-sqlite3-image]: https://badgen.net/github/stars/rawberg/connect-sqlite3?label=%E2%98%85 + +[![★][connect-typeorm-image] connect-typeorm][connect-typeorm-url] A [TypeORM](https://github.com/typeorm/typeorm)-based session store. + +[connect-typeorm-url]: https://www.npmjs.com/package/connect-typeorm +[connect-typeorm-image]: https://badgen.net/github/stars/makepost/connect-typeorm?label=%E2%98%85 + +[![★][couchdb-expression-image] couchdb-expression][couchdb-expression-url] A [CouchDB](https://couchdb.apache.org/)-based session store. + +[couchdb-expression-url]: https://www.npmjs.com/package/couchdb-expression +[couchdb-expression-image]: https://badgen.net/github/stars/tkshnwesper/couchdb-expression?label=%E2%98%85 + +[![★][dynamodb-store-image] dynamodb-store][dynamodb-store-url] A DynamoDB-based session store. + +[dynamodb-store-url]: https://www.npmjs.com/package/dynamodb-store +[dynamodb-store-image]: https://badgen.net/github/stars/rafaelrpinto/dynamodb-store?label=%E2%98%85 + +[![★][dynamodb-store-v3-image] dynamodb-store-v3][dynamodb-store-v3-url] Implementation of a session store using DynamoDB backed by the [AWS SDK for JavaScript v3](https://github.com/aws/aws-sdk-js-v3). + +[dynamodb-store-v3-url]: https://www.npmjs.com/package/dynamodb-store-v3 +[dynamodb-store-v3-image]: https://badgen.net/github/stars/FryDay/dynamodb-store-v3?label=%E2%98%85 + +[![★][express-etcd-image] express-etcd][express-etcd-url] An [etcd](https://github.com/stianeikeland/node-etcd) based session store. + +[express-etcd-url]: https://www.npmjs.com/package/express-etcd +[express-etcd-image]: https://badgen.net/github/stars/gildean/express-etcd?label=%E2%98%85 + +[![★][express-mysql-session-image] express-mysql-session][express-mysql-session-url] A session store using native +[MySQL](https://www.mysql.com/) via the [node-mysql](https://github.com/felixge/node-mysql) module. + +[express-mysql-session-url]: https://www.npmjs.com/package/express-mysql-session +[express-mysql-session-image]: https://badgen.net/github/stars/chill117/express-mysql-session?label=%E2%98%85 + +[![★][express-nedb-session-image] express-nedb-session][express-nedb-session-url] A NeDB-based session store. + +[express-nedb-session-url]: https://www.npmjs.com/package/express-nedb-session +[express-nedb-session-image]: https://badgen.net/github/stars/louischatriot/express-nedb-session?label=%E2%98%85 + +[![★][express-oracle-session-image] express-oracle-session][express-oracle-session-url] A session store using native +[oracle](https://www.oracle.com/) via the [node-oracledb](https://www.npmjs.com/package/oracledb) module. + +[express-oracle-session-url]: https://www.npmjs.com/package/express-oracle-session +[express-oracle-session-image]: https://badgen.net/github/stars/slumber86/express-oracle-session?label=%E2%98%85 + +[![★][express-session-cache-manager-image] express-session-cache-manager][express-session-cache-manager-url] +A store that implements [cache-manager](https://www.npmjs.com/package/cache-manager), which supports +a [variety of storage types](https://www.npmjs.com/package/cache-manager#store-engines). + +[express-session-cache-manager-url]: https://www.npmjs.com/package/express-session-cache-manager +[express-session-cache-manager-image]: https://badgen.net/github/stars/theogravity/express-session-cache-manager?label=%E2%98%85 + +[![★][express-session-etcd3-image] express-session-etcd3][express-session-etcd3-url] An [etcd3](https://github.com/mixer/etcd3) based session store. + +[express-session-etcd3-url]: https://www.npmjs.com/package/express-session-etcd3 +[express-session-etcd3-image]: https://badgen.net/github/stars/willgm/express-session-etcd3?label=%E2%98%85 + +[![★][express-session-level-image] express-session-level][express-session-level-url] A [LevelDB](https://github.com/Level/levelup) based session store. + +[express-session-level-url]: https://www.npmjs.com/package/express-session-level +[express-session-level-image]: https://badgen.net/github/stars/tgohn/express-session-level?label=%E2%98%85 + +[![★][express-session-rsdb-image] express-session-rsdb][express-session-rsdb-url] Session store based on Rocket-Store: A very simple, super fast and yet powerfull, flat file database. + +[express-session-rsdb-url]: https://www.npmjs.com/package/express-session-rsdb +[express-session-rsdb-image]: https://badgen.net/github/stars/paragi/express-session-rsdb?label=%E2%98%85 + +[![★][express-sessions-image] express-sessions][express-sessions-url] A session store supporting both MongoDB and Redis. + +[express-sessions-url]: https://www.npmjs.com/package/express-sessions +[express-sessions-image]: https://badgen.net/github/stars/konteck/express-sessions?label=%E2%98%85 + +[![★][firestore-store-image] firestore-store][firestore-store-url] A [Firestore](https://github.com/hendrysadrak/firestore-store)-based session store. + +[firestore-store-url]: https://www.npmjs.com/package/firestore-store +[firestore-store-image]: https://badgen.net/github/stars/hendrysadrak/firestore-store?label=%E2%98%85 + +[![★][fortune-session-image] fortune-session][fortune-session-url] A [Fortune.js](https://github.com/fortunejs/fortune) +based session store. Supports all backends supported by Fortune (MongoDB, Redis, Postgres, NeDB). + +[fortune-session-url]: https://www.npmjs.com/package/fortune-session +[fortune-session-image]: https://badgen.net/github/stars/aliceklipper/fortune-session?label=%E2%98%85 + +[![★][hazelcast-store-image] hazelcast-store][hazelcast-store-url] A Hazelcast-based session store built on the [Hazelcast Node Client](https://www.npmjs.com/package/hazelcast-client). + +[hazelcast-store-url]: https://www.npmjs.com/package/hazelcast-store +[hazelcast-store-image]: https://badgen.net/github/stars/jackspaniel/hazelcast-store?label=%E2%98%85 + +[![★][level-session-store-image] level-session-store][level-session-store-url] A LevelDB-based session store. + +[level-session-store-url]: https://www.npmjs.com/package/level-session-store +[level-session-store-image]: https://badgen.net/github/stars/toddself/level-session-store?label=%E2%98%85 + +[![★][lowdb-session-store-image] lowdb-session-store][lowdb-session-store-url] A [lowdb](https://www.npmjs.com/package/lowdb)-based session store. + +[lowdb-session-store-url]: https://www.npmjs.com/package/lowdb-session-store +[lowdb-session-store-image]: https://badgen.net/github/stars/fhellwig/lowdb-session-store?label=%E2%98%85 + +[![★][medea-session-store-image] medea-session-store][medea-session-store-url] A Medea-based session store. + +[medea-session-store-url]: https://www.npmjs.com/package/medea-session-store +[medea-session-store-image]: https://badgen.net/github/stars/BenjaminVadant/medea-session-store?label=%E2%98%85 + +[![★][memorystore-image] memorystore][memorystore-url] A memory session store made for production. + +[memorystore-url]: https://www.npmjs.com/package/memorystore +[memorystore-image]: https://badgen.net/github/stars/roccomuso/memorystore?label=%E2%98%85 + +[![★][mssql-session-store-image] mssql-session-store][mssql-session-store-url] A SQL Server-based session store. + +[mssql-session-store-url]: https://www.npmjs.com/package/mssql-session-store +[mssql-session-store-image]: https://badgen.net/github/stars/jwathen/mssql-session-store?label=%E2%98%85 + +[![★][nedb-session-store-image] nedb-session-store][nedb-session-store-url] An alternate NeDB-based (either in-memory or file-persisted) session store. + +[nedb-session-store-url]: https://www.npmjs.com/package/nedb-session-store +[nedb-session-store-image]: https://badgen.net/github/stars/JamesMGreene/nedb-session-store?label=%E2%98%85 + +[![★][@quixo3/prisma-session-store-image] @quixo3/prisma-session-store][@quixo3/prisma-session-store-url] A session store for the [Prisma Framework](https://www.prisma.io). + +[@quixo3/prisma-session-store-url]: https://www.npmjs.com/package/@quixo3/prisma-session-store +[@quixo3/prisma-session-store-image]: https://badgen.net/github/stars/kleydon/prisma-session-store?label=%E2%98%85 + +[![★][restsession-image] restsession][restsession-url] Store sessions utilizing a RESTful API + +[restsession-url]: https://www.npmjs.com/package/restsession +[restsession-image]: https://badgen.net/github/stars/jankal/restsession?label=%E2%98%85 + +[![★][sequelstore-connect-image] sequelstore-connect][sequelstore-connect-url] A session store using [Sequelize.js](http://sequelizejs.com/). + +[sequelstore-connect-url]: https://www.npmjs.com/package/sequelstore-connect +[sequelstore-connect-image]: https://badgen.net/github/stars/MattMcFarland/sequelstore-connect?label=%E2%98%85 + +[![★][session-file-store-image] session-file-store][session-file-store-url] A file system-based session store. + +[session-file-store-url]: https://www.npmjs.com/package/session-file-store +[session-file-store-image]: https://badgen.net/github/stars/valery-barysok/session-file-store?label=%E2%98%85 + +[![★][session-pouchdb-store-image] session-pouchdb-store][session-pouchdb-store-url] Session store for PouchDB / CouchDB. Accepts embedded, custom, or remote PouchDB instance and realtime synchronization. + +[session-pouchdb-store-url]: https://www.npmjs.com/package/session-pouchdb-store +[session-pouchdb-store-image]: https://badgen.net/github/stars/solzimer/session-pouchdb-store?label=%E2%98%85 + +[![★][@cyclic.sh/session-store-image] @cyclic.sh/session-store][@cyclic.sh/session-store-url] A DynamoDB-based session store for [Cyclic.sh](https://www.cyclic.sh/) apps. + +[@cyclic.sh/session-store-url]: https://www.npmjs.com/package/@cyclic.sh/session-store +[@cyclic.sh/session-store-image]: https://badgen.net/github/stars/cyclic-software/session-store?label=%E2%98%85 + +[![★][@databunker/session-store-image] @databunker/session-store][@databunker/session-store-url] A [Databunker](https://databunker.org/)-based encrypted session store. + +[@databunker/session-store-url]: https://www.npmjs.com/package/@databunker/session-store +[@databunker/session-store-image]: https://badgen.net/github/stars/securitybunker/databunker-session-store?label=%E2%98%85 + +[![★][sessionstore-image] sessionstore][sessionstore-url] A session store that works with various databases. + +[sessionstore-url]: https://www.npmjs.com/package/sessionstore +[sessionstore-image]: https://badgen.net/github/stars/adrai/sessionstore?label=%E2%98%85 + +[![★][tch-nedb-session-image] tch-nedb-session][tch-nedb-session-url] A file system session store based on NeDB. + +[tch-nedb-session-url]: https://www.npmjs.com/package/tch-nedb-session +[tch-nedb-session-image]: https://badgen.net/github/stars/tomaschyly/NeDBSession?label=%E2%98%85 + +## Examples + +### View counter + +A simple example using `express-session` to store page views for a user. + +```js +var express = require('express') +var parseurl = require('parseurl') +var session = require('express-session') + +var app = express() + +app.use(session({ + secret: 'keyboard cat', + resave: false, + saveUninitialized: true +})) + +app.use(function (req, res, next) { + if (!req.session.views) { + req.session.views = {} + } + + // get the url pathname + var pathname = parseurl(req).pathname + + // count the views + req.session.views[pathname] = (req.session.views[pathname] || 0) + 1 + + next() +}) + +app.get('/foo', function (req, res, next) { + res.send('you viewed this page ' + req.session.views['/foo'] + ' times') +}) + +app.get('/bar', function (req, res, next) { + res.send('you viewed this page ' + req.session.views['/bar'] + ' times') +}) + +app.listen(3000) +``` + +### User login + +A simple example using `express-session` to keep a user log in session. + +```js +var escapeHtml = require('escape-html') +var express = require('express') +var session = require('express-session') + +var app = express() + +app.use(session({ + secret: 'keyboard cat', + resave: false, + saveUninitialized: true +})) + +// middleware to test if authenticated +function isAuthenticated (req, res, next) { + if (req.session.user) next() + else next('route') +} + +app.get('/', isAuthenticated, function (req, res) { + // this is only called when there is an authentication user due to isAuthenticated + res.send('hello, ' + escapeHtml(req.session.user) + '!' + + ' Logout') +}) + +app.get('/', function (req, res) { + res.send('') +}) + +app.post('/login', express.urlencoded({ extended: false }), function (req, res) { + // login logic to validate req.body.user and req.body.pass + // would be implemented here. for this example any combo works + + // regenerate the session, which is good practice to help + // guard against forms of session fixation + req.session.regenerate(function (err) { + if (err) next(err) + + // store user information in session, typically a user id + req.session.user = req.body.user + + // save the session before redirection to ensure page + // load does not happen before session is saved + req.session.save(function (err) { + if (err) return next(err) + res.redirect('/') + }) + }) +}) + +app.get('/logout', function (req, res, next) { + // logout logic + + // clear the user from the session object and save. + // this will ensure that re-using the old session id + // does not have a logged in user + req.session.user = null + req.session.save(function (err) { + if (err) next(err) + + // regenerate the session, which is good practice to help + // guard against forms of session fixation + req.session.regenerate(function (err) { + if (err) next(err) + res.redirect('/') + }) + }) +}) + +app.listen(3000) +``` + +## Debugging + +This module uses the [debug](https://www.npmjs.com/package/debug) module +internally to log information about session operations. + +To see all the internal logs, set the `DEBUG` environment variable to +`express-session` when launching your app (`npm start`, in this example): + +```sh +$ DEBUG=express-session npm start +``` + +On Windows, use the corresponding command; + +```sh +> set DEBUG=express-session & npm start +``` + +## License + +[MIT](LICENSE) + +[rfc-6265bis-03-4.1.2.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7 +[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/ +[rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1 +[ci-image]: https://badgen.net/github/checks/expressjs/session/master?label=ci +[ci-url]: https://github.com/expressjs/session/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/session/master +[coveralls-url]: https://coveralls.io/r/expressjs/session?branch=master +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/express-session +[npm-url]: https://npmjs.org/package/express-session +[npm-version-image]: https://badgen.net/npm/v/express-session diff --git a/www2/www2/node_modules/express-session/index.js b/www2/www2/node_modules/express-session/index.js new file mode 100644 index 0000000..d41b237 --- /dev/null +++ b/www2/www2/node_modules/express-session/index.js @@ -0,0 +1,693 @@ +/*! + * express-session + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + * @private + */ + +var Buffer = require('safe-buffer').Buffer +var cookie = require('cookie'); +var crypto = require('crypto') +var debug = require('debug')('express-session'); +var deprecate = require('depd')('express-session'); +var onHeaders = require('on-headers') +var parseUrl = require('parseurl'); +var signature = require('cookie-signature') +var uid = require('uid-safe').sync + +var Cookie = require('./session/cookie') +var MemoryStore = require('./session/memory') +var Session = require('./session/session') +var Store = require('./session/store') + +// environment + +var env = process.env.NODE_ENV; + +/** + * Expose the middleware. + */ + +exports = module.exports = session; + +/** + * Expose constructors. + */ + +exports.Store = Store; +exports.Cookie = Cookie; +exports.Session = Session; +exports.MemoryStore = MemoryStore; + +/** + * Warning message for `MemoryStore` usage in production. + * @private + */ + +var warning = 'Warning: connect.session() MemoryStore is not\n' + + 'designed for a production environment, as it will leak\n' + + 'memory, and will not scale past a single process.'; + +/** + * Node.js 0.8+ async implementation. + * @private + */ + +/* istanbul ignore next */ +var defer = typeof setImmediate === 'function' + ? setImmediate + : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) } + +/** + * Setup session store with the given `options`. + * + * @param {Object} [options] + * @param {Object} [options.cookie] Options for cookie + * @param {Function} [options.genid] + * @param {String} [options.name=connect.sid] Session ID cookie name + * @param {Boolean} [options.proxy] + * @param {Boolean} [options.resave] Resave unmodified sessions back to the store + * @param {Boolean} [options.rolling] Enable/disable rolling session expiration + * @param {Boolean} [options.saveUninitialized] Save uninitialized sessions to the store + * @param {String|Array} [options.secret] Secret for signing session ID + * @param {Object} [options.store=MemoryStore] Session store + * @param {String} [options.unset] + * @return {Function} middleware + * @public + */ + +function session(options) { + var opts = options || {} + + // get the cookie options + var cookieOptions = opts.cookie || {} + + // get the session id generate function + var generateId = opts.genid || generateSessionId + + // get the session cookie name + var name = opts.name || opts.key || 'connect.sid' + + // get the session store + var store = opts.store || new MemoryStore() + + // get the trust proxy setting + var trustProxy = opts.proxy + + // get the resave session option + var resaveSession = opts.resave; + + // get the rolling session option + var rollingSessions = Boolean(opts.rolling) + + // get the save uninitialized session option + var saveUninitializedSession = opts.saveUninitialized + + // get the cookie signing secret + var secret = opts.secret + + if (typeof generateId !== 'function') { + throw new TypeError('genid option must be a function'); + } + + if (resaveSession === undefined) { + deprecate('undefined resave option; provide resave option'); + resaveSession = true; + } + + if (saveUninitializedSession === undefined) { + deprecate('undefined saveUninitialized option; provide saveUninitialized option'); + saveUninitializedSession = true; + } + + if (opts.unset && opts.unset !== 'destroy' && opts.unset !== 'keep') { + throw new TypeError('unset option must be "destroy" or "keep"'); + } + + // TODO: switch to "destroy" on next major + var unsetDestroy = opts.unset === 'destroy' + + if (Array.isArray(secret) && secret.length === 0) { + throw new TypeError('secret option array must contain one or more strings'); + } + + if (secret && !Array.isArray(secret)) { + secret = [secret]; + } + + if (!secret) { + deprecate('req.secret; provide secret option'); + } + + // notify user that this store is not + // meant for a production environment + /* istanbul ignore next: not tested */ + if (env === 'production' && store instanceof MemoryStore) { + console.warn(warning); + } + + // generates the new session + store.generate = function(req){ + req.sessionID = generateId(req); + req.session = new Session(req); + req.session.cookie = new Cookie(cookieOptions); + + if (cookieOptions.secure === 'auto') { + req.session.cookie.secure = issecure(req, trustProxy); + } + }; + + var storeImplementsTouch = typeof store.touch === 'function'; + + // register event listeners for the store to track readiness + var storeReady = true + store.on('disconnect', function ondisconnect() { + storeReady = false + }) + store.on('connect', function onconnect() { + storeReady = true + }) + + return function session(req, res, next) { + // self-awareness + if (req.session) { + next() + return + } + + // Handle connection as if there is no session if + // the store has temporarily disconnected etc + if (!storeReady) { + debug('store is disconnected') + next() + return + } + + // pathname mismatch + var originalPath = parseUrl.original(req).pathname || '/' + if (originalPath.indexOf(cookieOptions.path || '/') !== 0) { + debug('pathname mismatch') + next() + return + } + + // ensure a secret is available or bail + if (!secret && !req.secret) { + next(new Error('secret option required for sessions')); + return; + } + + // backwards compatibility for signed cookies + // req.secret is passed from the cookie parser middleware + var secrets = secret || [req.secret]; + + var originalHash; + var originalId; + var savedHash; + var touched = false + + // expose store + req.sessionStore = store; + + // get the session ID from the cookie + var cookieId = req.sessionID = getcookie(req, name, secrets); + + // set-cookie + onHeaders(res, function(){ + if (!req.session) { + debug('no session'); + return; + } + + if (!shouldSetCookie(req)) { + return; + } + + // only send secure cookies via https + if (req.session.cookie.secure && !issecure(req, trustProxy)) { + debug('not secured'); + return; + } + + if (!touched) { + // touch session + req.session.touch() + touched = true + } + + // set cookie + try { + setcookie(res, name, req.sessionID, secrets[0], req.session.cookie.data) + } catch (err) { + defer(next, err) + } + }); + + // proxy end() to commit the session + var _end = res.end; + var _write = res.write; + var ended = false; + res.end = function end(chunk, encoding) { + if (ended) { + return false; + } + + ended = true; + + var ret; + var sync = true; + + function writeend() { + if (sync) { + ret = _end.call(res, chunk, encoding); + sync = false; + return; + } + + _end.call(res); + } + + function writetop() { + if (!sync) { + return ret; + } + + if (!res._header) { + res._implicitHeader() + } + + if (chunk == null) { + ret = true; + return ret; + } + + var contentLength = Number(res.getHeader('Content-Length')); + + if (!isNaN(contentLength) && contentLength > 0) { + // measure chunk + chunk = !Buffer.isBuffer(chunk) + ? Buffer.from(chunk, encoding) + : chunk; + encoding = undefined; + + if (chunk.length !== 0) { + debug('split response'); + ret = _write.call(res, chunk.slice(0, chunk.length - 1)); + chunk = chunk.slice(chunk.length - 1, chunk.length); + return ret; + } + } + + ret = _write.call(res, chunk, encoding); + sync = false; + + return ret; + } + + if (shouldDestroy(req)) { + // destroy session + debug('destroying'); + store.destroy(req.sessionID, function ondestroy(err) { + if (err) { + defer(next, err); + } + + debug('destroyed'); + writeend(); + }); + + return writetop(); + } + + // no session to save + if (!req.session) { + debug('no session'); + return _end.call(res, chunk, encoding); + } + + if (!touched) { + // touch session + req.session.touch() + touched = true + } + + if (shouldSave(req)) { + req.session.save(function onsave(err) { + if (err) { + defer(next, err); + } + + writeend(); + }); + + return writetop(); + } else if (storeImplementsTouch && shouldTouch(req)) { + // store implements touch method + debug('touching'); + store.touch(req.sessionID, req.session, function ontouch(err) { + if (err) { + defer(next, err); + } + + debug('touched'); + writeend(); + }); + + return writetop(); + } + + return _end.call(res, chunk, encoding); + }; + + // generate the session + function generate() { + store.generate(req); + originalId = req.sessionID; + originalHash = hash(req.session); + wrapmethods(req.session); + } + + // inflate the session + function inflate (req, sess) { + store.createSession(req, sess) + originalId = req.sessionID + originalHash = hash(sess) + + if (!resaveSession) { + savedHash = originalHash + } + + wrapmethods(req.session) + } + + function rewrapmethods (sess, callback) { + return function () { + if (req.session !== sess) { + wrapmethods(req.session) + } + + callback.apply(this, arguments) + } + } + + // wrap session methods + function wrapmethods(sess) { + var _reload = sess.reload + var _save = sess.save; + + function reload(callback) { + debug('reloading %s', this.id) + _reload.call(this, rewrapmethods(this, callback)) + } + + function save() { + debug('saving %s', this.id); + savedHash = hash(this); + _save.apply(this, arguments); + } + + Object.defineProperty(sess, 'reload', { + configurable: true, + enumerable: false, + value: reload, + writable: true + }) + + Object.defineProperty(sess, 'save', { + configurable: true, + enumerable: false, + value: save, + writable: true + }); + } + + // check if session has been modified + function isModified(sess) { + return originalId !== sess.id || originalHash !== hash(sess); + } + + // check if session has been saved + function isSaved(sess) { + return originalId === sess.id && savedHash === hash(sess); + } + + // determine if session should be destroyed + function shouldDestroy(req) { + return req.sessionID && unsetDestroy && req.session == null; + } + + // determine if session should be saved to store + function shouldSave(req) { + // cannot set cookie without a session ID + if (typeof req.sessionID !== 'string') { + debug('session ignored because of bogus req.sessionID %o', req.sessionID); + return false; + } + + return !saveUninitializedSession && !savedHash && cookieId !== req.sessionID + ? isModified(req.session) + : !isSaved(req.session) + } + + // determine if session should be touched + function shouldTouch(req) { + // cannot set cookie without a session ID + if (typeof req.sessionID !== 'string') { + debug('session ignored because of bogus req.sessionID %o', req.sessionID); + return false; + } + + return cookieId === req.sessionID && !shouldSave(req); + } + + // determine if cookie should be set on response + function shouldSetCookie(req) { + // cannot set cookie without a session ID + if (typeof req.sessionID !== 'string') { + return false; + } + + return cookieId !== req.sessionID + ? saveUninitializedSession || isModified(req.session) + : rollingSessions || req.session.cookie.expires != null && isModified(req.session); + } + + // generate a session if the browser doesn't send a sessionID + if (!req.sessionID) { + debug('no SID sent, generating session'); + generate(); + next(); + return; + } + + // generate the session object + debug('fetching %s', req.sessionID); + store.get(req.sessionID, function(err, sess){ + // error handling + if (err && err.code !== 'ENOENT') { + debug('error %j', err); + next(err) + return + } + + try { + if (err || !sess) { + debug('no session found') + generate() + } else { + debug('session found') + inflate(req, sess) + } + } catch (e) { + next(e) + return + } + + next() + }); + }; +}; + +/** + * Generate a session ID for a new session. + * + * @return {String} + * @private + */ + +function generateSessionId(sess) { + return uid(24); +} + +/** + * Get the session ID cookie from request. + * + * @return {string} + * @private + */ + +function getcookie(req, name, secrets) { + var header = req.headers.cookie; + var raw; + var val; + + // read from cookie header + if (header) { + var cookies = cookie.parse(header); + + raw = cookies[name]; + + if (raw) { + if (raw.substr(0, 2) === 's:') { + val = unsigncookie(raw.slice(2), secrets); + + if (val === false) { + debug('cookie signature invalid'); + val = undefined; + } + } else { + debug('cookie unsigned') + } + } + } + + // back-compat read from cookieParser() signedCookies data + if (!val && req.signedCookies) { + val = req.signedCookies[name]; + + if (val) { + deprecate('cookie should be available in req.headers.cookie'); + } + } + + // back-compat read from cookieParser() cookies data + if (!val && req.cookies) { + raw = req.cookies[name]; + + if (raw) { + if (raw.substr(0, 2) === 's:') { + val = unsigncookie(raw.slice(2), secrets); + + if (val) { + deprecate('cookie should be available in req.headers.cookie'); + } + + if (val === false) { + debug('cookie signature invalid'); + val = undefined; + } + } else { + debug('cookie unsigned') + } + } + } + + return val; +} + +/** + * Hash the given `sess` object omitting changes to `.cookie`. + * + * @param {Object} sess + * @return {String} + * @private + */ + +function hash(sess) { + // serialize + var str = JSON.stringify(sess, function (key, val) { + // ignore sess.cookie property + if (this === sess && key === 'cookie') { + return + } + + return val + }) + + // hash + return crypto + .createHash('sha1') + .update(str, 'utf8') + .digest('hex') +} + +/** + * Determine if request is secure. + * + * @param {Object} req + * @param {Boolean} [trustProxy] + * @return {Boolean} + * @private + */ + +function issecure(req, trustProxy) { + // socket is https server + if (req.connection && req.connection.encrypted) { + return true; + } + + // do not trust proxy + if (trustProxy === false) { + return false; + } + + // no explicit trust; try req.secure from express + if (trustProxy !== true) { + return req.secure === true + } + + // read the proto from x-forwarded-proto header + var header = req.headers['x-forwarded-proto'] || ''; + var index = header.indexOf(','); + var proto = index !== -1 + ? header.substr(0, index).toLowerCase().trim() + : header.toLowerCase().trim() + + return proto === 'https'; +} + +/** + * Set cookie on response. + * + * @private + */ + +function setcookie(res, name, val, secret, options) { + var signed = 's:' + signature.sign(val, secret); + var data = cookie.serialize(name, signed, options); + + debug('set-cookie %s', data); + + var prev = res.getHeader('Set-Cookie') || [] + var header = Array.isArray(prev) ? prev.concat(data) : [prev, data]; + + res.setHeader('Set-Cookie', header) +} + +/** + * Verify and decode the given `val` with `secrets`. + * + * @param {String} val + * @param {Array} secrets + * @returns {String|Boolean} + * @private + */ +function unsigncookie(val, secrets) { + for (var i = 0; i < secrets.length; i++) { + var result = signature.unsign(val, secrets[i]); + + if (result !== false) { + return result; + } + } + + return false; +} diff --git a/www2/www2/node_modules/express-session/node_modules/cookie-signature/History.md b/www2/www2/node_modules/express-session/node_modules/cookie-signature/History.md new file mode 100644 index 0000000..bcf8cc9 --- /dev/null +++ b/www2/www2/node_modules/express-session/node_modules/cookie-signature/History.md @@ -0,0 +1,42 @@ +1.0.7 / 2023-04-12 +================== + +* backport the buffer support from the 1.2.x release branch (thanks @FadhiliNjagi!) + +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 diff --git a/www2/www2/node_modules/express-session/node_modules/cookie-signature/Readme.md b/www2/www2/node_modules/express-session/node_modules/cookie-signature/Readme.md new file mode 100644 index 0000000..2559e84 --- /dev/null +++ b/www2/www2/node_modules/express-session/node_modules/cookie-signature/Readme.md @@ -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. \ No newline at end of file diff --git a/www2/www2/node_modules/express-session/node_modules/cookie-signature/index.js b/www2/www2/node_modules/express-session/node_modules/cookie-signature/index.js new file mode 100644 index 0000000..336d487 --- /dev/null +++ b/www2/www2/node_modules/express-session/node_modules/cookie-signature/index.js @@ -0,0 +1,51 @@ +/** + * Module dependencies. + */ + +var crypto = require('crypto'); + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} 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 (null == secret) throw new TypeError("Secret key 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|NodeJS.ArrayBufferView|crypto.KeyObject} 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 (null == secret) throw new TypeError("Secret key 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'); +} diff --git a/www2/www2/node_modules/express-session/node_modules/cookie-signature/package.json b/www2/www2/node_modules/express-session/node_modules/cookie-signature/package.json new file mode 100644 index 0000000..738487b --- /dev/null +++ b/www2/www2/node_modules/express-session/node_modules/cookie-signature/package.json @@ -0,0 +1,18 @@ +{ + "name": "cookie-signature", + "version": "1.0.7", + "description": "Sign and unsign cookies", + "keywords": ["cookie", "sign", "unsign"], + "author": "TJ Holowaychuk