html-re/node_modules/readable-stream/lib/_stream_readable.js

1019 lines
31 KiB
JavaScript
Raw Normal View History

new file: .vscode/settings.json new file: node_modules/.bin/mime new file: node_modules/.bin/mime.cmd new file: node_modules/.bin/mime.ps1 new file: node_modules/.package-lock.json new file: node_modules/accepts/HISTORY.md new file: node_modules/accepts/LICENSE new file: node_modules/accepts/README.md new file: node_modules/accepts/index.js new file: node_modules/accepts/package.json new file: node_modules/array-flatten/LICENSE new file: node_modules/array-flatten/README.md new file: node_modules/array-flatten/array-flatten.js new file: node_modules/array-flatten/package.json new file: node_modules/bignumber.js/CHANGELOG.md new file: node_modules/bignumber.js/LICENCE new file: node_modules/bignumber.js/README.md new file: node_modules/bignumber.js/bignumber.d.ts new file: node_modules/bignumber.js/bignumber.js new file: node_modules/bignumber.js/bignumber.min.js new file: node_modules/bignumber.js/bignumber.min.js.map new file: node_modules/bignumber.js/bignumber.mjs new file: node_modules/bignumber.js/doc/API.html new file: node_modules/bignumber.js/package.json new file: node_modules/body-parser/HISTORY.md new file: node_modules/body-parser/LICENSE new file: node_modules/body-parser/README.md new file: node_modules/body-parser/SECURITY.md new file: node_modules/body-parser/index.js new file: node_modules/body-parser/lib/read.js new file: node_modules/body-parser/lib/types/json.js new file: node_modules/body-parser/lib/types/raw.js new file: node_modules/body-parser/lib/types/text.js new file: node_modules/body-parser/lib/types/urlencoded.js new file: node_modules/body-parser/package.json new file: node_modules/bytes/History.md new file: node_modules/bytes/LICENSE new file: node_modules/bytes/Readme.md new file: node_modules/bytes/index.js new file: node_modules/bytes/package.json new file: node_modules/call-bind/.eslintignore new file: node_modules/call-bind/.eslintrc new file: node_modules/call-bind/.github/FUNDING.yml new file: node_modules/call-bind/.nycrc new file: node_modules/call-bind/CHANGELOG.md new file: node_modules/call-bind/LICENSE new file: node_modules/call-bind/README.md new file: node_modules/call-bind/callBound.js new file: node_modules/call-bind/index.js new file: node_modules/call-bind/package.json new file: node_modules/call-bind/test/callBound.js new file: node_modules/call-bind/test/index.js new file: node_modules/content-disposition/HISTORY.md new file: node_modules/content-disposition/LICENSE new file: node_modules/content-disposition/README.md new file: node_modules/content-disposition/index.js new file: node_modules/content-disposition/package.json new file: node_modules/content-type/HISTORY.md new file: node_modules/content-type/LICENSE new file: node_modules/content-type/README.md new file: node_modules/content-type/index.js new file: node_modules/content-type/package.json new file: node_modules/cookie-signature/.npmignore new file: node_modules/cookie-signature/History.md new file: node_modules/cookie-signature/Readme.md new file: node_modules/cookie-signature/index.js new file: node_modules/cookie-signature/package.json new file: node_modules/cookie/HISTORY.md new file: node_modules/cookie/LICENSE new file: node_modules/cookie/README.md new file: node_modules/cookie/SECURITY.md new file: node_modules/cookie/index.js new file: node_modules/cookie/package.json new file: node_modules/core-util-is/LICENSE new file: node_modules/core-util-is/README.md new file: node_modules/core-util-is/lib/util.js new file: node_modules/core-util-is/package.json new file: node_modules/cors/CONTRIBUTING.md new file: node_modules/cors/HISTORY.md new file: node_modules/cors/LICENSE new file: node_modules/cors/README.md new file: node_modules/cors/lib/index.js new file: node_modules/cors/package.json new file: node_modules/debug/.coveralls.yml new file: node_modules/debug/.eslintrc new file: node_modules/debug/.npmignore new file: node_modules/debug/.travis.yml new file: node_modules/debug/CHANGELOG.md new file: node_modules/debug/LICENSE new file: node_modules/debug/Makefile new file: node_modules/debug/README.md new file: node_modules/debug/component.json new file: node_modules/debug/karma.conf.js new file: node_modules/debug/node.js new file: node_modules/debug/package.json new file: node_modules/debug/src/browser.js new file: node_modules/debug/src/debug.js new file: node_modules/debug/src/index.js new file: node_modules/debug/src/inspector-log.js new file: node_modules/debug/src/node.js new file: node_modules/define-data-property/.eslintrc new file: node_modules/define-data-property/.github/FUNDING.yml new file: node_modules/define-data-property/.nycrc new file: node_modules/define-data-property/CHANGELOG.md new file: node_modules/define-data-property/LICENSE new file: node_modules/define-data-property/README.md new file: node_modules/define-data-property/index.d.ts new file: node_modules/define-data-property/index.js new file: node_modules/define-data-property/package.json new file: node_modules/define-data-property/test/index.js new file: node_modules/define-data-property/tsconfig.json new file: node_modules/depd/History.md new file: node_modules/depd/LICENSE new file: node_modules/depd/Readme.md new file: node_modules/depd/index.js new file: node_modules/depd/lib/browser/index.js new file: node_modules/depd/package.json new file: node_modules/destroy/LICENSE new file: node_modules/destroy/README.md new file: node_modules/destroy/index.js new file: node_modules/destroy/package.json new file: node_modules/ee-first/LICENSE new file: node_modules/ee-first/README.md new file: node_modules/ee-first/index.js new file: node_modules/ee-first/package.json new file: node_modules/encodeurl/HISTORY.md new file: node_modules/encodeurl/LICENSE new file: node_modules/encodeurl/README.md new file: node_modules/encodeurl/index.js new file: node_modules/encodeurl/package.json new file: node_modules/es-define-property/.eslintrc new file: node_modules/es-define-property/.github/FUNDING.yml new file: node_modules/es-define-property/.nycrc new file: node_modules/es-define-property/CHANGELOG.md new file: node_modules/es-define-property/LICENSE new file: node_modules/es-define-property/README.md new file: node_modules/es-define-property/index.d.ts new file: node_modules/es-define-property/index.js new file: node_modules/es-define-property/package.json new file: node_modules/es-define-property/test/index.js new file: node_modules/es-define-property/tsconfig.json new file: node_modules/es-errors/.eslintrc new file: node_modules/es-errors/.github/FUNDING.yml new file: node_modules/es-errors/CHANGELOG.md new file: node_modules/es-errors/LICENSE new file: node_modules/es-errors/README.md new file: node_modules/es-errors/eval.d.ts new file: node_modules/es-errors/eval.js new file: node_modules/es-errors/index.d.ts new file: node_modules/es-errors/index.js new file: node_modules/es-errors/package.json new file: node_modules/es-errors/range.d.ts new file: node_modules/es-errors/range.js new file: node_modules/es-errors/ref.d.ts new file: node_modules/es-errors/ref.js new file: node_modules/es-errors/syntax.d.ts new file: node_modules/es-errors/syntax.js new file: node_modules/es-errors/test/index.js new file: node_modules/es-errors/tsconfig.json new file: node_modules/es-errors/type.d.ts new file: node_modules/es-errors/type.js new file: node_modules/es-errors/uri.d.ts new file: node_modules/es-errors/uri.js new file: node_modules/escape-html/LICENSE new file: node_modules/escape-html/Readme.md new file: node_modules/escape-html/index.js new file: node_modules/escape-html/package.json new file: node_modules/etag/HISTORY.md new file: node_modules/etag/LICENSE new file: node_modules/etag/README.md new file: node_modules/etag/index.js new file: node_modules/etag/package.json new file: node_modules/express/History.md new file: node_modules/express/LICENSE new file: node_modules/express/Readme.md new file: node_modules/express/index.js new file: node_modules/express/lib/application.js new file: node_modules/express/lib/express.js new file: node_modules/express/lib/middleware/init.js new file: node_modules/express/lib/middleware/query.js new file: node_modules/express/lib/request.js new file: node_modules/express/lib/response.js new file: node_modules/express/lib/router/index.js new file: node_modules/express/lib/router/layer.js new file: node_modules/express/lib/router/route.js new file: node_modules/express/lib/utils.js new file: node_modules/express/lib/view.js new file: node_modules/express/package.json new file: node_modules/finalhandler/HISTORY.md new file: node_modules/finalhandler/LICENSE new file: node_modules/finalhandler/README.md new file: node_modules/finalhandler/SECURITY.md new file: node_modules/finalhandler/index.js new file: node_modules/finalhandler/package.json new file: node_modules/forwarded/HISTORY.md new file: node_modules/forwarded/LICENSE new file: node_modules/forwarded/README.md new file: node_modules/forwarded/index.js new file: node_modules/forwarded/package.json new file: node_modules/fresh/HISTORY.md new file: node_modules/fresh/LICENSE new file: node_modules/fresh/README.md new file: node_modules/fresh/index.js new file: node_modules/fresh/package.json new file: node_modules/function-bind/.eslintrc new file: node_modules/function-bind/.github/FUNDING.yml new file: node_modules/function-bind/.github/SECURITY.md new file: node_modules/function-bind/.nycrc new file: node_modules/function-bind/CHANGELOG.md new file: node_modules/function-bind/LICENSE new file: node_modules/function-bind/README.md new file: node_modules/function-bind/implementation.js new file: node_modules/function-bind/index.js new file: node_modules/function-bind/package.json new file: node_modules/function-bind/test/.eslintrc new file: node_modules/function-bind/test/index.js new file: node_modules/get-intrinsic/.eslintrc new file: node_modules/get-intrinsic/.github/FUNDING.yml new file: node_modules/get-intrinsic/.nycrc new file: node_modules/get-intrinsic/CHANGELOG.md new file: node_modules/get-intrinsic/LICENSE new file: node_modules/get-intrinsic/README.md new file: node_modules/get-intrinsic/index.js new file: node_modules/get-intrinsic/package.json new file: node_modules/get-intrinsic/test/GetIntrinsic.js new file: node_modules/gopd/.eslintrc new file: node_modules/gopd/.github/FUNDING.yml new file: node_modules/gopd/CHANGELOG.md new file: node_modules/gopd/LICENSE new file: node_modules/gopd/README.md new file: node_modules/gopd/index.js new file: node_modules/gopd/package.json new file: node_modules/gopd/test/index.js new file: node_modules/has-property-descriptors/.eslintrc new file: node_modules/has-property-descriptors/.github/FUNDING.yml new file: node_modules/has-property-descriptors/.nycrc new file: node_modules/has-property-descriptors/CHANGELOG.md new file: node_modules/has-property-descriptors/LICENSE new file: node_modules/has-property-descriptors/README.md new file: node_modules/has-property-descriptors/index.js new file: node_modules/has-property-descriptors/package.json new file: node_modules/has-property-descriptors/test/index.js new file: node_modules/has-proto/.eslintrc new file: node_modules/has-proto/.github/FUNDING.yml new file: node_modules/has-proto/CHANGELOG.md new file: node_modules/has-proto/LICENSE new file: node_modules/has-proto/README.md new file: node_modules/has-proto/index.d.ts new file: node_modules/has-proto/index.js new file: node_modules/has-proto/package.json new file: node_modules/has-proto/test/index.js new file: node_modules/has-proto/tsconfig.json new file: node_modules/has-symbols/.eslintrc new file: node_modules/has-symbols/.github/FUNDING.yml new file: node_modules/has-symbols/.nycrc new file: node_modules/has-symbols/CHANGELOG.md new file: node_modules/has-symbols/LICENSE new file: node_modules/has-symbols/README.md new file: node_modules/has-symbols/index.js new file: node_modules/has-symbols/package.json new file: node_modules/has-symbols/shams.js new file: node_modules/has-symbols/test/index.js new file: node_modules/has-symbols/test/shams/core-js.js new file: node_modules/has-symbols/test/shams/get-own-property-symbols.js new file: node_modules/has-symbols/test/tests.js new file: node_modules/hasown/.eslintrc new file: node_modules/hasown/.github/FUNDING.yml new file: node_modules/hasown/.nycrc new file: node_modules/hasown/CHANGELOG.md new file: node_modules/hasown/LICENSE new file: node_modules/hasown/README.md new file: node_modules/hasown/index.d.ts new file: node_modules/hasown/index.js new file: node_modules/hasown/package.json new file: node_modules/hasown/tsconfig.json new file: node_modules/http-errors/HISTORY.md new file: node_modules/http-errors/LICENSE new file: node_modules/http-errors/README.md new file: node_modules/http-errors/index.js new file: node_modules/http-errors/package.json new file: node_modules/iconv-lite/Changelog.md new file: node_modules/iconv-lite/LICENSE new file: node_modules/iconv-lite/README.md new file: node_modules/iconv-lite/encodings/dbcs-codec.js new file: node_modules/iconv-lite/encodings/dbcs-data.js new file: node_modules/iconv-lite/encodings/index.js new file: node_modules/iconv-lite/encodings/internal.js new file: node_modules/iconv-lite/encodings/sbcs-codec.js new file: node_modules/iconv-lite/encodings/sbcs-data-generated.js new file: node_modules/iconv-lite/encodings/sbcs-data.js new file: node_modules/iconv-lite/encodings/tables/big5-added.json new file: node_modules/iconv-lite/encodings/tables/cp936.json new file: node_modules/iconv-lite/encodings/tables/cp949.json new file: node_modules/iconv-lite/encodings/tables/cp950.json new file: node_modules/iconv-lite/encodings/tables/eucjp.json new file: node_modules/iconv-lite/encodings/tables/gb18030-ranges.json new file: node_modules/iconv-lite/encodings/tables/gbk-added.json new file: node_modules/iconv-lite/encodings/tables/shiftjis.json new file: node_modules/iconv-lite/encodings/utf16.js new file: node_modules/iconv-lite/encodings/utf7.js new file: node_modules/iconv-lite/lib/bom-handling.js new file: node_modules/iconv-lite/lib/extend-node.js new file: node_modules/iconv-lite/lib/index.d.ts new file: node_modules/iconv-lite/lib/index.js new file: node_modules/iconv-lite/lib/streams.js new file: node_modules/iconv-lite/package.json new file: node_modules/inherits/LICENSE new file: node_modules/inherits/README.md new file: node_modules/inherits/inherits.js new file: node_modules/inherits/inherits_browser.js new file: node_modules/inherits/package.json new file: node_modules/ipaddr.js/LICENSE new file: node_modules/ipaddr.js/README.md new file: node_modules/ipaddr.js/ipaddr.min.js new file: node_modules/ipaddr.js/lib/ipaddr.js new file: node_modules/ipaddr.js/lib/ipaddr.js.d.ts new file: node_modules/ipaddr.js/package.json new file: node_modules/isarray/.npmignore new file: node_modules/isarray/.travis.yml new file: node_modules/isarray/Makefile new file: node_modules/isarray/README.md new file: node_modules/isarray/component.json new file: node_modules/isarray/index.js new file: node_modules/isarray/package.json new file: node_modules/isarray/test.js new file: node_modules/media-typer/HISTORY.md new file: node_modules/media-typer/LICENSE new file: node_modules/media-typer/README.md new file: node_modules/media-typer/index.js new file: node_modules/media-typer/package.json new file: node_modules/merge-descriptors/HISTORY.md new file: node_modules/merge-descriptors/LICENSE new file: node_modules/merge-descriptors/README.md new file: node_modules/merge-descriptors/index.js new file: node_modules/merge-descriptors/package.json new file: node_modules/methods/HISTORY.md new file: node_modules/methods/LICENSE new file: node_modules/methods/README.md new file: node_modules/methods/index.js new file: node_modules/methods/package.json new file: node_modules/mime-db/HISTORY.md new file: node_modules/mime-db/LICENSE new file: node_modules/mime-db/README.md new file: node_modules/mime-db/db.json new file: node_modules/mime-db/index.js new file: node_modules/mime-db/package.json new file: node_modules/mime-types/HISTORY.md new file: node_modules/mime-types/LICENSE new file: node_modules/mime-types/README.md new file: node_modules/mime-types/index.js new file: node_modules/mime-types/package.json new file: node_modules/mime/.npmignore new file: node_modules/mime/CHANGELOG.md new file: node_modules/mime/LICENSE new file: node_modules/mime/README.md new file: node_modules/mime/cli.js new file: node_modules/mime/mime.js new file: node_modules/mime/package.json new file: node_modules/mime/src/build.js new file: node_modules/mime/src/test.js new file: node_modules/mime/types.json new file: node_modules/ms/index.js new file: node_modules/ms/license.md new file: node_modules/ms/package.json new file: node_modules/ms/readme.md new file: node_modules/mysql/Changes.md new file: node_modules/mysql/License new file: node_modules/mysql/Readme.md new file: node_modules/mysql/index.js new file: node_modules/mysql/lib/Connection.js new file: node_modules/mysql/lib/ConnectionConfig.js new file: node_modules/mysql/lib/Pool.js new file: node_modules/mysql/lib/PoolCluster.js new file: node_modules/mysql/lib/PoolConfig.js new file: node_modules/mysql/lib/PoolConnection.js new file: node_modules/mysql/lib/PoolNamespace.js new file: node_modules/mysql/lib/PoolSelector.js new file: node_modules/mysql/lib/protocol/Auth.js new file: node_modules/mysql/lib/protocol/BufferList.js new file: node_modules/mysql/lib/protocol/PacketHeader.js new file: node_modules/mysql/lib/protocol/PacketWriter.js new file: node_modules/mysql/lib/protocol/Parser.js new file: node_modules/mysql/lib/protocol/Protocol.js new file: node_modules/mysql/lib/protocol/ResultSet.js new file: node_modules/mysql/lib/protocol/SqlString.js new file: node_modules/mysql/lib/protocol/Timer.js new file: node_modules/mysql/lib/protocol/constants/charsets.js new file: node_modules/mysql/lib/protocol/constants/client.js new file: node_modules/mysql/lib/protocol/constants/errors.js new file: node_modules/mysql/lib/protocol/constants/field_flags.js new file: node_modules/mysql/lib/protocol/constants/server_status.js new file: node_modules/mysql/lib/protocol/constants/ssl_profiles.js new file: node_modules/mysql/lib/protocol/constants/types.js new file: node_modules/mysql/lib/protocol/packets/AuthSwitchRequestPacket.js new file: node_modules/mysql/lib/protocol/packets/AuthSwitchResponsePacket.js new file: node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js new file: node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js new file: node_modules/mysql/lib/protocol/packets/ComPingPacket.js new file: node_modules/mysql/lib/protocol/packets/ComQueryPacket.js new file: node_modules/mysql/lib/protocol/packets/ComQuitPacket.js new file: node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js new file: node_modules/mysql/lib/protocol/packets/EmptyPacket.js new file: node_modules/mysql/lib/protocol/packets/EofPacket.js new file: node_modules/mysql/lib/protocol/packets/ErrorPacket.js new file: node_modules/mysql/lib/protocol/packets/Field.js new file: node_modules/mysql/lib/protocol/packets/FieldPacket.js new file: node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js new file: node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js new file: node_modules/mysql/lib/protocol/packets/LocalInfileRequestPacket.js new file: node_modules/mysql/lib/protocol/packets/OkPacket.js new file: node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js new file: node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js new file: node_modules/mysql/lib/protocol/packets/RowDataPacket.js new file: node_modules/mysql/lib/protocol/packets/SSLRequestPacket.js new file: node_modules/mysql/lib/protocol/packets/StatisticsPacket.js new file: node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js new file: node_modules/mysql/lib/protocol/packets/index.js new file: node_modules/mysql/lib/protocol/sequences/ChangeUser.js new file: node_modules/mysql/lib/protocol/sequences/Handshake.js new file: node_modules/mysql/lib/protocol/sequences/Ping.js new file: node_modules/mysql/lib/protocol/sequences/Query.js new file: node_modules/mysql/lib/protocol/sequences/Quit.js new file: node_modules/mysql/lib/protocol/sequences/Sequence.js new file: node_modules/mysql/lib/protocol/sequences/Statistics.js new file: node_modules/mysql/lib/protocol/sequences/index.js new file: node_modules/mysql/node_modules/safe-buffer/LICENSE new file: node_modules/mysql/node_modules/safe-buffer/README.md new file: node_modules/mysql/node_modules/safe-buffer/index.d.ts new file: node_modules/mysql/node_modules/safe-buffer/index.js new file: node_modules/mysql/node_modules/safe-buffer/package.json new file: node_modules/mysql/package.json new file: node_modules/negotiator/HISTORY.md new file: node_modules/negotiator/LICENSE new file: node_modules/negotiator/README.md new file: node_modules/negotiator/index.js new file: node_modules/negotiator/lib/charset.js new file: node_modules/negotiator/lib/encoding.js new file: node_modules/negotiator/lib/language.js new file: node_modules/negotiator/lib/mediaType.js new file: node_modules/negotiator/package.json new file: node_modules/object-assign/index.js new file: node_modules/object-assign/license new file: node_modules/object-assign/package.json new file: node_modules/object-assign/readme.md new file: node_modules/object-inspect/.eslintrc new file: node_modules/object-inspect/.github/FUNDING.yml new file: node_modules/object-inspect/.nycrc new file: node_modules/object-inspect/CHANGELOG.md new file: node_modules/object-inspect/LICENSE new file: node_modules/object-inspect/example/all.js new file: node_modules/object-inspect/example/circular.js new file: node_modules/object-inspect/example/fn.js new file: node_modules/object-inspect/example/inspect.js new file: node_modules/object-inspect/index.js new file: node_modules/object-inspect/package-support.json new file: node_modules/object-inspect/package.json new file: node_modules/object-inspect/readme.markdown new file: node_modules/object-inspect/test-core-js.js new file: node_modules/object-inspect/test/bigint.js new file: node_modules/object-inspect/test/browser/dom.js new file: node_modules/object-inspect/test/circular.js new file: node_modules/object-inspect/test/deep.js new file: node_modules/object-inspect/test/element.js new file: node_modules/object-inspect/test/err.js new file: node_modules/object-inspect/test/fakes.js new file: node_modules/object-inspect/test/fn.js new file: node_modules/object-inspect/test/global.js new file: node_modules/object-inspect/test/has.js new file: node_modules/object-inspect/test/holes.js new file: node_modules/object-inspect/test/indent-option.js new file: node_modules/object-inspect/test/inspect.js new file: node_modules/object-inspect/test/lowbyte.js new file: node_modules/object-inspect/test/number.js new file: node_modules/object-inspect/test/quoteStyle.js new file: node_modules/object-inspect/test/toStringTag.js new file: node_modules/object-inspect/test/undef.js new file: node_modules/object-inspect/test/values.js new file: node_modules/object-inspect/util.inspect.js new file: node_modules/on-finished/HISTORY.md new file: node_modules/on-finished/LICENSE new file: node_modules/on-finished/README.md new file: node_modules/on-finished/index.js new file: node_modules/on-finished/package.json new file: node_modules/parseurl/HISTORY.md new file: node_modules/parseurl/LICENSE new file: node_modules/parseurl/README.md new file: node_modules/parseurl/index.js new file: node_modules/parseurl/package.json new file: node_modules/path-to-regexp/History.md new file: node_modules/path-to-regexp/LICENSE new file: node_modules/path-to-regexp/Readme.md new file: node_modules/path-to-regexp/index.js new file: node_modules/path-to-regexp/package.json new file: node_modules/process-nextick-args/index.js new file: node_modules/process-nextick-args/license.md new file: node_modules/process-nextick-args/package.json new file: node_modules/process-nextick-args/readme.md new file: node_modules/proxy-addr/HISTORY.md new file: node_modules/proxy-addr/LICENSE new file: node_modules/proxy-addr/README.md new file: node_modules/proxy-addr/index.js new file: node_modules/proxy-addr/package.json new file: node_modules/qs/.editorconfig new file: node_modules/qs/.eslintrc new file: node_modules/qs/.github/FUNDING.yml new file: node_modules/qs/.nycrc new file: node_modules/qs/CHANGELOG.md new file: node_modules/qs/LICENSE.md new file: node_modules/qs/README.md new file: node_modules/qs/dist/qs.js new file: node_modules/qs/lib/formats.js new file: node_modules/qs/lib/index.js new file: node_modules/qs/lib/parse.js new file: node_modules/qs/lib/stringify.js new file: node_modules/qs/lib/utils.js new file: node_modules/qs/package.json new file: node_modules/qs/test/parse.js new file: node_modules/qs/test/stringify.js new file: node_modules/qs/test/utils.js new file: node_modules/range-parser/HISTORY.md new file: node_modules/range-parser/LICENSE new file: node_modules/range-parser/README.md new file: node_modules/range-parser/index.js new file: node_modules/range-parser/package.json new file: node_modules/raw-body/HISTORY.md new file: node_modules/raw-body/LICENSE new file: node_modules/raw-body/README.md new file: node_modules/raw-body/SECURITY.md new file: node_modules/raw-body/index.d.ts new file: node_modules/raw-body/index.js new file: node_modules/raw-body/package.json new file: node_modules/readable-stream/.travis.yml new file: node_modules/readable-stream/CONTRIBUTING.md new file: node_modules/readable-stream/GOVERNANCE.md new file: node_modules/readable-stream/LICENSE new file: node_modules/readable-stream/README.md new file: node_modules/readable-stream/doc/wg-meetings/2015-01-30.md new file: node_modules/readable-stream/duplex-browser.js new file: node_modules/readable-stream/duplex.js new file: node_modules/readable-stream/lib/_stream_duplex.js new file: node_modules/readable-stream/lib/_stream_passthrough.js new file: node_modules/readable-stream/lib/_stream_readable.js new file: node_modules/readable-stream/lib/_stream_transform.js new file: node_modules/readable-stream/lib/_stream_writable.js new file: node_modules/readable-stream/lib/internal/streams/BufferList.js new file: node_modules/readable-stream/lib/internal/streams/destroy.js new file: node_modules/readable-stream/lib/internal/streams/stream-browser.js new file: node_modules/readable-stream/lib/internal/streams/stream.js new file: node_modules/readable-stream/node_modules/safe-buffer/LICENSE new file: node_modules/readable-stream/node_modules/safe-buffer/README.md new file: node_modules/readable-stream/node_modules/safe-buffer/index.d.ts new file: node_modules/readable-stream/node_modules/safe-buffer/index.js new file: node_modules/readable-stream/node_modules/safe-buffer/package.json new file: node_modules/readable-stream/package.json new file: node_modules/readable-stream/passthrough.js new file: node_modules/readable-stream/readable-browser.js new file: node_modules/readable-stream/readable.js new file: node_modules/readable-stream/transform.js new file: node_modules/readable-stream/writable-browser.js new file: node_modules/readable-stream/writable.js new file: node_modules/safe-buffer/LICENSE new file: node_modules/safe-buffer/README.md new file: node_modules/safe-buffer/index.d.ts new file: node_modules/safe-buffer/index.js new file: node_modules/safe-buffer/package.json new file: node_modules/safer-buffer/LICENSE new file: node_modules/safer-buffer/Porting-Buffer.md new file: node_modules/safer-buffer/Readme.md new file: node_modules/safer-buffer/dangerous.js new file: node_modules/safer-buffer/package.json new file: node_modules/safer-buffer/safer.js new file: node_modules/safer-buffer/tests.js new file: node_modules/send/HISTORY.md new file: node_modules/send/LICENSE new file: node_modules/send/README.md new file: node_modules/send/SECURITY.md new file: node_modules/send/index.js new file: node_modules/send/node_modules/ms/index.js new file: node_modules/send/node_modules/ms/license.md new file: node_modules/send/node_modules/ms/package.json new file: node_modules/send/node_modules/ms/readme.md new file: node_modules/send/package.json new file: node_modules/serve-static/HISTORY.md new file: node_modules/serve-static/LICENSE new file: node_modules/serve-static/README.md new file: node_modules/serve-static/index.js new file: node_modules/serve-static/package.json new file: node_modules/set-function-length/.eslintrc new file: node_modules/set-function-length/.github/FUNDING.yml new file: node_modules/set-function-length/.nycrc new file: node_modules/set-function-length/CHANGELOG.md new file: node_modules/set-function-length/LICENSE new file: node_modules/set-function-length/README.md new file: node_modules/set-function-length/env.d.ts new file: node_modules/set-function-length/env.js new file: node_modules/set-function-length/index.d.ts new file: node_modules/set-function-length/index.js new file: node_modules/set-function-length/package.json new file: node_modules/set-function-length/tsconfig.json new file: node_modules/setprototypeof/LICENSE new file: node_modules/setprototypeof/README.md new file: node_modules/setprototypeof/index.d.ts new file: node_modules/setprototypeof/index.js new file: node_modules/setprototypeof/package.json new file: node_modules/setprototypeof/test/index.js new file: node_modules/side-channel/.editorconfig new file: node_modules/side-channel/.eslintrc new file: node_modules/side-channel/.github/FUNDING.yml new file: node_modules/side-channel/.nycrc new file: node_modules/side-channel/CHANGELOG.md new file: node_modules/side-channel/LICENSE new file: node_modules/side-channel/README.md new file: node_modules/side-channel/index.d.ts new file: node_modules/side-channel/index.js new file: node_modules/side-channel/package.json new file: node_modules/side-channel/test/index.js new file: node_modules/side-channel/tsconfig.json new file: node_modules/sqlstring/HISTORY.md new file: node_modules/sqlstring/LICENSE new file: node_modules/sqlstring/README.md new file: node_modules/sqlstring/index.js new file: node_modules/sqlstring/lib/SqlString.js new file: node_modules/sqlstring/package.json new file: node_modules/statuses/HISTORY.md new file: node_modules/statuses/LICENSE new file: node_modules/statuses/README.md new file: node_modules/statuses/codes.json new file: node_modules/statuses/index.js new file: node_modules/statuses/package.json new file: node_modules/string_decoder/.travis.yml new file: node_modules/string_decoder/LICENSE new file: node_modules/string_decoder/README.md new file: node_modules/string_decoder/lib/string_decoder.js new file: node_modules/string_decoder/node_modules/safe-buffer/LICENSE new file: node_modules/string_decoder/node_modules/safe-buffer/README.md new file: node_modules/string_decoder/node_modules/safe-buffer/index.d.ts new file: node_modules/string_decoder/node_modules/safe-buffer/index.js new file: node_modules/string_decoder/node_modules/safe-buffer/package.json new file: node_modules/string_decoder/package.json new file: node_modules/toidentifier/HISTORY.md new file: node_modules/toidentifier/LICENSE new file: node_modules/toidentifier/README.md new file: node_modules/toidentifier/index.js new file: node_modules/toidentifier/package.json new file: node_modules/type-is/HISTORY.md new file: node_modules/type-is/LICENSE new file: node_modules/type-is/README.md new file: node_modules/type-is/index.js new file: node_modules/type-is/package.json new file: node_modules/unpipe/HISTORY.md new file: node_modules/unpipe/LICENSE new file: node_modules/unpipe/README.md new file: node_modules/unpipe/index.js new file: node_modules/unpipe/package.json new file: node_modules/util-deprecate/History.md new file: node_modules/util-deprecate/LICENSE new file: node_modules/util-deprecate/README.md new file: node_modules/util-deprecate/browser.js new file: node_modules/util-deprecate/node.js new file: node_modules/util-deprecate/package.json new file: node_modules/utils-merge/.npmignore new file: node_modules/utils-merge/LICENSE new file: node_modules/utils-merge/README.md new file: node_modules/utils-merge/index.js new file: node_modules/utils-merge/package.json new file: node_modules/vary/HISTORY.md new file: node_modules/vary/LICENSE new file: node_modules/vary/README.md new file: node_modules/vary/index.js new file: node_modules/vary/package.json new file: package-lock.json new file: package.json new file: public/bg.png new file: public/date.html new file: public/index.html new file: public/jpg/1.jpg new file: public/jpg/10.jpg new file: public/jpg/11.jpg new file: public/jpg/12.jpg new file: public/jpg/13.jpg new file: public/jpg/14.jpg new file: public/jpg/15.jpg new file: public/jpg/2.jpg new file: public/jpg/3.jpg new file: public/jpg/4.jpg new file: public/jpg/5.jpg new file: public/jpg/6.jpg new file: public/jpg/7.jpg new file: public/jpg/8.jpg new file: public/jpg/9.jpg new file: public/jquery-3.7.1.min.js new file: public/main.html new file: public/normalize.min.css new file: public/script-main.js new file: public/script.js new file: public/style.css new file: public/styles-main.css new file: public/vue.js new file: server.js
2024-07-13 09:49:13 +08:00
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
'use strict';
/*<replacement>*/
var pna = require('process-nextick-args');
/*</replacement>*/
module.exports = Readable;
/*<replacement>*/
var isArray = require('isarray');
/*</replacement>*/
/*<replacement>*/
var Duplex;
/*</replacement>*/
Readable.ReadableState = ReadableState;
/*<replacement>*/
var EE = require('events').EventEmitter;
var EElistenerCount = function (emitter, type) {
return emitter.listeners(type).length;
};
/*</replacement>*/
/*<replacement>*/
var Stream = require('./internal/streams/stream');
/*</replacement>*/
/*<replacement>*/
var Buffer = require('safe-buffer').Buffer;
var OurUint8Array = global.Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/*</replacement>*/
/*<replacement>*/
var util = Object.create(require('core-util-is'));
util.inherits = require('inherits');
/*</replacement>*/
/*<replacement>*/
var debugUtil = require('util');
var debug = void 0;
if (debugUtil && debugUtil.debuglog) {
debug = debugUtil.debuglog('stream');
} else {
debug = function () {};
}
/*</replacement>*/
var BufferList = require('./internal/streams/BufferList');
var destroyImpl = require('./internal/streams/destroy');
var StringDecoder;
util.inherits(Readable, Stream);
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
function prependListener(emitter, event, fn) {
// Sadly this is not cacheable as some libraries bundle their own
// event emitter implementation with them.
if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
// This is a hack to make sure that our error handler is attached before any
// userland ones. NEVER DO THIS. This is here only because this code needs
// to continue to work with older versions of Node.js that do not include
// the prependListener() method. The goal is to eventually remove this hack.
if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
}
function ReadableState(options, stream) {
Duplex = Duplex || require('./_stream_duplex');
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
var isDuplex = stream instanceof Duplex;
// object stream flag. Used to make read(n) ignore n and to
// make all the buffer merging and length checks go away
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
// the point at which it stops calling _read() to fill the buffer
// Note: 0 is a valid value, means "don't call _read preemptively ever"
var hwm = options.highWaterMark;
var readableHwm = options.readableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
// cast to ints.
this.highWaterMark = Math.floor(this.highWaterMark);
// A linked list is used to store data chunks instead of an array because the
// linked list can remove elements from the beginning faster than
// array.shift()
this.buffer = new BufferList();
this.length = 0;
this.pipes = null;
this.pipesCount = 0;
this.flowing = null;
this.ended = false;
this.endEmitted = false;
this.reading = false;
// a flag to be able to tell if the event 'readable'/'data' is emitted
// immediately, or on a later tick. We set this to true at first, because
// any actions that shouldn't happen until "later" should generally also
// not happen before the first read call.
this.sync = true;
// whenever we return null, then we set a flag to say
// that we're awaiting a 'readable' event emission.
this.needReadable = false;
this.emittedReadable = false;
this.readableListening = false;
this.resumeScheduled = false;
// has it been destroyed
this.destroyed = false;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// the number of writers that are awaiting a drain event in .pipe()s
this.awaitDrain = 0;
// if true, a maybeReadMore has been scheduled
this.readingMore = false;
this.decoder = null;
this.encoding = null;
if (options.encoding) {
if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
this.decoder = new StringDecoder(options.encoding);
this.encoding = options.encoding;
}
}
function Readable(options) {
Duplex = Duplex || require('./_stream_duplex');
if (!(this instanceof Readable)) return new Readable(options);
this._readableState = new ReadableState(options, this);
// legacy
this.readable = true;
if (options) {
if (typeof options.read === 'function') this._read = options.read;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
}
Stream.call(this);
}
Object.defineProperty(Readable.prototype, 'destroyed', {
get: function () {
if (this._readableState === undefined) {
return false;
}
return this._readableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._readableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
}
});
Readable.prototype.destroy = destroyImpl.destroy;
Readable.prototype._undestroy = destroyImpl.undestroy;
Readable.prototype._destroy = function (err, cb) {
this.push(null);
cb(err);
};
// Manually shove something into the read() buffer.
// This returns true if the highWaterMark has not been hit yet,
// similar to how Writable.write() returns true if you should
// write() some more.
Readable.prototype.push = function (chunk, encoding) {
var state = this._readableState;
var skipChunkCheck;
if (!state.objectMode) {
if (typeof chunk === 'string') {
encoding = encoding || state.defaultEncoding;
if (encoding !== state.encoding) {
chunk = Buffer.from(chunk, encoding);
encoding = '';
}
skipChunkCheck = true;
}
} else {
skipChunkCheck = true;
}
return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
};
// Unshift should *always* be something directly out of read()
Readable.prototype.unshift = function (chunk) {
return readableAddChunk(this, chunk, null, true, false);
};
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
var state = stream._readableState;
if (chunk === null) {
state.reading = false;
onEofChunk(stream, state);
} else {
var er;
if (!skipChunkCheck) er = chunkInvalid(state, chunk);
if (er) {
stream.emit('error', er);
} else if (state.objectMode || chunk && chunk.length > 0) {
if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (addToFront) {
if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
} else if (state.ended) {
stream.emit('error', new Error('stream.push() after EOF'));
} else {
state.reading = false;
if (state.decoder && !encoding) {
chunk = state.decoder.write(chunk);
if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
} else {
addChunk(stream, state, chunk, false);
}
}
} else if (!addToFront) {
state.reading = false;
}
}
return needMoreData(state);
}
function addChunk(stream, state, chunk, addToFront) {
if (state.flowing && state.length === 0 && !state.sync) {
stream.emit('data', chunk);
stream.read(0);
} else {
// update the buffer info.
state.length += state.objectMode ? 1 : chunk.length;
if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
if (state.needReadable) emitReadable(stream);
}
maybeReadMore(stream, state);
}
function chunkInvalid(state, chunk) {
var er;
if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new TypeError('Invalid non-string/buffer chunk');
}
return er;
}
// if it's past the high water mark, we can push in some more.
// Also, if we have no data yet, we can stand some
// more bytes. This is to work around cases where hwm=0,
// such as the repl. Also, if the push() triggered a
// readable event, and the user called read(largeNumber) such that
// needReadable was set, then we ought to push more, so that another
// 'readable' event will be triggered.
function needMoreData(state) {
return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
}
Readable.prototype.isPaused = function () {
return this._readableState.flowing === false;
};
// backwards compatibility.
Readable.prototype.setEncoding = function (enc) {
if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
this._readableState.decoder = new StringDecoder(enc);
this._readableState.encoding = enc;
return this;
};
// Don't raise the hwm > 8MB
var MAX_HWM = 0x800000;
function computeNewHighWaterMark(n) {
if (n >= MAX_HWM) {
n = MAX_HWM;
} else {
// Get the next highest power of 2 to prevent increasing hwm excessively in
// tiny amounts
n--;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
n++;
}
return n;
}
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function howMuchToRead(n, state) {
if (n <= 0 || state.length === 0 && state.ended) return 0;
if (state.objectMode) return 1;
if (n !== n) {
// Only flow one buffer at a time
if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
}
// If we're asking for more than the current hwm, then raise the hwm.
if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
if (n <= state.length) return n;
// Don't have enough
if (!state.ended) {
state.needReadable = true;
return 0;
}
return state.length;
}
// you can override either this method, or the async _read(n) below.
Readable.prototype.read = function (n) {
debug('read', n);
n = parseInt(n, 10);
var state = this._readableState;
var nOrig = n;
if (n !== 0) state.emittedReadable = false;
// if we're doing read(0) to trigger a readable event, but we
// already have a bunch of data in the buffer, then just trigger
// the 'readable' event and move on.
if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
debug('read: emitReadable', state.length, state.ended);
if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
return null;
}
n = howMuchToRead(n, state);
// if we've ended, and we're now clear, then finish it up.
if (n === 0 && state.ended) {
if (state.length === 0) endReadable(this);
return null;
}
// All the actual chunk generation logic needs to be
// *below* the call to _read. The reason is that in certain
// synthetic stream cases, such as passthrough streams, _read
// may be a completely synchronous operation which may change
// the state of the read buffer, providing enough data when
// before there was *not* enough.
//
// So, the steps are:
// 1. Figure out what the state of things will be after we do
// a read from the buffer.
//
// 2. If that resulting state will trigger a _read, then call _read.
// Note that this may be asynchronous, or synchronous. Yes, it is
// deeply ugly to write APIs this way, but that still doesn't mean
// that the Readable class should behave improperly, as streams are
// designed to be sync/async agnostic.
// Take note if the _read call is sync or async (ie, if the read call
// has returned yet), so that we know whether or not it's safe to emit
// 'readable' etc.
//
// 3. Actually pull the requested chunks out of the buffer and return.
// if we need a readable event, then we need to do some reading.
var doRead = state.needReadable;
debug('need readable', doRead);
// if we currently have less than the highWaterMark, then also read some
if (state.length === 0 || state.length - n < state.highWaterMark) {
doRead = true;
debug('length less than watermark', doRead);
}
// however, if we've ended, then there's no point, and if we're already
// reading, then it's unnecessary.
if (state.ended || state.reading) {
doRead = false;
debug('reading or ended', doRead);
} else if (doRead) {
debug('do read');
state.reading = true;
state.sync = true;
// if the length is currently zero, then we *need* a readable event.
if (state.length === 0) state.needReadable = true;
// call internal read method
this._read(state.highWaterMark);
state.sync = false;
// If _read pushed data synchronously, then `reading` will be false,
// and we need to re-evaluate how much data we can return to the user.
if (!state.reading) n = howMuchToRead(nOrig, state);
}
var ret;
if (n > 0) ret = fromList(n, state);else ret = null;
if (ret === null) {
state.needReadable = true;
n = 0;
} else {
state.length -= n;
}
if (state.length === 0) {
// If we have nothing in the buffer, then we want to know
// as soon as we *do* get something into the buffer.
if (!state.ended) state.needReadable = true;
// If we tried to read() past the EOF, then emit end on the next tick.
if (nOrig !== n && state.ended) endReadable(this);
}
if (ret !== null) this.emit('data', ret);
return ret;
};
function onEofChunk(stream, state) {
if (state.ended) return;
if (state.decoder) {
var chunk = state.decoder.end();
if (chunk && chunk.length) {
state.buffer.push(chunk);
state.length += state.objectMode ? 1 : chunk.length;
}
}
state.ended = true;
// emit 'readable' now to make sure it gets picked up.
emitReadable(stream);
}
// Don't emit readable right away in sync mode, because this can trigger
// another read() call => stack overflow. This way, it might trigger
// a nextTick recursion warning, but that's not so bad.
function emitReadable(stream) {
var state = stream._readableState;
state.needReadable = false;
if (!state.emittedReadable) {
debug('emitReadable', state.flowing);
state.emittedReadable = true;
if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
}
}
function emitReadable_(stream) {
debug('emit readable');
stream.emit('readable');
flow(stream);
}
// at this point, the user has presumably seen the 'readable' event,
// and called read() to consume some data. that may have triggered
// in turn another _read(n) call, in which case reading = true if
// it's in progress.
// However, if we're not ended, or reading, and the length < hwm,
// then go ahead and try to read some more preemptively.
function maybeReadMore(stream, state) {
if (!state.readingMore) {
state.readingMore = true;
pna.nextTick(maybeReadMore_, stream, state);
}
}
function maybeReadMore_(stream, state) {
var len = state.length;
while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
debug('maybeReadMore read 0');
stream.read(0);
if (len === state.length)
// didn't get any data, stop spinning.
break;else len = state.length;
}
state.readingMore = false;
}
// abstract method. to be overridden in specific implementation classes.
// call cb(er, data) where data is <= n in length.
// for virtual (non-string, non-buffer) streams, "length" is somewhat
// arbitrary, and perhaps not very meaningful.
Readable.prototype._read = function (n) {
this.emit('error', new Error('_read() is not implemented'));
};
Readable.prototype.pipe = function (dest, pipeOpts) {
var src = this;
var state = this._readableState;
switch (state.pipesCount) {
case 0:
state.pipes = dest;
break;
case 1:
state.pipes = [state.pipes, dest];
break;
default:
state.pipes.push(dest);
break;
}
state.pipesCount += 1;
debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
var endFn = doEnd ? onend : unpipe;
if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
dest.on('unpipe', onunpipe);
function onunpipe(readable, unpipeInfo) {
debug('onunpipe');
if (readable === src) {
if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
unpipeInfo.hasUnpiped = true;
cleanup();
}
}
}
function onend() {
debug('onend');
dest.end();
}
// when the dest drains, it reduces the awaitDrain counter
// on the source. This would be more elegant with a .once()
// handler in flow(), but adding and removing repeatedly is
// too slow.
var ondrain = pipeOnDrain(src);
dest.on('drain', ondrain);
var cleanedUp = false;
function cleanup() {
debug('cleanup');
// cleanup event handlers once the pipe is broken
dest.removeListener('close', onclose);
dest.removeListener('finish', onfinish);
dest.removeListener('drain', ondrain);
dest.removeListener('error', onerror);
dest.removeListener('unpipe', onunpipe);
src.removeListener('end', onend);
src.removeListener('end', unpipe);
src.removeListener('data', ondata);
cleanedUp = true;
// if the reader is waiting for a drain event from this
// specific writer, then it would cause it to never start
// flowing again.
// So, if this is awaiting a drain, then we just call it now.
// If we don't know, then assume that we are waiting for one.
if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
}
// If the user pushes more data while we're writing to dest then we'll end up
// in ondata again. However, we only want to increase awaitDrain once because
// dest will only emit one 'drain' event for the multiple writes.
// => Introduce a guard on increasing awaitDrain.
var increasedAwaitDrain = false;
src.on('data', ondata);
function ondata(chunk) {
debug('ondata');
increasedAwaitDrain = false;
var ret = dest.write(chunk);
if (false === ret && !increasedAwaitDrain) {
// If the user unpiped during `dest.write()`, it is possible
// to get stuck in a permanently paused state if that write
// also returned false.
// => Check whether `dest` is still a piping destination.
if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
debug('false write response, pause', src._readableState.awaitDrain);
src._readableState.awaitDrain++;
increasedAwaitDrain = true;
}
src.pause();
}
}
// if the dest has an error, then stop piping into it.
// however, don't suppress the throwing behavior for this.
function onerror(er) {
debug('onerror', er);
unpipe();
dest.removeListener('error', onerror);
if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
}
// Make sure our error handler is attached before userland ones.
prependListener(dest, 'error', onerror);
// Both close and finish should trigger unpipe, but only once.
function onclose() {
dest.removeListener('finish', onfinish);
unpipe();
}
dest.once('close', onclose);
function onfinish() {
debug('onfinish');
dest.removeListener('close', onclose);
unpipe();
}
dest.once('finish', onfinish);
function unpipe() {
debug('unpipe');
src.unpipe(dest);
}
// tell the dest that it's being piped to
dest.emit('pipe', src);
// start the flow if it hasn't been started already.
if (!state.flowing) {
debug('pipe resume');
src.resume();
}
return dest;
};
function pipeOnDrain(src) {
return function () {
var state = src._readableState;
debug('pipeOnDrain', state.awaitDrain);
if (state.awaitDrain) state.awaitDrain--;
if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
state.flowing = true;
flow(src);
}
};
}
Readable.prototype.unpipe = function (dest) {
var state = this._readableState;
var unpipeInfo = { hasUnpiped: false };
// if we're not piping anywhere, then do nothing.
if (state.pipesCount === 0) return this;
// just one destination. most common case.
if (state.pipesCount === 1) {
// passed in one, but it's not the right one.
if (dest && dest !== state.pipes) return this;
if (!dest) dest = state.pipes;
// got a match.
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
if (dest) dest.emit('unpipe', this, unpipeInfo);
return this;
}
// slow case. multiple pipe destinations.
if (!dest) {
// remove all.
var dests = state.pipes;
var len = state.pipesCount;
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
for (var i = 0; i < len; i++) {
dests[i].emit('unpipe', this, unpipeInfo);
}return this;
}
// try to find the right one.
var index = indexOf(state.pipes, dest);
if (index === -1) return this;
state.pipes.splice(index, 1);
state.pipesCount -= 1;
if (state.pipesCount === 1) state.pipes = state.pipes[0];
dest.emit('unpipe', this, unpipeInfo);
return this;
};
// set up data events if they are asked for
// Ensure readable listeners eventually get something
Readable.prototype.on = function (ev, fn) {
var res = Stream.prototype.on.call(this, ev, fn);
if (ev === 'data') {
// Start flowing on next tick if stream isn't explicitly paused
if (this._readableState.flowing !== false) this.resume();
} else if (ev === 'readable') {
var state = this._readableState;
if (!state.endEmitted && !state.readableListening) {
state.readableListening = state.needReadable = true;
state.emittedReadable = false;
if (!state.reading) {
pna.nextTick(nReadingNextTick, this);
} else if (state.length) {
emitReadable(this);
}
}
}
return res;
};
Readable.prototype.addListener = Readable.prototype.on;
function nReadingNextTick(self) {
debug('readable nexttick read 0');
self.read(0);
}
// pause() and resume() are remnants of the legacy readable stream API
// If the user uses them, then switch into old mode.
Readable.prototype.resume = function () {
var state = this._readableState;
if (!state.flowing) {
debug('resume');
state.flowing = true;
resume(this, state);
}
return this;
};
function resume(stream, state) {
if (!state.resumeScheduled) {
state.resumeScheduled = true;
pna.nextTick(resume_, stream, state);
}
}
function resume_(stream, state) {
if (!state.reading) {
debug('resume read 0');
stream.read(0);
}
state.resumeScheduled = false;
state.awaitDrain = 0;
stream.emit('resume');
flow(stream);
if (state.flowing && !state.reading) stream.read(0);
}
Readable.prototype.pause = function () {
debug('call pause flowing=%j', this._readableState.flowing);
if (false !== this._readableState.flowing) {
debug('pause');
this._readableState.flowing = false;
this.emit('pause');
}
return this;
};
function flow(stream) {
var state = stream._readableState;
debug('flow', state.flowing);
while (state.flowing && stream.read() !== null) {}
}
// wrap an old-style stream as the async data source.
// This is *not* part of the readable stream interface.
// It is an ugly unfortunate mess of history.
Readable.prototype.wrap = function (stream) {
var _this = this;
var state = this._readableState;
var paused = false;
stream.on('end', function () {
debug('wrapped end');
if (state.decoder && !state.ended) {
var chunk = state.decoder.end();
if (chunk && chunk.length) _this.push(chunk);
}
_this.push(null);
});
stream.on('data', function (chunk) {
debug('wrapped data');
if (state.decoder) chunk = state.decoder.write(chunk);
// don't skip over falsy values in objectMode
if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
var ret = _this.push(chunk);
if (!ret) {
paused = true;
stream.pause();
}
});
// proxy all the other methods.
// important when wrapping filters and duplexes.
for (var i in stream) {
if (this[i] === undefined && typeof stream[i] === 'function') {
this[i] = function (method) {
return function () {
return stream[method].apply(stream, arguments);
};
}(i);
}
}
// proxy certain important events.
for (var n = 0; n < kProxyEvents.length; n++) {
stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
}
// when we try to consume some more bytes, simply unpause the
// underlying stream.
this._read = function (n) {
debug('wrapped _read', n);
if (paused) {
paused = false;
stream.resume();
}
};
return this;
};
Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._readableState.highWaterMark;
}
});
// exposed for testing purposes only.
Readable._fromList = fromList;
// Pluck off n bytes from an array of buffers.
// Length is the combined lengths of all the buffers in the list.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromList(n, state) {
// nothing buffered
if (state.length === 0) return null;
var ret;
if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
// read it all, truncate the list
if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
state.buffer.clear();
} else {
// read part of list
ret = fromListPartial(n, state.buffer, state.decoder);
}
return ret;
}
// Extracts only enough buffered data to satisfy the amount requested.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromListPartial(n, list, hasStrings) {
var ret;
if (n < list.head.data.length) {
// slice is the same for buffers and strings
ret = list.head.data.slice(0, n);
list.head.data = list.head.data.slice(n);
} else if (n === list.head.data.length) {
// first chunk is a perfect match
ret = list.shift();
} else {
// result spans more than one buffer
ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
}
return ret;
}
// Copies a specified amount of characters from the list of buffered data
// chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBufferString(n, list) {
var p = list.head;
var c = 1;
var ret = p.data;
n -= ret.length;
while (p = p.next) {
var str = p.data;
var nb = n > str.length ? str.length : n;
if (nb === str.length) ret += str;else ret += str.slice(0, n);
n -= nb;
if (n === 0) {
if (nb === str.length) {
++c;
if (p.next) list.head = p.next;else list.head = list.tail = null;
} else {
list.head = p;
p.data = str.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
// Copies a specified amount of bytes from the list of buffered data chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBuffer(n, list) {
var ret = Buffer.allocUnsafe(n);
var p = list.head;
var c = 1;
p.data.copy(ret);
n -= p.data.length;
while (p = p.next) {
var buf = p.data;
var nb = n > buf.length ? buf.length : n;
buf.copy(ret, ret.length - n, 0, nb);
n -= nb;
if (n === 0) {
if (nb === buf.length) {
++c;
if (p.next) list.head = p.next;else list.head = list.tail = null;
} else {
list.head = p;
p.data = buf.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
function endReadable(stream) {
var state = stream._readableState;
// If we get here before consuming all the bytes, then that is a
// bug in node. Should never happen.
if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
if (!state.endEmitted) {
state.ended = true;
pna.nextTick(endReadableNT, state, stream);
}
}
function endReadableNT(state, stream) {
// Check that we didn't get one last unshift.
if (!state.endEmitted && state.length === 0) {
state.endEmitted = true;
stream.readable = false;
stream.emit('end');
}
}
function indexOf(xs, x) {
for (var i = 0, l = xs.length; i < l; i++) {
if (xs[i] === x) return i;
}
return -1;
}