node-server-dev 3.1.5 → 3.1.6
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/build.d.ts +2 -0
- package/dist/cjs/build.d.ts.map +1 -0
- package/dist/cjs/build.js +1 -0
- 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/server.d.ts +1 -1
- package/dist/cjs/server.d.ts.map +1 -1
- package/dist/cjs/server.js +1 -1
- package/dist/cjs/src/browser.d.ts +3 -0
- package/dist/cjs/src/browser.d.ts.map +1 -0
- package/dist/cjs/src/browser.js +1 -0
- package/dist/cjs/src/getAllRouter/index.d.ts +3 -0
- package/dist/cjs/src/getAllRouter/index.d.ts.map +1 -0
- package/dist/cjs/src/getAllRouter/index.js +1 -0
- package/dist/cjs/src/hash/index.d.ts +4 -0
- package/dist/cjs/src/hash/index.d.ts.map +1 -0
- package/dist/cjs/src/hash/index.js +1 -0
- package/dist/cjs/src/id/index.d.ts +3 -0
- package/dist/cjs/src/id/index.d.ts.map +1 -0
- package/dist/cjs/src/id/index.js +1 -0
- package/dist/cjs/src/id/random.d.ts +4 -0
- package/dist/cjs/src/id/random.d.ts.map +1 -0
- package/dist/cjs/src/id/random.js +1 -0
- package/dist/cjs/src/index.d.ts +25 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +1 -0
- package/dist/cjs/src/jwt/index.d.ts +9 -0
- package/dist/cjs/src/jwt/index.d.ts.map +1 -0
- package/dist/cjs/src/jwt/index.js +1 -0
- package/dist/cjs/src/mac/index.d.ts +6 -0
- package/dist/cjs/src/mac/index.d.ts.map +1 -0
- package/dist/cjs/src/mac/index.js +1 -0
- package/dist/cjs/src/server.d.ts +7 -0
- package/dist/cjs/src/server.d.ts.map +1 -0
- package/dist/cjs/src/server.js +1 -0
- package/dist/cjs/src/start.d.ts +4 -0
- package/dist/cjs/src/start.d.ts.map +1 -0
- package/dist/cjs/src/start.js +1 -0
- package/dist/cjs/src/update.d.ts +3 -0
- package/dist/cjs/src/update.d.ts.map +1 -0
- package/dist/cjs/src/update.js +1 -0
- package/dist/cjs/start.js +1 -1
- package/dist/cjs/update.js +1 -1
- package/dist/esm/browser.js +1 -1
- package/dist/esm/build.d.ts +2 -0
- package/dist/esm/build.d.ts.map +1 -0
- package/dist/esm/build.js +1 -0
- 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/server.d.ts +1 -1
- package/dist/esm/server.d.ts.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/src/browser.d.ts +3 -0
- package/dist/esm/src/browser.d.ts.map +1 -0
- package/dist/esm/src/browser.js +1 -0
- package/dist/esm/src/getAllRouter/index.d.ts +3 -0
- package/dist/esm/src/getAllRouter/index.d.ts.map +1 -0
- package/dist/esm/src/getAllRouter/index.js +1 -0
- package/dist/esm/src/hash/index.d.ts +4 -0
- package/dist/esm/src/hash/index.d.ts.map +1 -0
- package/dist/esm/src/hash/index.js +1 -0
- package/dist/esm/src/id/index.d.ts +3 -0
- package/dist/esm/src/id/index.d.ts.map +1 -0
- package/dist/esm/src/id/index.js +1 -0
- package/dist/esm/src/id/random.d.ts +4 -0
- package/dist/esm/src/id/random.d.ts.map +1 -0
- package/dist/esm/src/id/random.js +1 -0
- package/dist/esm/src/index.d.ts +25 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +1 -0
- package/dist/esm/src/jwt/index.d.ts +9 -0
- package/dist/esm/src/jwt/index.d.ts.map +1 -0
- package/dist/esm/src/jwt/index.js +1 -0
- package/dist/esm/src/mac/index.d.ts +6 -0
- package/dist/esm/src/mac/index.d.ts.map +1 -0
- package/dist/esm/src/mac/index.js +1 -0
- package/dist/esm/src/server.d.ts +7 -0
- package/dist/esm/src/server.d.ts.map +1 -0
- package/dist/esm/src/server.js +1 -0
- package/dist/esm/src/start.d.ts +4 -0
- package/dist/esm/src/start.d.ts.map +1 -0
- package/dist/esm/src/start.js +1 -0
- package/dist/esm/src/update.d.ts +3 -0
- package/dist/esm/src/update.d.ts.map +1 -0
- package/dist/esm/src/update.js +1 -0
- package/dist/esm/start.js +1 -1
- package/dist/esm/update.js +1 -1
- package/package.json +3 -4
@@ -0,0 +1,211 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const FieldFlags = require('../constants/field_flags.js');
|
4
|
+
const Charsets = require('../constants/charsets.js');
|
5
|
+
const Types = require('../constants/types.js');
|
6
|
+
const helpers = require('../helpers');
|
7
|
+
|
8
|
+
const typeNames = [];
|
9
|
+
for (const t in Types) {
|
10
|
+
typeNames[Types[t]] = t;
|
11
|
+
}
|
12
|
+
|
13
|
+
function getBinaryParser(fields, _options, config) {
|
14
|
+
function readCode(field, config, options, fieldNum, packet) {
|
15
|
+
const supportBigNumbers = Boolean(
|
16
|
+
options.supportBigNumbers || config.supportBigNumbers
|
17
|
+
);
|
18
|
+
const bigNumberStrings = Boolean(
|
19
|
+
options.bigNumberStrings || config.bigNumberStrings
|
20
|
+
);
|
21
|
+
const timezone = options.timezone || config.timezone;
|
22
|
+
const dateStrings = options.dateStrings || config.dateStrings;
|
23
|
+
const unsigned = field.flags & FieldFlags.UNSIGNED;
|
24
|
+
|
25
|
+
switch (field.columnType) {
|
26
|
+
case Types.TINY:
|
27
|
+
return unsigned ? packet.readInt8() : packet.readSInt8();
|
28
|
+
case Types.SHORT:
|
29
|
+
return unsigned ? packet.readInt16() : packet.readSInt16();
|
30
|
+
case Types.LONG:
|
31
|
+
case Types.INT24: // in binary protocol int24 is encoded in 4 bytes int32
|
32
|
+
return unsigned ? packet.readInt32() : packet.readSInt32();
|
33
|
+
case Types.YEAR:
|
34
|
+
return packet.readInt16();
|
35
|
+
case Types.FLOAT:
|
36
|
+
return packet.readFloat();
|
37
|
+
case Types.DOUBLE:
|
38
|
+
return packet.readDouble();
|
39
|
+
case Types.NULL:
|
40
|
+
return null;
|
41
|
+
case Types.DATE:
|
42
|
+
case Types.DATETIME:
|
43
|
+
case Types.TIMESTAMP:
|
44
|
+
case Types.NEWDATE:
|
45
|
+
return helpers.typeMatch(field.columnType, dateStrings, Types)
|
46
|
+
? packet.readDateTimeString(
|
47
|
+
parseInt(field.decimals, 10),
|
48
|
+
null,
|
49
|
+
field.columnType
|
50
|
+
)
|
51
|
+
: packet.readDateTime(timezone);
|
52
|
+
case Types.TIME:
|
53
|
+
return packet.readTimeString();
|
54
|
+
case Types.DECIMAL:
|
55
|
+
case Types.NEWDECIMAL:
|
56
|
+
return config.decimalNumbers
|
57
|
+
? packet.parseLengthCodedFloat()
|
58
|
+
: packet.readLengthCodedString('ascii');
|
59
|
+
case Types.GEOMETRY:
|
60
|
+
return packet.parseGeometryValue();
|
61
|
+
case Types.VECTOR:
|
62
|
+
return packet.parseVector();
|
63
|
+
case Types.JSON:
|
64
|
+
// Since for JSON columns mysql always returns charset 63 (BINARY),
|
65
|
+
// we have to handle it according to JSON specs and use "utf8",
|
66
|
+
// see https://github.com/sidorares/node-mysql2/issues/409
|
67
|
+
return config.jsonStrings
|
68
|
+
? packet.readLengthCodedString('utf8')
|
69
|
+
: JSON.parse(packet.readLengthCodedString('utf8'));
|
70
|
+
case Types.LONGLONG:
|
71
|
+
if (!supportBigNumbers)
|
72
|
+
return unsigned
|
73
|
+
? packet.readInt64JSNumber()
|
74
|
+
: packet.readSInt64JSNumber();
|
75
|
+
return bigNumberStrings
|
76
|
+
? unsigned
|
77
|
+
? packet.readInt64String()
|
78
|
+
: packet.readSInt64String()
|
79
|
+
: unsigned
|
80
|
+
? packet.readInt64()
|
81
|
+
: packet.readSInt64();
|
82
|
+
default:
|
83
|
+
return field.characterSet === Charsets.BINARY
|
84
|
+
? packet.readLengthCodedBuffer()
|
85
|
+
: packet.readLengthCodedString(fields[fieldNum].encoding);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
return class BinaryRow {
|
90
|
+
constructor() {}
|
91
|
+
|
92
|
+
next(packet, fields, options) {
|
93
|
+
packet.readInt8(); // status byte
|
94
|
+
|
95
|
+
const nullBitmapLength = Math.floor((fields.length + 7 + 2) / 8);
|
96
|
+
const nullBitmaskBytes = new Array(nullBitmapLength);
|
97
|
+
|
98
|
+
for (let i = 0; i < nullBitmapLength; i++) {
|
99
|
+
nullBitmaskBytes[i] = packet.readInt8();
|
100
|
+
}
|
101
|
+
|
102
|
+
const result = options.rowsAsArray ? new Array(fields.length) : {};
|
103
|
+
let currentFieldNullBit = 4;
|
104
|
+
let nullByteIndex = 0;
|
105
|
+
|
106
|
+
for (let i = 0; i < fields.length; i++) {
|
107
|
+
const field = fields[i];
|
108
|
+
const typeCast =
|
109
|
+
options.typeCast !== undefined ? options.typeCast : config.typeCast;
|
110
|
+
|
111
|
+
let value;
|
112
|
+
if (nullBitmaskBytes[nullByteIndex] & currentFieldNullBit) {
|
113
|
+
value = null;
|
114
|
+
} else if (options.typeCast === false) {
|
115
|
+
value = packet.readLengthCodedBuffer();
|
116
|
+
} else {
|
117
|
+
const next = () => readCode(field, config, options, i, packet);
|
118
|
+
value =
|
119
|
+
typeof typeCast === 'function'
|
120
|
+
? typeCast(
|
121
|
+
{
|
122
|
+
type: typeNames[field.columnType],
|
123
|
+
length: field.columnLength,
|
124
|
+
db: field.schema,
|
125
|
+
table: field.table,
|
126
|
+
name: field.name,
|
127
|
+
string: function (encoding = field.encoding) {
|
128
|
+
if (
|
129
|
+
field.columnType === Types.JSON &&
|
130
|
+
encoding === field.encoding
|
131
|
+
) {
|
132
|
+
// Since for JSON columns mysql always returns charset 63 (BINARY),
|
133
|
+
// we have to handle it according to JSON specs and use "utf8",
|
134
|
+
// see https://github.com/sidorares/node-mysql2/issues/1661
|
135
|
+
console.warn(
|
136
|
+
`typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\``
|
137
|
+
);
|
138
|
+
}
|
139
|
+
|
140
|
+
if (
|
141
|
+
[
|
142
|
+
Types.DATETIME,
|
143
|
+
Types.NEWDATE,
|
144
|
+
Types.TIMESTAMP,
|
145
|
+
Types.DATE,
|
146
|
+
].includes(field.columnType)
|
147
|
+
) {
|
148
|
+
return packet.readDateTimeString(
|
149
|
+
parseInt(field.decimals, 10)
|
150
|
+
);
|
151
|
+
}
|
152
|
+
|
153
|
+
if (field.columnType === Types.TINY) {
|
154
|
+
const unsigned = field.flags & FieldFlags.UNSIGNED;
|
155
|
+
|
156
|
+
return String(
|
157
|
+
unsigned ? packet.readInt8() : packet.readSInt8()
|
158
|
+
);
|
159
|
+
}
|
160
|
+
|
161
|
+
if (field.columnType === Types.TIME) {
|
162
|
+
return packet.readTimeString();
|
163
|
+
}
|
164
|
+
|
165
|
+
return packet.readLengthCodedString(encoding);
|
166
|
+
},
|
167
|
+
buffer: function () {
|
168
|
+
return packet.readLengthCodedBuffer();
|
169
|
+
},
|
170
|
+
geometry: function () {
|
171
|
+
return packet.parseGeometryValue();
|
172
|
+
},
|
173
|
+
},
|
174
|
+
next
|
175
|
+
)
|
176
|
+
: next();
|
177
|
+
}
|
178
|
+
|
179
|
+
if (options.rowsAsArray) {
|
180
|
+
result[i] = value;
|
181
|
+
} else if (typeof options.nestTables === 'string') {
|
182
|
+
const key = helpers.fieldEscape(
|
183
|
+
field.table + options.nestTables + field.name,
|
184
|
+
false
|
185
|
+
);
|
186
|
+
result[key] = value;
|
187
|
+
} else if (options.nestTables === true) {
|
188
|
+
const tableName = helpers.fieldEscape(field.table, false);
|
189
|
+
if (!result[tableName]) {
|
190
|
+
result[tableName] = {};
|
191
|
+
}
|
192
|
+
const fieldName = helpers.fieldEscape(field.name, false);
|
193
|
+
result[tableName][fieldName] = value;
|
194
|
+
} else {
|
195
|
+
const key = helpers.fieldEscape(field.name, false);
|
196
|
+
result[key] = value;
|
197
|
+
}
|
198
|
+
|
199
|
+
currentFieldNullBit *= 2;
|
200
|
+
if (currentFieldNullBit === 0x100) {
|
201
|
+
currentFieldNullBit = 1;
|
202
|
+
nullByteIndex++;
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
return result;
|
207
|
+
}
|
208
|
+
};
|
209
|
+
}
|
210
|
+
|
211
|
+
module.exports = getBinaryParser;
|
@@ -0,0 +1,152 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Types = require('../constants/types.js');
|
4
|
+
const Charsets = require('../constants/charsets.js');
|
5
|
+
const helpers = require('../helpers');
|
6
|
+
|
7
|
+
const typeNames = [];
|
8
|
+
for (const t in Types) {
|
9
|
+
typeNames[Types[t]] = t;
|
10
|
+
}
|
11
|
+
|
12
|
+
function readField({ packet, type, charset, encoding, config, options }) {
|
13
|
+
const supportBigNumbers = Boolean(
|
14
|
+
options.supportBigNumbers || config.supportBigNumbers
|
15
|
+
);
|
16
|
+
const bigNumberStrings = Boolean(
|
17
|
+
options.bigNumberStrings || config.bigNumberStrings
|
18
|
+
);
|
19
|
+
const timezone = options.timezone || config.timezone;
|
20
|
+
const dateStrings = options.dateStrings || config.dateStrings;
|
21
|
+
|
22
|
+
switch (type) {
|
23
|
+
case Types.TINY:
|
24
|
+
case Types.SHORT:
|
25
|
+
case Types.LONG:
|
26
|
+
case Types.INT24:
|
27
|
+
case Types.YEAR:
|
28
|
+
return packet.parseLengthCodedIntNoBigCheck();
|
29
|
+
case Types.LONGLONG:
|
30
|
+
if (supportBigNumbers && bigNumberStrings) {
|
31
|
+
return packet.parseLengthCodedIntString();
|
32
|
+
}
|
33
|
+
return packet.parseLengthCodedInt(supportBigNumbers);
|
34
|
+
case Types.FLOAT:
|
35
|
+
case Types.DOUBLE:
|
36
|
+
return packet.parseLengthCodedFloat();
|
37
|
+
case Types.NULL:
|
38
|
+
case Types.DECIMAL:
|
39
|
+
case Types.NEWDECIMAL:
|
40
|
+
if (config.decimalNumbers) {
|
41
|
+
return packet.parseLengthCodedFloat();
|
42
|
+
}
|
43
|
+
return packet.readLengthCodedString('ascii');
|
44
|
+
case Types.DATE:
|
45
|
+
if (helpers.typeMatch(type, dateStrings, Types)) {
|
46
|
+
return packet.readLengthCodedString('ascii');
|
47
|
+
}
|
48
|
+
return packet.parseDate(timezone);
|
49
|
+
case Types.DATETIME:
|
50
|
+
case Types.TIMESTAMP:
|
51
|
+
if (helpers.typeMatch(type, dateStrings, Types)) {
|
52
|
+
return packet.readLengthCodedString('ascii');
|
53
|
+
}
|
54
|
+
return packet.parseDateTime(timezone);
|
55
|
+
case Types.TIME:
|
56
|
+
return packet.readLengthCodedString('ascii');
|
57
|
+
case Types.GEOMETRY:
|
58
|
+
return packet.parseGeometryValue();
|
59
|
+
case Types.VECTOR:
|
60
|
+
return packet.parseVector();
|
61
|
+
case Types.JSON:
|
62
|
+
// Since for JSON columns mysql always returns charset 63 (BINARY),
|
63
|
+
// we have to handle it according to JSON specs and use "utf8",
|
64
|
+
// see https://github.com/sidorares/node-mysql2/issues/409
|
65
|
+
return config.jsonStrings
|
66
|
+
? packet.readLengthCodedString('utf8')
|
67
|
+
: JSON.parse(packet.readLengthCodedString('utf8'));
|
68
|
+
default:
|
69
|
+
if (charset === Charsets.BINARY) {
|
70
|
+
return packet.readLengthCodedBuffer();
|
71
|
+
}
|
72
|
+
return packet.readLengthCodedString(encoding);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
function createTypecastField(field, packet) {
|
77
|
+
return {
|
78
|
+
type: typeNames[field.columnType],
|
79
|
+
length: field.columnLength,
|
80
|
+
db: field.schema,
|
81
|
+
table: field.table,
|
82
|
+
name: field.name,
|
83
|
+
string: function (encoding = field.encoding) {
|
84
|
+
if (field.columnType === Types.JSON && encoding === field.encoding) {
|
85
|
+
// Since for JSON columns mysql always returns charset 63 (BINARY),
|
86
|
+
// we have to handle it according to JSON specs and use "utf8",
|
87
|
+
// see https://github.com/sidorares/node-mysql2/issues/1661
|
88
|
+
console.warn(
|
89
|
+
`typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\``
|
90
|
+
);
|
91
|
+
}
|
92
|
+
return packet.readLengthCodedString(encoding);
|
93
|
+
},
|
94
|
+
buffer: function () {
|
95
|
+
return packet.readLengthCodedBuffer();
|
96
|
+
},
|
97
|
+
geometry: function () {
|
98
|
+
return packet.parseGeometryValue();
|
99
|
+
},
|
100
|
+
};
|
101
|
+
}
|
102
|
+
|
103
|
+
function getTextParser(_fields, _options, config) {
|
104
|
+
return {
|
105
|
+
next(packet, fields, options) {
|
106
|
+
const result = options.rowsAsArray ? [] : {};
|
107
|
+
for (let i = 0; i < fields.length; i++) {
|
108
|
+
const field = fields[i];
|
109
|
+
const typeCast = options.typeCast ? options.typeCast : config.typeCast;
|
110
|
+
const next = () =>
|
111
|
+
readField({
|
112
|
+
packet,
|
113
|
+
type: field.columnType,
|
114
|
+
encoding: field.encoding,
|
115
|
+
charset: field.characterSet,
|
116
|
+
config,
|
117
|
+
options,
|
118
|
+
});
|
119
|
+
|
120
|
+
let value;
|
121
|
+
|
122
|
+
if (options.typeCast === false) {
|
123
|
+
value = packet.readLengthCodedBuffer();
|
124
|
+
} else if (typeof typeCast === 'function') {
|
125
|
+
value = typeCast(createTypecastField(field, packet), next);
|
126
|
+
} else {
|
127
|
+
value = next();
|
128
|
+
}
|
129
|
+
|
130
|
+
if (options.rowsAsArray) {
|
131
|
+
result.push(value);
|
132
|
+
} else if (typeof options.nestTables === 'string') {
|
133
|
+
result[
|
134
|
+
`${helpers.fieldEscape(field.table, false)}${options.nestTables}${helpers.fieldEscape(field.name, false)}`
|
135
|
+
] = value;
|
136
|
+
} else if (options.nestTables) {
|
137
|
+
const tableName = helpers.fieldEscape(field.table, false);
|
138
|
+
if (!result[tableName]) {
|
139
|
+
result[tableName] = {};
|
140
|
+
}
|
141
|
+
result[tableName][helpers.fieldEscape(field.name, false)] = value;
|
142
|
+
} else {
|
143
|
+
result[helpers.fieldEscape(field.name, false)] = value;
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
return result;
|
148
|
+
},
|
149
|
+
};
|
150
|
+
}
|
151
|
+
|
152
|
+
module.exports = getTextParser;
|
@@ -0,0 +1,50 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Iconv = require('iconv-lite');
|
4
|
+
const { createLRU } = require('lru.min');
|
5
|
+
|
6
|
+
const decoderCache = createLRU({
|
7
|
+
max: 500,
|
8
|
+
});
|
9
|
+
|
10
|
+
exports.decode = function (buffer, encoding, start, end, options) {
|
11
|
+
if (Buffer.isEncoding(encoding)) {
|
12
|
+
return buffer.toString(encoding, start, end);
|
13
|
+
}
|
14
|
+
|
15
|
+
// Optimize for common case: encoding="short_string", options=undefined.
|
16
|
+
let decoder;
|
17
|
+
if (!options) {
|
18
|
+
decoder = decoderCache.get(encoding);
|
19
|
+
if (!decoder) {
|
20
|
+
decoder = Iconv.getDecoder(encoding);
|
21
|
+
decoderCache.set(encoding, decoder);
|
22
|
+
}
|
23
|
+
} else {
|
24
|
+
const decoderArgs = { encoding, options };
|
25
|
+
const decoderKey = JSON.stringify(decoderArgs);
|
26
|
+
decoder = decoderCache.get(decoderKey);
|
27
|
+
if (!decoder) {
|
28
|
+
decoder = Iconv.getDecoder(decoderArgs.encoding, decoderArgs.options);
|
29
|
+
decoderCache.set(decoderKey, decoder);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
const res = decoder.write(buffer.slice(start, end));
|
34
|
+
const trail = decoder.end();
|
35
|
+
|
36
|
+
return trail ? res + trail : res;
|
37
|
+
};
|
38
|
+
|
39
|
+
exports.encode = function (string, encoding, options) {
|
40
|
+
if (Buffer.isEncoding(encoding)) {
|
41
|
+
return Buffer.from(string, encoding);
|
42
|
+
}
|
43
|
+
|
44
|
+
const encoder = Iconv.getEncoder(encoding, options || {});
|
45
|
+
|
46
|
+
const res = encoder.write(string);
|
47
|
+
const trail = encoder.end();
|
48
|
+
|
49
|
+
return trail && trail.length > 0 ? Buffer.concat([res, trail]) : res;
|
50
|
+
};
|
@@ -0,0 +1,214 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const Types = require('../constants/types.js');
|
4
|
+
const Charsets = require('../constants/charsets.js');
|
5
|
+
const helpers = require('../helpers');
|
6
|
+
const genFunc = require('generate-function');
|
7
|
+
const parserCache = require('./parser_cache.js');
|
8
|
+
|
9
|
+
const typeNames = [];
|
10
|
+
for (const t in Types) {
|
11
|
+
typeNames[Types[t]] = t;
|
12
|
+
}
|
13
|
+
|
14
|
+
function readCodeFor(type, charset, encodingExpr, config, options) {
|
15
|
+
const supportBigNumbers = Boolean(
|
16
|
+
options.supportBigNumbers || config.supportBigNumbers
|
17
|
+
);
|
18
|
+
const bigNumberStrings = Boolean(
|
19
|
+
options.bigNumberStrings || config.bigNumberStrings
|
20
|
+
);
|
21
|
+
const timezone = options.timezone || config.timezone;
|
22
|
+
const dateStrings = options.dateStrings || config.dateStrings;
|
23
|
+
|
24
|
+
switch (type) {
|
25
|
+
case Types.TINY:
|
26
|
+
case Types.SHORT:
|
27
|
+
case Types.LONG:
|
28
|
+
case Types.INT24:
|
29
|
+
case Types.YEAR:
|
30
|
+
return 'packet.parseLengthCodedIntNoBigCheck()';
|
31
|
+
case Types.LONGLONG:
|
32
|
+
if (supportBigNumbers && bigNumberStrings) {
|
33
|
+
return 'packet.parseLengthCodedIntString()';
|
34
|
+
}
|
35
|
+
return `packet.parseLengthCodedInt(${supportBigNumbers})`;
|
36
|
+
case Types.FLOAT:
|
37
|
+
case Types.DOUBLE:
|
38
|
+
return 'packet.parseLengthCodedFloat()';
|
39
|
+
case Types.NULL:
|
40
|
+
return 'packet.readLengthCodedNumber()';
|
41
|
+
case Types.DECIMAL:
|
42
|
+
case Types.NEWDECIMAL:
|
43
|
+
if (config.decimalNumbers) {
|
44
|
+
return 'packet.parseLengthCodedFloat()';
|
45
|
+
}
|
46
|
+
return 'packet.readLengthCodedString("ascii")';
|
47
|
+
case Types.DATE:
|
48
|
+
if (helpers.typeMatch(type, dateStrings, Types)) {
|
49
|
+
return 'packet.readLengthCodedString("ascii")';
|
50
|
+
}
|
51
|
+
return `packet.parseDate(${helpers.srcEscape(timezone)})`;
|
52
|
+
case Types.DATETIME:
|
53
|
+
case Types.TIMESTAMP:
|
54
|
+
if (helpers.typeMatch(type, dateStrings, Types)) {
|
55
|
+
return 'packet.readLengthCodedString("ascii")';
|
56
|
+
}
|
57
|
+
return `packet.parseDateTime(${helpers.srcEscape(timezone)})`;
|
58
|
+
case Types.TIME:
|
59
|
+
return 'packet.readLengthCodedString("ascii")';
|
60
|
+
case Types.GEOMETRY:
|
61
|
+
return 'packet.parseGeometryValue()';
|
62
|
+
case Types.VECTOR:
|
63
|
+
return 'packet.parseVector()';
|
64
|
+
case Types.JSON:
|
65
|
+
// Since for JSON columns mysql always returns charset 63 (BINARY),
|
66
|
+
// we have to handle it according to JSON specs and use "utf8",
|
67
|
+
// see https://github.com/sidorares/node-mysql2/issues/409
|
68
|
+
return config.jsonStrings
|
69
|
+
? 'packet.readLengthCodedString("utf8")'
|
70
|
+
: 'JSON.parse(packet.readLengthCodedString("utf8"))';
|
71
|
+
default:
|
72
|
+
if (charset === Charsets.BINARY) {
|
73
|
+
return 'packet.readLengthCodedBuffer()';
|
74
|
+
}
|
75
|
+
return `packet.readLengthCodedString(${encodingExpr})`;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
function compile(fields, options, config) {
|
80
|
+
// use global typeCast if current query doesn't specify one
|
81
|
+
if (
|
82
|
+
typeof config.typeCast === 'function' &&
|
83
|
+
typeof options.typeCast !== 'function'
|
84
|
+
) {
|
85
|
+
options.typeCast = config.typeCast;
|
86
|
+
}
|
87
|
+
|
88
|
+
function wrap(field, _this) {
|
89
|
+
return {
|
90
|
+
type: typeNames[field.columnType],
|
91
|
+
length: field.columnLength,
|
92
|
+
db: field.schema,
|
93
|
+
table: field.table,
|
94
|
+
name: field.name,
|
95
|
+
string: function (encoding = field.encoding) {
|
96
|
+
if (field.columnType === Types.JSON && encoding === field.encoding) {
|
97
|
+
// Since for JSON columns mysql always returns charset 63 (BINARY),
|
98
|
+
// we have to handle it according to JSON specs and use "utf8",
|
99
|
+
// see https://github.com/sidorares/node-mysql2/issues/1661
|
100
|
+
console.warn(
|
101
|
+
`typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\``
|
102
|
+
);
|
103
|
+
}
|
104
|
+
|
105
|
+
return _this.packet.readLengthCodedString(encoding);
|
106
|
+
},
|
107
|
+
buffer: function () {
|
108
|
+
return _this.packet.readLengthCodedBuffer();
|
109
|
+
},
|
110
|
+
geometry: function () {
|
111
|
+
return _this.packet.parseGeometryValue();
|
112
|
+
},
|
113
|
+
};
|
114
|
+
}
|
115
|
+
|
116
|
+
const parserFn = genFunc();
|
117
|
+
|
118
|
+
parserFn('(function () {')('return class TextRow {');
|
119
|
+
|
120
|
+
// constructor method
|
121
|
+
parserFn('constructor(fields) {');
|
122
|
+
// node-mysql typeCast compatibility wrapper
|
123
|
+
// see https://github.com/mysqljs/mysql/blob/96fdd0566b654436624e2375c7b6604b1f50f825/lib/protocol/packets/Field.js
|
124
|
+
if (typeof options.typeCast === 'function') {
|
125
|
+
parserFn('const _this = this;');
|
126
|
+
parserFn('for(let i=0; i<fields.length; ++i) {');
|
127
|
+
parserFn('this[`wrap${i}`] = wrap(fields[i], _this);');
|
128
|
+
parserFn('}');
|
129
|
+
}
|
130
|
+
parserFn('}');
|
131
|
+
|
132
|
+
// next method
|
133
|
+
parserFn('next(packet, fields, options) {');
|
134
|
+
parserFn('this.packet = packet;');
|
135
|
+
if (options.rowsAsArray) {
|
136
|
+
parserFn(`const result = new Array(${fields.length});`);
|
137
|
+
} else {
|
138
|
+
parserFn('const result = {};');
|
139
|
+
}
|
140
|
+
|
141
|
+
const resultTables = {};
|
142
|
+
let resultTablesArray = [];
|
143
|
+
|
144
|
+
if (options.nestTables === true) {
|
145
|
+
for (let i = 0; i < fields.length; i++) {
|
146
|
+
resultTables[fields[i].table] = 1;
|
147
|
+
}
|
148
|
+
resultTablesArray = Object.keys(resultTables);
|
149
|
+
for (let i = 0; i < resultTablesArray.length; i++) {
|
150
|
+
parserFn(`result[${helpers.fieldEscape(resultTablesArray[i])}] = {};`);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
let lvalue = '';
|
155
|
+
let fieldName = '';
|
156
|
+
let tableName = '';
|
157
|
+
for (let i = 0; i < fields.length; i++) {
|
158
|
+
fieldName = helpers.fieldEscape(fields[i].name);
|
159
|
+
// parserFn(`// ${fieldName}: ${typeNames[fields[i].columnType]}`);
|
160
|
+
|
161
|
+
if (typeof options.nestTables === 'string') {
|
162
|
+
lvalue = `result[${helpers.fieldEscape(fields[i].table + options.nestTables + fields[i].name)}]`;
|
163
|
+
} else if (options.nestTables === true) {
|
164
|
+
tableName = helpers.fieldEscape(fields[i].table);
|
165
|
+
|
166
|
+
parserFn(`if (!result[${tableName}]) result[${tableName}] = {};`);
|
167
|
+
lvalue = `result[${tableName}][${fieldName}]`;
|
168
|
+
} else if (options.rowsAsArray) {
|
169
|
+
lvalue = `result[${i.toString(10)}]`;
|
170
|
+
} else {
|
171
|
+
lvalue = `result[${fieldName}]`;
|
172
|
+
}
|
173
|
+
if (options.typeCast === false) {
|
174
|
+
parserFn(`${lvalue} = packet.readLengthCodedBuffer();`);
|
175
|
+
} else {
|
176
|
+
const encodingExpr = `fields[${i}].encoding`;
|
177
|
+
const readCode = readCodeFor(
|
178
|
+
fields[i].columnType,
|
179
|
+
fields[i].characterSet,
|
180
|
+
encodingExpr,
|
181
|
+
config,
|
182
|
+
options
|
183
|
+
);
|
184
|
+
if (typeof options.typeCast === 'function') {
|
185
|
+
parserFn(
|
186
|
+
`${lvalue} = options.typeCast(this.wrap${i}, function() { return ${readCode} });`
|
187
|
+
);
|
188
|
+
} else {
|
189
|
+
parserFn(`${lvalue} = ${readCode};`);
|
190
|
+
}
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
parserFn('return result;');
|
195
|
+
parserFn('}');
|
196
|
+
parserFn('};')('})()');
|
197
|
+
|
198
|
+
if (config.debug) {
|
199
|
+
helpers.printDebugWithCode(
|
200
|
+
'Compiled text protocol row parser',
|
201
|
+
parserFn.toString()
|
202
|
+
);
|
203
|
+
}
|
204
|
+
if (typeof options.typeCast === 'function') {
|
205
|
+
return parserFn.toFunction({ wrap });
|
206
|
+
}
|
207
|
+
return parserFn.toFunction();
|
208
|
+
}
|
209
|
+
|
210
|
+
function getTextParser(fields, options, config) {
|
211
|
+
return parserCache.getParser('text', fields, options, config, compile);
|
212
|
+
}
|
213
|
+
|
214
|
+
module.exports = getTextParser;
|