node-server-dev 3.1.5 → 3.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/browser.js +1 -1
- package/dist/cjs/getAllRouter/index.js +1 -1
- package/dist/cjs/hash/index.js +1 -1
- package/dist/cjs/id/index.js +1 -1
- package/dist/cjs/id/random.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/jwt/index.js +1 -1
- package/dist/cjs/mac/index.js +1 -1
- package/dist/cjs/package/mysql2/License +19 -0
- package/dist/cjs/package/mysql2/README.md +114 -0
- package/dist/cjs/package/mysql2/index.d.ts +1 -0
- package/dist/cjs/package/mysql2/index.js +77 -0
- package/dist/cjs/package/mysql2/lib/auth_41.js +95 -0
- package/dist/cjs/package/mysql2/lib/auth_plugins/caching_sha2_password.js +108 -0
- package/dist/cjs/package/mysql2/lib/auth_plugins/caching_sha2_password.md +18 -0
- package/dist/cjs/package/mysql2/lib/auth_plugins/index.js +8 -0
- package/dist/cjs/package/mysql2/lib/auth_plugins/mysql_clear_password.js +17 -0
- package/dist/cjs/package/mysql2/lib/auth_plugins/mysql_native_password.js +34 -0
- package/dist/cjs/package/mysql2/lib/auth_plugins/sha256_password.js +59 -0
- package/dist/cjs/package/mysql2/lib/base/connection.js +945 -0
- package/dist/cjs/package/mysql2/lib/base/pool.js +233 -0
- package/dist/cjs/package/mysql2/lib/base/pool_connection.js +63 -0
- package/dist/cjs/package/mysql2/lib/commands/auth_switch.js +111 -0
- package/dist/cjs/package/mysql2/lib/commands/binlog_dump.js +109 -0
- package/dist/cjs/package/mysql2/lib/commands/change_user.js +68 -0
- package/dist/cjs/package/mysql2/lib/commands/client_handshake.js +241 -0
- package/dist/cjs/package/mysql2/lib/commands/close_statement.js +18 -0
- package/dist/cjs/package/mysql2/lib/commands/command.js +54 -0
- package/dist/cjs/package/mysql2/lib/commands/execute.js +112 -0
- package/dist/cjs/package/mysql2/lib/commands/index.js +27 -0
- package/dist/cjs/package/mysql2/lib/commands/ping.js +36 -0
- package/dist/cjs/package/mysql2/lib/commands/prepare.js +143 -0
- package/dist/cjs/package/mysql2/lib/commands/query.js +329 -0
- package/dist/cjs/package/mysql2/lib/commands/quit.js +29 -0
- package/dist/cjs/package/mysql2/lib/commands/register_slave.js +27 -0
- package/dist/cjs/package/mysql2/lib/commands/server_handshake.js +203 -0
- package/dist/cjs/package/mysql2/lib/compressed_protocol.js +127 -0
- package/dist/cjs/package/mysql2/lib/connection.js +12 -0
- package/dist/cjs/package/mysql2/lib/connection_config.js +292 -0
- package/dist/cjs/package/mysql2/lib/constants/charset_encodings.js +316 -0
- package/dist/cjs/package/mysql2/lib/constants/charsets.js +317 -0
- package/dist/cjs/package/mysql2/lib/constants/client.js +39 -0
- package/dist/cjs/package/mysql2/lib/constants/commands.js +36 -0
- package/dist/cjs/package/mysql2/lib/constants/cursor.js +8 -0
- package/dist/cjs/package/mysql2/lib/constants/encoding_charset.js +49 -0
- package/dist/cjs/package/mysql2/lib/constants/errors.js +3973 -0
- package/dist/cjs/package/mysql2/lib/constants/field_flags.js +20 -0
- package/dist/cjs/package/mysql2/lib/constants/server_status.js +44 -0
- package/dist/cjs/package/mysql2/lib/constants/session_track.js +11 -0
- package/dist/cjs/package/mysql2/lib/constants/ssl_profiles.js +11 -0
- package/dist/cjs/package/mysql2/lib/constants/types.js +64 -0
- package/dist/cjs/package/mysql2/lib/create_connection.js +10 -0
- package/dist/cjs/package/mysql2/lib/create_pool.js +10 -0
- package/dist/cjs/package/mysql2/lib/create_pool_cluster.js +9 -0
- package/dist/cjs/package/mysql2/lib/helpers.js +86 -0
- package/dist/cjs/package/mysql2/lib/packet_parser.js +195 -0
- package/dist/cjs/package/mysql2/lib/packets/auth_next_factor.js +35 -0
- package/dist/cjs/package/mysql2/lib/packets/auth_switch_request.js +38 -0
- package/dist/cjs/package/mysql2/lib/packets/auth_switch_request_more_data.js +33 -0
- package/dist/cjs/package/mysql2/lib/packets/auth_switch_response.js +30 -0
- package/dist/cjs/package/mysql2/lib/packets/binary_row.js +95 -0
- package/dist/cjs/package/mysql2/lib/packets/binlog_dump.js +33 -0
- package/dist/cjs/package/mysql2/lib/packets/binlog_query_statusvars.js +115 -0
- package/dist/cjs/package/mysql2/lib/packets/change_user.js +97 -0
- package/dist/cjs/package/mysql2/lib/packets/close_statement.js +21 -0
- package/dist/cjs/package/mysql2/lib/packets/column_definition.js +291 -0
- package/dist/cjs/package/mysql2/lib/packets/execute.js +214 -0
- package/dist/cjs/package/mysql2/lib/packets/handshake.js +112 -0
- package/dist/cjs/package/mysql2/lib/packets/handshake_response.js +144 -0
- package/dist/cjs/package/mysql2/lib/packets/index.js +152 -0
- package/dist/cjs/package/mysql2/lib/packets/packet.js +931 -0
- package/dist/cjs/package/mysql2/lib/packets/prepare_statement.js +27 -0
- package/dist/cjs/package/mysql2/lib/packets/prepared_statement_header.js +16 -0
- package/dist/cjs/package/mysql2/lib/packets/query.js +27 -0
- package/dist/cjs/package/mysql2/lib/packets/register_slave.js +46 -0
- package/dist/cjs/package/mysql2/lib/packets/resultset_header.js +118 -0
- package/dist/cjs/package/mysql2/lib/packets/ssl_request.js +25 -0
- package/dist/cjs/package/mysql2/lib/packets/text_row.js +47 -0
- package/dist/cjs/package/mysql2/lib/parsers/binary_parser.js +231 -0
- package/dist/cjs/package/mysql2/lib/parsers/parser_cache.js +66 -0
- package/dist/cjs/package/mysql2/lib/parsers/static_binary_parser.js +211 -0
- package/dist/cjs/package/mysql2/lib/parsers/static_text_parser.js +152 -0
- package/dist/cjs/package/mysql2/lib/parsers/string.js +50 -0
- package/dist/cjs/package/mysql2/lib/parsers/text_parser.js +214 -0
- package/dist/cjs/package/mysql2/lib/pool.js +12 -0
- package/dist/cjs/package/mysql2/lib/pool_cluster.js +369 -0
- package/dist/cjs/package/mysql2/lib/pool_config.js +30 -0
- package/dist/cjs/package/mysql2/lib/pool_connection.js +12 -0
- package/dist/cjs/package/mysql2/lib/promise/connection.js +222 -0
- package/dist/cjs/package/mysql2/lib/promise/inherit_events.js +27 -0
- package/dist/cjs/package/mysql2/lib/promise/make_done_cb.js +19 -0
- package/dist/cjs/package/mysql2/lib/promise/pool.js +112 -0
- package/dist/cjs/package/mysql2/lib/promise/pool_cluster.js +54 -0
- package/dist/cjs/package/mysql2/lib/promise/pool_connection.js +19 -0
- package/dist/cjs/package/mysql2/lib/promise/prepared_statement_info.js +32 -0
- package/dist/cjs/package/mysql2/lib/results_stream.js +38 -0
- package/dist/cjs/package/mysql2/lib/server.js +37 -0
- package/dist/cjs/package/mysql2/package.json +80 -0
- package/dist/cjs/package/mysql2/promise.d.ts +131 -0
- package/dist/cjs/package/mysql2/promise.js +202 -0
- package/dist/cjs/package/mysql2/typings/mysql/LICENSE.txt +15 -0
- package/dist/cjs/package/mysql2/typings/mysql/index.d.ts +95 -0
- package/dist/cjs/package/mysql2/typings/mysql/info.txt +1 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/Auth.d.ts +30 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/Connection.d.ts +428 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/Pool.d.ts +69 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/PoolCluster.d.ts +90 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/PoolConnection.d.ts +10 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/Server.d.ts +11 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/constants/CharsetToEncoding.d.ts +8 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/constants/Charsets.d.ts +326 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/constants/Types.d.ts +70 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/constants/index.d.ts +5 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/parsers/ParserCache.d.ts +4 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/parsers/index.d.ts +18 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/parsers/typeCast.d.ts +54 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/Field.d.ts +10 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/FieldPacket.d.ts +27 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/OkPacket.d.ts +23 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/ProcedurePacket.d.ts +13 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader.d.ts +18 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/RowDataPacket.d.ts +9 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/index.d.ts +28 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/params/ErrorPacketParams.d.ts +6 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/params/OkPacketParams.d.ts +9 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/ExecutableBase.d.ts +40 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/Prepare.d.ts +65 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/Query.d.ts +170 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/QueryableBase.d.ts +40 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/Sequence.d.ts +5 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/promise/ExecutableBase.d.ts +21 -0
- package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/promise/QueryableBase.d.ts +21 -0
- package/dist/cjs/package/mysql_backup/index.js +69 -0
- package/dist/cjs/package/mysql_backup/promise.js +187 -0
- package/dist/cjs/server.d.ts +1 -1
- package/dist/cjs/server.d.ts.map +1 -1
- package/dist/cjs/server.js +1 -1
- package/dist/cjs/start.js +1 -1
- package/dist/cjs/update.js +1 -1
- package/dist/esm/browser.js +1 -1
- package/dist/esm/getAllRouter/index.js +1 -1
- package/dist/esm/hash/index.js +1 -1
- package/dist/esm/id/index.js +1 -1
- package/dist/esm/id/random.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/jwt/index.js +1 -1
- package/dist/esm/mac/index.js +1 -1
- package/dist/esm/package/mysql2/License +19 -0
- package/dist/esm/package/mysql2/README.md +114 -0
- package/dist/esm/package/mysql2/index.d.ts +1 -0
- package/dist/esm/package/mysql2/index.js +77 -0
- package/dist/esm/package/mysql2/lib/auth_41.js +95 -0
- package/dist/esm/package/mysql2/lib/auth_plugins/caching_sha2_password.js +108 -0
- package/dist/esm/package/mysql2/lib/auth_plugins/caching_sha2_password.md +18 -0
- package/dist/esm/package/mysql2/lib/auth_plugins/index.js +8 -0
- package/dist/esm/package/mysql2/lib/auth_plugins/mysql_clear_password.js +17 -0
- package/dist/esm/package/mysql2/lib/auth_plugins/mysql_native_password.js +34 -0
- package/dist/esm/package/mysql2/lib/auth_plugins/sha256_password.js +59 -0
- package/dist/esm/package/mysql2/lib/base/connection.js +945 -0
- package/dist/esm/package/mysql2/lib/base/pool.js +233 -0
- package/dist/esm/package/mysql2/lib/base/pool_connection.js +63 -0
- package/dist/esm/package/mysql2/lib/commands/auth_switch.js +111 -0
- package/dist/esm/package/mysql2/lib/commands/binlog_dump.js +109 -0
- package/dist/esm/package/mysql2/lib/commands/change_user.js +68 -0
- package/dist/esm/package/mysql2/lib/commands/client_handshake.js +241 -0
- package/dist/esm/package/mysql2/lib/commands/close_statement.js +18 -0
- package/dist/esm/package/mysql2/lib/commands/command.js +54 -0
- package/dist/esm/package/mysql2/lib/commands/execute.js +112 -0
- package/dist/esm/package/mysql2/lib/commands/index.js +27 -0
- package/dist/esm/package/mysql2/lib/commands/ping.js +36 -0
- package/dist/esm/package/mysql2/lib/commands/prepare.js +143 -0
- package/dist/esm/package/mysql2/lib/commands/query.js +329 -0
- package/dist/esm/package/mysql2/lib/commands/quit.js +29 -0
- package/dist/esm/package/mysql2/lib/commands/register_slave.js +27 -0
- package/dist/esm/package/mysql2/lib/commands/server_handshake.js +203 -0
- package/dist/esm/package/mysql2/lib/compressed_protocol.js +127 -0
- package/dist/esm/package/mysql2/lib/connection.js +12 -0
- package/dist/esm/package/mysql2/lib/connection_config.js +292 -0
- package/dist/esm/package/mysql2/lib/constants/charset_encodings.js +316 -0
- package/dist/esm/package/mysql2/lib/constants/charsets.js +317 -0
- package/dist/esm/package/mysql2/lib/constants/client.js +39 -0
- package/dist/esm/package/mysql2/lib/constants/commands.js +36 -0
- package/dist/esm/package/mysql2/lib/constants/cursor.js +8 -0
- package/dist/esm/package/mysql2/lib/constants/encoding_charset.js +49 -0
- package/dist/esm/package/mysql2/lib/constants/errors.js +3973 -0
- package/dist/esm/package/mysql2/lib/constants/field_flags.js +20 -0
- package/dist/esm/package/mysql2/lib/constants/server_status.js +44 -0
- package/dist/esm/package/mysql2/lib/constants/session_track.js +11 -0
- package/dist/esm/package/mysql2/lib/constants/ssl_profiles.js +11 -0
- package/dist/esm/package/mysql2/lib/constants/types.js +64 -0
- package/dist/esm/package/mysql2/lib/create_connection.js +10 -0
- package/dist/esm/package/mysql2/lib/create_pool.js +10 -0
- package/dist/esm/package/mysql2/lib/create_pool_cluster.js +9 -0
- package/dist/esm/package/mysql2/lib/helpers.js +86 -0
- package/dist/esm/package/mysql2/lib/packet_parser.js +195 -0
- package/dist/esm/package/mysql2/lib/packets/auth_next_factor.js +35 -0
- package/dist/esm/package/mysql2/lib/packets/auth_switch_request.js +38 -0
- package/dist/esm/package/mysql2/lib/packets/auth_switch_request_more_data.js +33 -0
- package/dist/esm/package/mysql2/lib/packets/auth_switch_response.js +30 -0
- package/dist/esm/package/mysql2/lib/packets/binary_row.js +95 -0
- package/dist/esm/package/mysql2/lib/packets/binlog_dump.js +33 -0
- package/dist/esm/package/mysql2/lib/packets/binlog_query_statusvars.js +115 -0
- package/dist/esm/package/mysql2/lib/packets/change_user.js +97 -0
- package/dist/esm/package/mysql2/lib/packets/close_statement.js +21 -0
- package/dist/esm/package/mysql2/lib/packets/column_definition.js +291 -0
- package/dist/esm/package/mysql2/lib/packets/execute.js +214 -0
- package/dist/esm/package/mysql2/lib/packets/handshake.js +112 -0
- package/dist/esm/package/mysql2/lib/packets/handshake_response.js +144 -0
- package/dist/esm/package/mysql2/lib/packets/index.js +152 -0
- package/dist/esm/package/mysql2/lib/packets/packet.js +931 -0
- package/dist/esm/package/mysql2/lib/packets/prepare_statement.js +27 -0
- package/dist/esm/package/mysql2/lib/packets/prepared_statement_header.js +16 -0
- package/dist/esm/package/mysql2/lib/packets/query.js +27 -0
- package/dist/esm/package/mysql2/lib/packets/register_slave.js +46 -0
- package/dist/esm/package/mysql2/lib/packets/resultset_header.js +118 -0
- package/dist/esm/package/mysql2/lib/packets/ssl_request.js +25 -0
- package/dist/esm/package/mysql2/lib/packets/text_row.js +47 -0
- package/dist/esm/package/mysql2/lib/parsers/binary_parser.js +231 -0
- package/dist/esm/package/mysql2/lib/parsers/parser_cache.js +66 -0
- package/dist/esm/package/mysql2/lib/parsers/static_binary_parser.js +211 -0
- package/dist/esm/package/mysql2/lib/parsers/static_text_parser.js +152 -0
- package/dist/esm/package/mysql2/lib/parsers/string.js +50 -0
- package/dist/esm/package/mysql2/lib/parsers/text_parser.js +214 -0
- package/dist/esm/package/mysql2/lib/pool.js +12 -0
- package/dist/esm/package/mysql2/lib/pool_cluster.js +369 -0
- package/dist/esm/package/mysql2/lib/pool_config.js +30 -0
- package/dist/esm/package/mysql2/lib/pool_connection.js +12 -0
- package/dist/esm/package/mysql2/lib/promise/connection.js +222 -0
- package/dist/esm/package/mysql2/lib/promise/inherit_events.js +27 -0
- package/dist/esm/package/mysql2/lib/promise/make_done_cb.js +19 -0
- package/dist/esm/package/mysql2/lib/promise/pool.js +112 -0
- package/dist/esm/package/mysql2/lib/promise/pool_cluster.js +54 -0
- package/dist/esm/package/mysql2/lib/promise/pool_connection.js +19 -0
- package/dist/esm/package/mysql2/lib/promise/prepared_statement_info.js +32 -0
- package/dist/esm/package/mysql2/lib/results_stream.js +38 -0
- package/dist/esm/package/mysql2/lib/server.js +37 -0
- package/dist/esm/package/mysql2/package.json +80 -0
- package/dist/esm/package/mysql2/promise.d.ts +131 -0
- package/dist/esm/package/mysql2/promise.js +202 -0
- package/dist/esm/package/mysql2/typings/mysql/LICENSE.txt +15 -0
- package/dist/esm/package/mysql2/typings/mysql/index.d.ts +95 -0
- package/dist/esm/package/mysql2/typings/mysql/info.txt +1 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/Auth.d.ts +30 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/Connection.d.ts +428 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/Pool.d.ts +69 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/PoolCluster.d.ts +90 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/PoolConnection.d.ts +10 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/Server.d.ts +11 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/constants/CharsetToEncoding.d.ts +8 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/constants/Charsets.d.ts +326 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/constants/Types.d.ts +70 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/constants/index.d.ts +5 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/parsers/ParserCache.d.ts +4 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/parsers/index.d.ts +18 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/parsers/typeCast.d.ts +54 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/Field.d.ts +10 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/FieldPacket.d.ts +27 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/OkPacket.d.ts +23 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/ProcedurePacket.d.ts +13 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader.d.ts +18 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/RowDataPacket.d.ts +9 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/index.d.ts +28 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/params/ErrorPacketParams.d.ts +6 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/params/OkPacketParams.d.ts +9 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/ExecutableBase.d.ts +40 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/Prepare.d.ts +65 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/Query.d.ts +170 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/QueryableBase.d.ts +40 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/Sequence.d.ts +5 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/promise/ExecutableBase.d.ts +21 -0
- package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/promise/QueryableBase.d.ts +21 -0
- package/dist/esm/package/mysql_backup/index.js +69 -0
- package/dist/esm/package/mysql_backup/promise.js +187 -0
- package/dist/esm/server.d.ts +1 -1
- package/dist/esm/server.d.ts.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/start.js +1 -1
- package/dist/esm/update.js +1 -1
- package/package.json +3 -4
@@ -0,0 +1,127 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
// connection mixins
|
4
|
+
// implementation of http://dev.mysql.com/doc/internals/en/compression.html
|
5
|
+
|
6
|
+
const zlib = require('zlib');
|
7
|
+
const PacketParser = require('./packet_parser.js');
|
8
|
+
|
9
|
+
function handleCompressedPacket(packet) {
|
10
|
+
// eslint-disable-next-line consistent-this, no-invalid-this
|
11
|
+
const connection = this;
|
12
|
+
const deflatedLength = packet.readInt24();
|
13
|
+
const body = packet.readBuffer();
|
14
|
+
|
15
|
+
if (deflatedLength !== 0) {
|
16
|
+
connection.inflateQueue.push((task) => {
|
17
|
+
zlib.inflate(body, (err, data) => {
|
18
|
+
if (err) {
|
19
|
+
connection._handleNetworkError(err);
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
connection._bumpCompressedSequenceId(packet.numPackets);
|
23
|
+
connection._inflatedPacketsParser.execute(data);
|
24
|
+
task.done();
|
25
|
+
});
|
26
|
+
});
|
27
|
+
} else {
|
28
|
+
connection.inflateQueue.push((task) => {
|
29
|
+
connection._bumpCompressedSequenceId(packet.numPackets);
|
30
|
+
connection._inflatedPacketsParser.execute(body);
|
31
|
+
task.done();
|
32
|
+
});
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
function writeCompressed(buffer) {
|
37
|
+
// http://dev.mysql.com/doc/internals/en/example-several-mysql-packets.html
|
38
|
+
// note: sending a MySQL Packet of the size 2^24−5 to 2^24−1 via compression
|
39
|
+
// leads to at least one extra compressed packet.
|
40
|
+
// (this is because "length of the packet before compression" need to fit
|
41
|
+
// into 3 byte unsigned int. "length of the packet before compression" includes
|
42
|
+
// 4 byte packet header, hence 2^24−5)
|
43
|
+
const MAX_COMPRESSED_LENGTH = 16777210;
|
44
|
+
let start;
|
45
|
+
if (buffer.length > MAX_COMPRESSED_LENGTH) {
|
46
|
+
for (start = 0; start < buffer.length; start += MAX_COMPRESSED_LENGTH) {
|
47
|
+
writeCompressed.call(
|
48
|
+
// eslint-disable-next-line no-invalid-this
|
49
|
+
this,
|
50
|
+
buffer.slice(start, start + MAX_COMPRESSED_LENGTH)
|
51
|
+
);
|
52
|
+
}
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
|
56
|
+
// eslint-disable-next-line no-invalid-this, consistent-this
|
57
|
+
const connection = this;
|
58
|
+
|
59
|
+
let packetLen = buffer.length;
|
60
|
+
const compressHeader = Buffer.allocUnsafe(7);
|
61
|
+
|
62
|
+
// seqqueue is used here because zlib async execution is routed via thread pool
|
63
|
+
// internally and when we have multiple compressed packets arriving we need
|
64
|
+
// to assemble uncompressed result sequentially
|
65
|
+
(function (seqId) {
|
66
|
+
connection.deflateQueue.push((task) => {
|
67
|
+
zlib.deflate(buffer, (err, compressed) => {
|
68
|
+
if (err) {
|
69
|
+
connection._handleFatalError(err);
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
let compressedLength = compressed.length;
|
73
|
+
|
74
|
+
if (compressedLength < packetLen) {
|
75
|
+
compressHeader.writeUInt8(compressedLength & 0xff, 0);
|
76
|
+
compressHeader.writeUInt16LE(compressedLength >> 8, 1);
|
77
|
+
compressHeader.writeUInt8(seqId, 3);
|
78
|
+
compressHeader.writeUInt8(packetLen & 0xff, 4);
|
79
|
+
compressHeader.writeUInt16LE(packetLen >> 8, 5);
|
80
|
+
connection.writeUncompressed(compressHeader);
|
81
|
+
connection.writeUncompressed(compressed);
|
82
|
+
} else {
|
83
|
+
// http://dev.mysql.com/doc/internals/en/uncompressed-payload.html
|
84
|
+
// To send an uncompressed payload:
|
85
|
+
// - set length of payload before compression to 0
|
86
|
+
// - the compressed payload contains the uncompressed payload instead.
|
87
|
+
compressedLength = packetLen;
|
88
|
+
packetLen = 0;
|
89
|
+
compressHeader.writeUInt8(compressedLength & 0xff, 0);
|
90
|
+
compressHeader.writeUInt16LE(compressedLength >> 8, 1);
|
91
|
+
compressHeader.writeUInt8(seqId, 3);
|
92
|
+
compressHeader.writeUInt8(packetLen & 0xff, 4);
|
93
|
+
compressHeader.writeUInt16LE(packetLen >> 8, 5);
|
94
|
+
connection.writeUncompressed(compressHeader);
|
95
|
+
connection.writeUncompressed(buffer);
|
96
|
+
}
|
97
|
+
task.done();
|
98
|
+
});
|
99
|
+
});
|
100
|
+
})(connection.compressedSequenceId);
|
101
|
+
connection._bumpCompressedSequenceId(1);
|
102
|
+
}
|
103
|
+
|
104
|
+
function enableCompression(connection) {
|
105
|
+
connection._lastWrittenPacketId = 0;
|
106
|
+
connection._lastReceivedPacketId = 0;
|
107
|
+
|
108
|
+
connection._handleCompressedPacket = handleCompressedPacket;
|
109
|
+
connection._inflatedPacketsParser = new PacketParser((p) => {
|
110
|
+
connection.handlePacket(p);
|
111
|
+
}, 4);
|
112
|
+
connection._inflatedPacketsParser._lastPacket = 0;
|
113
|
+
connection.packetParser = new PacketParser((packet) => {
|
114
|
+
connection._handleCompressedPacket(packet);
|
115
|
+
}, 7);
|
116
|
+
|
117
|
+
connection.writeUncompressed = connection.write;
|
118
|
+
connection.write = writeCompressed;
|
119
|
+
|
120
|
+
const seqqueue = require('seq-queue');
|
121
|
+
connection.inflateQueue = seqqueue.createQueue();
|
122
|
+
connection.deflateQueue = seqqueue.createQueue();
|
123
|
+
}
|
124
|
+
|
125
|
+
module.exports = {
|
126
|
+
enableCompression: enableCompression,
|
127
|
+
};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const BaseConnection = require('./base/connection.js');
|
4
|
+
|
5
|
+
class Connection extends BaseConnection {
|
6
|
+
promise(promiseImpl) {
|
7
|
+
const PromiseConnection = require('./promise/connection.js');
|
8
|
+
return new PromiseConnection(this, promiseImpl);
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
module.exports = Connection;
|
@@ -0,0 +1,292 @@
|
|
1
|
+
// This file was modified by Oracle on September 21, 2021.
|
2
|
+
// New connection options for additional authentication factors were
|
3
|
+
// introduced.
|
4
|
+
// Multi-factor authentication capability is now enabled if one of these
|
5
|
+
// options is used.
|
6
|
+
// Modifications copyright (c) 2021, Oracle and/or its affiliates.
|
7
|
+
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
const { URL } = require('url');
|
11
|
+
const ClientConstants = require('./constants/client');
|
12
|
+
const Charsets = require('./constants/charsets');
|
13
|
+
const { version } = require('../package.json');
|
14
|
+
let SSLProfiles = null;
|
15
|
+
|
16
|
+
const validOptions = {
|
17
|
+
authPlugins: 1,
|
18
|
+
authSwitchHandler: 1,
|
19
|
+
bigNumberStrings: 1,
|
20
|
+
charset: 1,
|
21
|
+
charsetNumber: 1,
|
22
|
+
compress: 1,
|
23
|
+
connectAttributes: 1,
|
24
|
+
connectTimeout: 1,
|
25
|
+
database: 1,
|
26
|
+
dateStrings: 1,
|
27
|
+
debug: 1,
|
28
|
+
decimalNumbers: 1,
|
29
|
+
enableKeepAlive: 1,
|
30
|
+
flags: 1,
|
31
|
+
host: 1,
|
32
|
+
insecureAuth: 1,
|
33
|
+
infileStreamFactory: 1,
|
34
|
+
isServer: 1,
|
35
|
+
keepAliveInitialDelay: 1,
|
36
|
+
localAddress: 1,
|
37
|
+
maxPreparedStatements: 1,
|
38
|
+
multipleStatements: 1,
|
39
|
+
namedPlaceholders: 1,
|
40
|
+
nestTables: 1,
|
41
|
+
password: 1,
|
42
|
+
// with multi-factor authentication, the main password (used for the first
|
43
|
+
// authentication factor) can be provided via password1
|
44
|
+
password1: 1,
|
45
|
+
password2: 1,
|
46
|
+
password3: 1,
|
47
|
+
passwordSha1: 1,
|
48
|
+
pool: 1,
|
49
|
+
port: 1,
|
50
|
+
queryFormat: 1,
|
51
|
+
rowsAsArray: 1,
|
52
|
+
socketPath: 1,
|
53
|
+
ssl: 1,
|
54
|
+
stream: 1,
|
55
|
+
stringifyObjects: 1,
|
56
|
+
supportBigNumbers: 1,
|
57
|
+
timezone: 1,
|
58
|
+
trace: 1,
|
59
|
+
typeCast: 1,
|
60
|
+
uri: 1,
|
61
|
+
user: 1,
|
62
|
+
disableEval: 1,
|
63
|
+
// These options are used for Pool
|
64
|
+
connectionLimit: 1,
|
65
|
+
maxIdle: 1,
|
66
|
+
idleTimeout: 1,
|
67
|
+
Promise: 1,
|
68
|
+
queueLimit: 1,
|
69
|
+
waitForConnections: 1,
|
70
|
+
jsonStrings: 1,
|
71
|
+
};
|
72
|
+
|
73
|
+
class ConnectionConfig {
|
74
|
+
constructor(options) {
|
75
|
+
if (typeof options === 'string') {
|
76
|
+
options = ConnectionConfig.parseUrl(options);
|
77
|
+
} else if (options && options.uri) {
|
78
|
+
const uriOptions = ConnectionConfig.parseUrl(options.uri);
|
79
|
+
for (const key in uriOptions) {
|
80
|
+
if (!Object.prototype.hasOwnProperty.call(uriOptions, key)) continue;
|
81
|
+
if (options[key]) continue;
|
82
|
+
options[key] = uriOptions[key];
|
83
|
+
}
|
84
|
+
}
|
85
|
+
for (const key in options) {
|
86
|
+
if (!Object.prototype.hasOwnProperty.call(options, key)) continue;
|
87
|
+
if (validOptions[key] !== 1) {
|
88
|
+
// REVIEW: Should this be emitted somehow?
|
89
|
+
// eslint-disable-next-line no-console
|
90
|
+
console.error(
|
91
|
+
`Ignoring invalid configuration option passed to Connection: ${key}. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an invalid configuration option to a Connection`
|
92
|
+
);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
this.isServer = options.isServer;
|
96
|
+
this.stream = options.stream;
|
97
|
+
this.host = options.host || 'localhost';
|
98
|
+
this.port =
|
99
|
+
(typeof options.port === 'string'
|
100
|
+
? parseInt(options.port, 10)
|
101
|
+
: options.port) || 3306;
|
102
|
+
this.localAddress = options.localAddress;
|
103
|
+
this.socketPath = options.socketPath;
|
104
|
+
this.user = options.user || undefined;
|
105
|
+
// for the purpose of multi-factor authentication, or not, the main
|
106
|
+
// password (used for the 1st authentication factor) can also be
|
107
|
+
// provided via the "password1" option
|
108
|
+
this.password = options.password || options.password1 || undefined;
|
109
|
+
this.password2 = options.password2 || undefined;
|
110
|
+
this.password3 = options.password3 || undefined;
|
111
|
+
this.passwordSha1 = options.passwordSha1 || undefined;
|
112
|
+
this.database = options.database;
|
113
|
+
this.connectTimeout = isNaN(options.connectTimeout)
|
114
|
+
? 10 * 1000
|
115
|
+
: options.connectTimeout;
|
116
|
+
this.insecureAuth = options.insecureAuth || false;
|
117
|
+
this.infileStreamFactory = options.infileStreamFactory || undefined;
|
118
|
+
this.supportBigNumbers = options.supportBigNumbers || false;
|
119
|
+
this.bigNumberStrings = options.bigNumberStrings || false;
|
120
|
+
this.decimalNumbers = options.decimalNumbers || false;
|
121
|
+
this.dateStrings = options.dateStrings || false;
|
122
|
+
this.debug = options.debug;
|
123
|
+
this.trace = options.trace !== false;
|
124
|
+
this.stringifyObjects = options.stringifyObjects || false;
|
125
|
+
this.enableKeepAlive = options.enableKeepAlive !== false;
|
126
|
+
this.keepAliveInitialDelay = options.keepAliveInitialDelay;
|
127
|
+
if (
|
128
|
+
options.timezone &&
|
129
|
+
!/^(?:local|Z|[ +-]\d\d:\d\d)$/.test(options.timezone)
|
130
|
+
) {
|
131
|
+
// strictly supports timezones specified by mysqljs/mysql:
|
132
|
+
// https://github.com/mysqljs/mysql#user-content-connection-options
|
133
|
+
// eslint-disable-next-line no-console
|
134
|
+
console.error(
|
135
|
+
`Ignoring invalid timezone passed to Connection: ${options.timezone}. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an invalid configuration option to a Connection`
|
136
|
+
);
|
137
|
+
// SqlStrings falls back to UTC on invalid timezone
|
138
|
+
this.timezone = 'Z';
|
139
|
+
} else {
|
140
|
+
this.timezone = options.timezone || 'local';
|
141
|
+
}
|
142
|
+
this.queryFormat = options.queryFormat;
|
143
|
+
this.pool = options.pool || undefined;
|
144
|
+
this.ssl =
|
145
|
+
typeof options.ssl === 'string'
|
146
|
+
? ConnectionConfig.getSSLProfile(options.ssl)
|
147
|
+
: options.ssl || false;
|
148
|
+
this.multipleStatements = options.multipleStatements || false;
|
149
|
+
this.rowsAsArray = options.rowsAsArray || false;
|
150
|
+
this.namedPlaceholders = options.namedPlaceholders || false;
|
151
|
+
this.nestTables =
|
152
|
+
options.nestTables === undefined ? undefined : options.nestTables;
|
153
|
+
this.typeCast = options.typeCast === undefined ? true : options.typeCast;
|
154
|
+
this.disableEval = Boolean(options.disableEval);
|
155
|
+
if (this.timezone[0] === ' ') {
|
156
|
+
// "+" is a url encoded char for space so it
|
157
|
+
// gets translated to space when giving a
|
158
|
+
// connection string..
|
159
|
+
this.timezone = `+${this.timezone.slice(1)}`;
|
160
|
+
}
|
161
|
+
if (this.ssl) {
|
162
|
+
if (typeof this.ssl !== 'object') {
|
163
|
+
throw new TypeError(
|
164
|
+
`SSL profile must be an object, instead it's a ${typeof this.ssl}`
|
165
|
+
);
|
166
|
+
}
|
167
|
+
// Default rejectUnauthorized to true
|
168
|
+
this.ssl.rejectUnauthorized = this.ssl.rejectUnauthorized !== false;
|
169
|
+
}
|
170
|
+
this.maxPacketSize = 0;
|
171
|
+
this.charsetNumber = options.charset
|
172
|
+
? ConnectionConfig.getCharsetNumber(options.charset)
|
173
|
+
: options.charsetNumber || Charsets.UTF8MB4_UNICODE_CI;
|
174
|
+
this.compress = options.compress || false;
|
175
|
+
this.authPlugins = options.authPlugins;
|
176
|
+
this.authSwitchHandler = options.authSwitchHandler;
|
177
|
+
this.clientFlags = ConnectionConfig.mergeFlags(
|
178
|
+
ConnectionConfig.getDefaultFlags(options),
|
179
|
+
options.flags || ''
|
180
|
+
);
|
181
|
+
// Default connection attributes
|
182
|
+
// https://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html
|
183
|
+
const defaultConnectAttributes = {
|
184
|
+
_client_name: 'Node-MySQL-2',
|
185
|
+
_client_version: version,
|
186
|
+
};
|
187
|
+
this.connectAttributes = {
|
188
|
+
...defaultConnectAttributes,
|
189
|
+
...(options.connectAttributes || {}),
|
190
|
+
};
|
191
|
+
this.maxPreparedStatements = options.maxPreparedStatements || 16000;
|
192
|
+
this.jsonStrings = options.jsonStrings || false;
|
193
|
+
}
|
194
|
+
|
195
|
+
static mergeFlags(default_flags, user_flags) {
|
196
|
+
let flags = 0x0,
|
197
|
+
i;
|
198
|
+
if (!Array.isArray(user_flags)) {
|
199
|
+
user_flags = String(user_flags || '')
|
200
|
+
.toUpperCase()
|
201
|
+
.split(/\s*,+\s*/);
|
202
|
+
}
|
203
|
+
// add default flags unless "blacklisted"
|
204
|
+
for (i in default_flags) {
|
205
|
+
if (user_flags.indexOf(`-${default_flags[i]}`) >= 0) {
|
206
|
+
continue;
|
207
|
+
}
|
208
|
+
flags |= ClientConstants[default_flags[i]] || 0x0;
|
209
|
+
}
|
210
|
+
// add user flags unless already already added
|
211
|
+
for (i in user_flags) {
|
212
|
+
if (user_flags[i][0] === '-') {
|
213
|
+
continue;
|
214
|
+
}
|
215
|
+
if (default_flags.indexOf(user_flags[i]) >= 0) {
|
216
|
+
continue;
|
217
|
+
}
|
218
|
+
flags |= ClientConstants[user_flags[i]] || 0x0;
|
219
|
+
}
|
220
|
+
return flags;
|
221
|
+
}
|
222
|
+
|
223
|
+
static getDefaultFlags(options) {
|
224
|
+
const defaultFlags = [
|
225
|
+
'LONG_PASSWORD',
|
226
|
+
'FOUND_ROWS',
|
227
|
+
'LONG_FLAG',
|
228
|
+
'CONNECT_WITH_DB',
|
229
|
+
'ODBC',
|
230
|
+
'LOCAL_FILES',
|
231
|
+
'IGNORE_SPACE',
|
232
|
+
'PROTOCOL_41',
|
233
|
+
'IGNORE_SIGPIPE',
|
234
|
+
'TRANSACTIONS',
|
235
|
+
'RESERVED',
|
236
|
+
'SECURE_CONNECTION',
|
237
|
+
'MULTI_RESULTS',
|
238
|
+
'TRANSACTIONS',
|
239
|
+
'SESSION_TRACK',
|
240
|
+
'CONNECT_ATTRS',
|
241
|
+
];
|
242
|
+
if (options && options.multipleStatements) {
|
243
|
+
defaultFlags.push('MULTI_STATEMENTS');
|
244
|
+
}
|
245
|
+
defaultFlags.push('PLUGIN_AUTH');
|
246
|
+
defaultFlags.push('PLUGIN_AUTH_LENENC_CLIENT_DATA');
|
247
|
+
|
248
|
+
return defaultFlags;
|
249
|
+
}
|
250
|
+
|
251
|
+
static getCharsetNumber(charset) {
|
252
|
+
const num = Charsets[charset.toUpperCase()];
|
253
|
+
if (num === undefined) {
|
254
|
+
throw new TypeError(`Unknown charset '${charset}'`);
|
255
|
+
}
|
256
|
+
return num;
|
257
|
+
}
|
258
|
+
|
259
|
+
static getSSLProfile(name) {
|
260
|
+
if (!SSLProfiles) {
|
261
|
+
SSLProfiles = require('./constants/ssl_profiles.js');
|
262
|
+
}
|
263
|
+
const ssl = SSLProfiles[name];
|
264
|
+
if (ssl === undefined) {
|
265
|
+
throw new TypeError(`Unknown SSL profile '${name}'`);
|
266
|
+
}
|
267
|
+
return ssl;
|
268
|
+
}
|
269
|
+
|
270
|
+
static parseUrl(url) {
|
271
|
+
const parsedUrl = new URL(url);
|
272
|
+
const options = {
|
273
|
+
host: decodeURIComponent(parsedUrl.hostname),
|
274
|
+
port: parseInt(parsedUrl.port, 10),
|
275
|
+
database: decodeURIComponent(parsedUrl.pathname.slice(1)),
|
276
|
+
user: decodeURIComponent(parsedUrl.username),
|
277
|
+
password: decodeURIComponent(parsedUrl.password),
|
278
|
+
};
|
279
|
+
parsedUrl.searchParams.forEach((value, key) => {
|
280
|
+
try {
|
281
|
+
// Try to parse this as a JSON expression first
|
282
|
+
options[key] = JSON.parse(value);
|
283
|
+
} catch (err) {
|
284
|
+
// Otherwise assume it is a plain string
|
285
|
+
options[key] = value;
|
286
|
+
}
|
287
|
+
});
|
288
|
+
return options;
|
289
|
+
}
|
290
|
+
}
|
291
|
+
|
292
|
+
module.exports = ConnectionConfig;
|