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.
Files changed (347) hide show
  1. package/dist/cjs/browser.js +1 -1
  2. package/dist/cjs/build.d.ts +2 -0
  3. package/dist/cjs/build.d.ts.map +1 -0
  4. package/dist/cjs/build.js +1 -0
  5. package/dist/cjs/getAllRouter/index.js +1 -1
  6. package/dist/cjs/hash/index.js +1 -1
  7. package/dist/cjs/id/index.js +1 -1
  8. package/dist/cjs/id/random.js +1 -1
  9. package/dist/cjs/index.js +1 -1
  10. package/dist/cjs/jwt/index.js +1 -1
  11. package/dist/cjs/mac/index.js +1 -1
  12. package/dist/cjs/package/mysql2/License +19 -0
  13. package/dist/cjs/package/mysql2/README.md +114 -0
  14. package/dist/cjs/package/mysql2/index.d.ts +1 -0
  15. package/dist/cjs/package/mysql2/index.js +77 -0
  16. package/dist/cjs/package/mysql2/lib/auth_41.js +95 -0
  17. package/dist/cjs/package/mysql2/lib/auth_plugins/caching_sha2_password.js +108 -0
  18. package/dist/cjs/package/mysql2/lib/auth_plugins/caching_sha2_password.md +18 -0
  19. package/dist/cjs/package/mysql2/lib/auth_plugins/index.js +8 -0
  20. package/dist/cjs/package/mysql2/lib/auth_plugins/mysql_clear_password.js +17 -0
  21. package/dist/cjs/package/mysql2/lib/auth_plugins/mysql_native_password.js +34 -0
  22. package/dist/cjs/package/mysql2/lib/auth_plugins/sha256_password.js +59 -0
  23. package/dist/cjs/package/mysql2/lib/base/connection.js +945 -0
  24. package/dist/cjs/package/mysql2/lib/base/pool.js +233 -0
  25. package/dist/cjs/package/mysql2/lib/base/pool_connection.js +63 -0
  26. package/dist/cjs/package/mysql2/lib/commands/auth_switch.js +111 -0
  27. package/dist/cjs/package/mysql2/lib/commands/binlog_dump.js +109 -0
  28. package/dist/cjs/package/mysql2/lib/commands/change_user.js +68 -0
  29. package/dist/cjs/package/mysql2/lib/commands/client_handshake.js +241 -0
  30. package/dist/cjs/package/mysql2/lib/commands/close_statement.js +18 -0
  31. package/dist/cjs/package/mysql2/lib/commands/command.js +54 -0
  32. package/dist/cjs/package/mysql2/lib/commands/execute.js +112 -0
  33. package/dist/cjs/package/mysql2/lib/commands/index.js +27 -0
  34. package/dist/cjs/package/mysql2/lib/commands/ping.js +36 -0
  35. package/dist/cjs/package/mysql2/lib/commands/prepare.js +143 -0
  36. package/dist/cjs/package/mysql2/lib/commands/query.js +329 -0
  37. package/dist/cjs/package/mysql2/lib/commands/quit.js +29 -0
  38. package/dist/cjs/package/mysql2/lib/commands/register_slave.js +27 -0
  39. package/dist/cjs/package/mysql2/lib/commands/server_handshake.js +203 -0
  40. package/dist/cjs/package/mysql2/lib/compressed_protocol.js +127 -0
  41. package/dist/cjs/package/mysql2/lib/connection.js +12 -0
  42. package/dist/cjs/package/mysql2/lib/connection_config.js +292 -0
  43. package/dist/cjs/package/mysql2/lib/constants/charset_encodings.js +316 -0
  44. package/dist/cjs/package/mysql2/lib/constants/charsets.js +317 -0
  45. package/dist/cjs/package/mysql2/lib/constants/client.js +39 -0
  46. package/dist/cjs/package/mysql2/lib/constants/commands.js +36 -0
  47. package/dist/cjs/package/mysql2/lib/constants/cursor.js +8 -0
  48. package/dist/cjs/package/mysql2/lib/constants/encoding_charset.js +49 -0
  49. package/dist/cjs/package/mysql2/lib/constants/errors.js +3973 -0
  50. package/dist/cjs/package/mysql2/lib/constants/field_flags.js +20 -0
  51. package/dist/cjs/package/mysql2/lib/constants/server_status.js +44 -0
  52. package/dist/cjs/package/mysql2/lib/constants/session_track.js +11 -0
  53. package/dist/cjs/package/mysql2/lib/constants/ssl_profiles.js +11 -0
  54. package/dist/cjs/package/mysql2/lib/constants/types.js +64 -0
  55. package/dist/cjs/package/mysql2/lib/create_connection.js +10 -0
  56. package/dist/cjs/package/mysql2/lib/create_pool.js +10 -0
  57. package/dist/cjs/package/mysql2/lib/create_pool_cluster.js +9 -0
  58. package/dist/cjs/package/mysql2/lib/helpers.js +86 -0
  59. package/dist/cjs/package/mysql2/lib/packet_parser.js +195 -0
  60. package/dist/cjs/package/mysql2/lib/packets/auth_next_factor.js +35 -0
  61. package/dist/cjs/package/mysql2/lib/packets/auth_switch_request.js +38 -0
  62. package/dist/cjs/package/mysql2/lib/packets/auth_switch_request_more_data.js +33 -0
  63. package/dist/cjs/package/mysql2/lib/packets/auth_switch_response.js +30 -0
  64. package/dist/cjs/package/mysql2/lib/packets/binary_row.js +95 -0
  65. package/dist/cjs/package/mysql2/lib/packets/binlog_dump.js +33 -0
  66. package/dist/cjs/package/mysql2/lib/packets/binlog_query_statusvars.js +115 -0
  67. package/dist/cjs/package/mysql2/lib/packets/change_user.js +97 -0
  68. package/dist/cjs/package/mysql2/lib/packets/close_statement.js +21 -0
  69. package/dist/cjs/package/mysql2/lib/packets/column_definition.js +291 -0
  70. package/dist/cjs/package/mysql2/lib/packets/execute.js +214 -0
  71. package/dist/cjs/package/mysql2/lib/packets/handshake.js +112 -0
  72. package/dist/cjs/package/mysql2/lib/packets/handshake_response.js +144 -0
  73. package/dist/cjs/package/mysql2/lib/packets/index.js +152 -0
  74. package/dist/cjs/package/mysql2/lib/packets/packet.js +931 -0
  75. package/dist/cjs/package/mysql2/lib/packets/prepare_statement.js +27 -0
  76. package/dist/cjs/package/mysql2/lib/packets/prepared_statement_header.js +16 -0
  77. package/dist/cjs/package/mysql2/lib/packets/query.js +27 -0
  78. package/dist/cjs/package/mysql2/lib/packets/register_slave.js +46 -0
  79. package/dist/cjs/package/mysql2/lib/packets/resultset_header.js +118 -0
  80. package/dist/cjs/package/mysql2/lib/packets/ssl_request.js +25 -0
  81. package/dist/cjs/package/mysql2/lib/packets/text_row.js +47 -0
  82. package/dist/cjs/package/mysql2/lib/parsers/binary_parser.js +231 -0
  83. package/dist/cjs/package/mysql2/lib/parsers/parser_cache.js +66 -0
  84. package/dist/cjs/package/mysql2/lib/parsers/static_binary_parser.js +211 -0
  85. package/dist/cjs/package/mysql2/lib/parsers/static_text_parser.js +152 -0
  86. package/dist/cjs/package/mysql2/lib/parsers/string.js +50 -0
  87. package/dist/cjs/package/mysql2/lib/parsers/text_parser.js +214 -0
  88. package/dist/cjs/package/mysql2/lib/pool.js +12 -0
  89. package/dist/cjs/package/mysql2/lib/pool_cluster.js +369 -0
  90. package/dist/cjs/package/mysql2/lib/pool_config.js +30 -0
  91. package/dist/cjs/package/mysql2/lib/pool_connection.js +12 -0
  92. package/dist/cjs/package/mysql2/lib/promise/connection.js +222 -0
  93. package/dist/cjs/package/mysql2/lib/promise/inherit_events.js +27 -0
  94. package/dist/cjs/package/mysql2/lib/promise/make_done_cb.js +19 -0
  95. package/dist/cjs/package/mysql2/lib/promise/pool.js +112 -0
  96. package/dist/cjs/package/mysql2/lib/promise/pool_cluster.js +54 -0
  97. package/dist/cjs/package/mysql2/lib/promise/pool_connection.js +19 -0
  98. package/dist/cjs/package/mysql2/lib/promise/prepared_statement_info.js +32 -0
  99. package/dist/cjs/package/mysql2/lib/results_stream.js +38 -0
  100. package/dist/cjs/package/mysql2/lib/server.js +37 -0
  101. package/dist/cjs/package/mysql2/package.json +80 -0
  102. package/dist/cjs/package/mysql2/promise.d.ts +131 -0
  103. package/dist/cjs/package/mysql2/promise.js +202 -0
  104. package/dist/cjs/package/mysql2/typings/mysql/LICENSE.txt +15 -0
  105. package/dist/cjs/package/mysql2/typings/mysql/index.d.ts +95 -0
  106. package/dist/cjs/package/mysql2/typings/mysql/info.txt +1 -0
  107. package/dist/cjs/package/mysql2/typings/mysql/lib/Auth.d.ts +30 -0
  108. package/dist/cjs/package/mysql2/typings/mysql/lib/Connection.d.ts +428 -0
  109. package/dist/cjs/package/mysql2/typings/mysql/lib/Pool.d.ts +69 -0
  110. package/dist/cjs/package/mysql2/typings/mysql/lib/PoolCluster.d.ts +90 -0
  111. package/dist/cjs/package/mysql2/typings/mysql/lib/PoolConnection.d.ts +10 -0
  112. package/dist/cjs/package/mysql2/typings/mysql/lib/Server.d.ts +11 -0
  113. package/dist/cjs/package/mysql2/typings/mysql/lib/constants/CharsetToEncoding.d.ts +8 -0
  114. package/dist/cjs/package/mysql2/typings/mysql/lib/constants/Charsets.d.ts +326 -0
  115. package/dist/cjs/package/mysql2/typings/mysql/lib/constants/Types.d.ts +70 -0
  116. package/dist/cjs/package/mysql2/typings/mysql/lib/constants/index.d.ts +5 -0
  117. package/dist/cjs/package/mysql2/typings/mysql/lib/parsers/ParserCache.d.ts +4 -0
  118. package/dist/cjs/package/mysql2/typings/mysql/lib/parsers/index.d.ts +18 -0
  119. package/dist/cjs/package/mysql2/typings/mysql/lib/parsers/typeCast.d.ts +54 -0
  120. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/Field.d.ts +10 -0
  121. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/FieldPacket.d.ts +27 -0
  122. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/OkPacket.d.ts +23 -0
  123. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/ProcedurePacket.d.ts +13 -0
  124. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader.d.ts +18 -0
  125. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/RowDataPacket.d.ts +9 -0
  126. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/index.d.ts +28 -0
  127. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/params/ErrorPacketParams.d.ts +6 -0
  128. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/packets/params/OkPacketParams.d.ts +9 -0
  129. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/ExecutableBase.d.ts +40 -0
  130. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/Prepare.d.ts +65 -0
  131. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/Query.d.ts +170 -0
  132. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/QueryableBase.d.ts +40 -0
  133. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/Sequence.d.ts +5 -0
  134. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/promise/ExecutableBase.d.ts +21 -0
  135. package/dist/cjs/package/mysql2/typings/mysql/lib/protocol/sequences/promise/QueryableBase.d.ts +21 -0
  136. package/dist/cjs/server.d.ts +1 -1
  137. package/dist/cjs/server.d.ts.map +1 -1
  138. package/dist/cjs/server.js +1 -1
  139. package/dist/cjs/src/browser.d.ts +3 -0
  140. package/dist/cjs/src/browser.d.ts.map +1 -0
  141. package/dist/cjs/src/browser.js +1 -0
  142. package/dist/cjs/src/getAllRouter/index.d.ts +3 -0
  143. package/dist/cjs/src/getAllRouter/index.d.ts.map +1 -0
  144. package/dist/cjs/src/getAllRouter/index.js +1 -0
  145. package/dist/cjs/src/hash/index.d.ts +4 -0
  146. package/dist/cjs/src/hash/index.d.ts.map +1 -0
  147. package/dist/cjs/src/hash/index.js +1 -0
  148. package/dist/cjs/src/id/index.d.ts +3 -0
  149. package/dist/cjs/src/id/index.d.ts.map +1 -0
  150. package/dist/cjs/src/id/index.js +1 -0
  151. package/dist/cjs/src/id/random.d.ts +4 -0
  152. package/dist/cjs/src/id/random.d.ts.map +1 -0
  153. package/dist/cjs/src/id/random.js +1 -0
  154. package/dist/cjs/src/index.d.ts +25 -0
  155. package/dist/cjs/src/index.d.ts.map +1 -0
  156. package/dist/cjs/src/index.js +1 -0
  157. package/dist/cjs/src/jwt/index.d.ts +9 -0
  158. package/dist/cjs/src/jwt/index.d.ts.map +1 -0
  159. package/dist/cjs/src/jwt/index.js +1 -0
  160. package/dist/cjs/src/mac/index.d.ts +6 -0
  161. package/dist/cjs/src/mac/index.d.ts.map +1 -0
  162. package/dist/cjs/src/mac/index.js +1 -0
  163. package/dist/cjs/src/server.d.ts +7 -0
  164. package/dist/cjs/src/server.d.ts.map +1 -0
  165. package/dist/cjs/src/server.js +1 -0
  166. package/dist/cjs/src/start.d.ts +4 -0
  167. package/dist/cjs/src/start.d.ts.map +1 -0
  168. package/dist/cjs/src/start.js +1 -0
  169. package/dist/cjs/src/update.d.ts +3 -0
  170. package/dist/cjs/src/update.d.ts.map +1 -0
  171. package/dist/cjs/src/update.js +1 -0
  172. package/dist/cjs/start.js +1 -1
  173. package/dist/cjs/update.js +1 -1
  174. package/dist/esm/browser.js +1 -1
  175. package/dist/esm/build.d.ts +2 -0
  176. package/dist/esm/build.d.ts.map +1 -0
  177. package/dist/esm/build.js +1 -0
  178. package/dist/esm/getAllRouter/index.js +1 -1
  179. package/dist/esm/hash/index.js +1 -1
  180. package/dist/esm/id/index.js +1 -1
  181. package/dist/esm/id/random.js +1 -1
  182. package/dist/esm/index.js +1 -1
  183. package/dist/esm/jwt/index.js +1 -1
  184. package/dist/esm/mac/index.js +1 -1
  185. package/dist/esm/package/mysql2/License +19 -0
  186. package/dist/esm/package/mysql2/README.md +114 -0
  187. package/dist/esm/package/mysql2/index.d.ts +1 -0
  188. package/dist/esm/package/mysql2/index.js +77 -0
  189. package/dist/esm/package/mysql2/lib/auth_41.js +95 -0
  190. package/dist/esm/package/mysql2/lib/auth_plugins/caching_sha2_password.js +108 -0
  191. package/dist/esm/package/mysql2/lib/auth_plugins/caching_sha2_password.md +18 -0
  192. package/dist/esm/package/mysql2/lib/auth_plugins/index.js +8 -0
  193. package/dist/esm/package/mysql2/lib/auth_plugins/mysql_clear_password.js +17 -0
  194. package/dist/esm/package/mysql2/lib/auth_plugins/mysql_native_password.js +34 -0
  195. package/dist/esm/package/mysql2/lib/auth_plugins/sha256_password.js +59 -0
  196. package/dist/esm/package/mysql2/lib/base/connection.js +945 -0
  197. package/dist/esm/package/mysql2/lib/base/pool.js +233 -0
  198. package/dist/esm/package/mysql2/lib/base/pool_connection.js +63 -0
  199. package/dist/esm/package/mysql2/lib/commands/auth_switch.js +111 -0
  200. package/dist/esm/package/mysql2/lib/commands/binlog_dump.js +109 -0
  201. package/dist/esm/package/mysql2/lib/commands/change_user.js +68 -0
  202. package/dist/esm/package/mysql2/lib/commands/client_handshake.js +241 -0
  203. package/dist/esm/package/mysql2/lib/commands/close_statement.js +18 -0
  204. package/dist/esm/package/mysql2/lib/commands/command.js +54 -0
  205. package/dist/esm/package/mysql2/lib/commands/execute.js +112 -0
  206. package/dist/esm/package/mysql2/lib/commands/index.js +27 -0
  207. package/dist/esm/package/mysql2/lib/commands/ping.js +36 -0
  208. package/dist/esm/package/mysql2/lib/commands/prepare.js +143 -0
  209. package/dist/esm/package/mysql2/lib/commands/query.js +329 -0
  210. package/dist/esm/package/mysql2/lib/commands/quit.js +29 -0
  211. package/dist/esm/package/mysql2/lib/commands/register_slave.js +27 -0
  212. package/dist/esm/package/mysql2/lib/commands/server_handshake.js +203 -0
  213. package/dist/esm/package/mysql2/lib/compressed_protocol.js +127 -0
  214. package/dist/esm/package/mysql2/lib/connection.js +12 -0
  215. package/dist/esm/package/mysql2/lib/connection_config.js +292 -0
  216. package/dist/esm/package/mysql2/lib/constants/charset_encodings.js +316 -0
  217. package/dist/esm/package/mysql2/lib/constants/charsets.js +317 -0
  218. package/dist/esm/package/mysql2/lib/constants/client.js +39 -0
  219. package/dist/esm/package/mysql2/lib/constants/commands.js +36 -0
  220. package/dist/esm/package/mysql2/lib/constants/cursor.js +8 -0
  221. package/dist/esm/package/mysql2/lib/constants/encoding_charset.js +49 -0
  222. package/dist/esm/package/mysql2/lib/constants/errors.js +3973 -0
  223. package/dist/esm/package/mysql2/lib/constants/field_flags.js +20 -0
  224. package/dist/esm/package/mysql2/lib/constants/server_status.js +44 -0
  225. package/dist/esm/package/mysql2/lib/constants/session_track.js +11 -0
  226. package/dist/esm/package/mysql2/lib/constants/ssl_profiles.js +11 -0
  227. package/dist/esm/package/mysql2/lib/constants/types.js +64 -0
  228. package/dist/esm/package/mysql2/lib/create_connection.js +10 -0
  229. package/dist/esm/package/mysql2/lib/create_pool.js +10 -0
  230. package/dist/esm/package/mysql2/lib/create_pool_cluster.js +9 -0
  231. package/dist/esm/package/mysql2/lib/helpers.js +86 -0
  232. package/dist/esm/package/mysql2/lib/packet_parser.js +195 -0
  233. package/dist/esm/package/mysql2/lib/packets/auth_next_factor.js +35 -0
  234. package/dist/esm/package/mysql2/lib/packets/auth_switch_request.js +38 -0
  235. package/dist/esm/package/mysql2/lib/packets/auth_switch_request_more_data.js +33 -0
  236. package/dist/esm/package/mysql2/lib/packets/auth_switch_response.js +30 -0
  237. package/dist/esm/package/mysql2/lib/packets/binary_row.js +95 -0
  238. package/dist/esm/package/mysql2/lib/packets/binlog_dump.js +33 -0
  239. package/dist/esm/package/mysql2/lib/packets/binlog_query_statusvars.js +115 -0
  240. package/dist/esm/package/mysql2/lib/packets/change_user.js +97 -0
  241. package/dist/esm/package/mysql2/lib/packets/close_statement.js +21 -0
  242. package/dist/esm/package/mysql2/lib/packets/column_definition.js +291 -0
  243. package/dist/esm/package/mysql2/lib/packets/execute.js +214 -0
  244. package/dist/esm/package/mysql2/lib/packets/handshake.js +112 -0
  245. package/dist/esm/package/mysql2/lib/packets/handshake_response.js +144 -0
  246. package/dist/esm/package/mysql2/lib/packets/index.js +152 -0
  247. package/dist/esm/package/mysql2/lib/packets/packet.js +931 -0
  248. package/dist/esm/package/mysql2/lib/packets/prepare_statement.js +27 -0
  249. package/dist/esm/package/mysql2/lib/packets/prepared_statement_header.js +16 -0
  250. package/dist/esm/package/mysql2/lib/packets/query.js +27 -0
  251. package/dist/esm/package/mysql2/lib/packets/register_slave.js +46 -0
  252. package/dist/esm/package/mysql2/lib/packets/resultset_header.js +118 -0
  253. package/dist/esm/package/mysql2/lib/packets/ssl_request.js +25 -0
  254. package/dist/esm/package/mysql2/lib/packets/text_row.js +47 -0
  255. package/dist/esm/package/mysql2/lib/parsers/binary_parser.js +231 -0
  256. package/dist/esm/package/mysql2/lib/parsers/parser_cache.js +66 -0
  257. package/dist/esm/package/mysql2/lib/parsers/static_binary_parser.js +211 -0
  258. package/dist/esm/package/mysql2/lib/parsers/static_text_parser.js +152 -0
  259. package/dist/esm/package/mysql2/lib/parsers/string.js +50 -0
  260. package/dist/esm/package/mysql2/lib/parsers/text_parser.js +214 -0
  261. package/dist/esm/package/mysql2/lib/pool.js +12 -0
  262. package/dist/esm/package/mysql2/lib/pool_cluster.js +369 -0
  263. package/dist/esm/package/mysql2/lib/pool_config.js +30 -0
  264. package/dist/esm/package/mysql2/lib/pool_connection.js +12 -0
  265. package/dist/esm/package/mysql2/lib/promise/connection.js +222 -0
  266. package/dist/esm/package/mysql2/lib/promise/inherit_events.js +27 -0
  267. package/dist/esm/package/mysql2/lib/promise/make_done_cb.js +19 -0
  268. package/dist/esm/package/mysql2/lib/promise/pool.js +112 -0
  269. package/dist/esm/package/mysql2/lib/promise/pool_cluster.js +54 -0
  270. package/dist/esm/package/mysql2/lib/promise/pool_connection.js +19 -0
  271. package/dist/esm/package/mysql2/lib/promise/prepared_statement_info.js +32 -0
  272. package/dist/esm/package/mysql2/lib/results_stream.js +38 -0
  273. package/dist/esm/package/mysql2/lib/server.js +37 -0
  274. package/dist/esm/package/mysql2/package.json +80 -0
  275. package/dist/esm/package/mysql2/promise.d.ts +131 -0
  276. package/dist/esm/package/mysql2/promise.js +202 -0
  277. package/dist/esm/package/mysql2/typings/mysql/LICENSE.txt +15 -0
  278. package/dist/esm/package/mysql2/typings/mysql/index.d.ts +95 -0
  279. package/dist/esm/package/mysql2/typings/mysql/info.txt +1 -0
  280. package/dist/esm/package/mysql2/typings/mysql/lib/Auth.d.ts +30 -0
  281. package/dist/esm/package/mysql2/typings/mysql/lib/Connection.d.ts +428 -0
  282. package/dist/esm/package/mysql2/typings/mysql/lib/Pool.d.ts +69 -0
  283. package/dist/esm/package/mysql2/typings/mysql/lib/PoolCluster.d.ts +90 -0
  284. package/dist/esm/package/mysql2/typings/mysql/lib/PoolConnection.d.ts +10 -0
  285. package/dist/esm/package/mysql2/typings/mysql/lib/Server.d.ts +11 -0
  286. package/dist/esm/package/mysql2/typings/mysql/lib/constants/CharsetToEncoding.d.ts +8 -0
  287. package/dist/esm/package/mysql2/typings/mysql/lib/constants/Charsets.d.ts +326 -0
  288. package/dist/esm/package/mysql2/typings/mysql/lib/constants/Types.d.ts +70 -0
  289. package/dist/esm/package/mysql2/typings/mysql/lib/constants/index.d.ts +5 -0
  290. package/dist/esm/package/mysql2/typings/mysql/lib/parsers/ParserCache.d.ts +4 -0
  291. package/dist/esm/package/mysql2/typings/mysql/lib/parsers/index.d.ts +18 -0
  292. package/dist/esm/package/mysql2/typings/mysql/lib/parsers/typeCast.d.ts +54 -0
  293. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/Field.d.ts +10 -0
  294. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/FieldPacket.d.ts +27 -0
  295. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/OkPacket.d.ts +23 -0
  296. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/ProcedurePacket.d.ts +13 -0
  297. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader.d.ts +18 -0
  298. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/RowDataPacket.d.ts +9 -0
  299. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/index.d.ts +28 -0
  300. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/params/ErrorPacketParams.d.ts +6 -0
  301. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/packets/params/OkPacketParams.d.ts +9 -0
  302. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/ExecutableBase.d.ts +40 -0
  303. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/Prepare.d.ts +65 -0
  304. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/Query.d.ts +170 -0
  305. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/QueryableBase.d.ts +40 -0
  306. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/Sequence.d.ts +5 -0
  307. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/promise/ExecutableBase.d.ts +21 -0
  308. package/dist/esm/package/mysql2/typings/mysql/lib/protocol/sequences/promise/QueryableBase.d.ts +21 -0
  309. package/dist/esm/server.d.ts +1 -1
  310. package/dist/esm/server.d.ts.map +1 -1
  311. package/dist/esm/server.js +1 -1
  312. package/dist/esm/src/browser.d.ts +3 -0
  313. package/dist/esm/src/browser.d.ts.map +1 -0
  314. package/dist/esm/src/browser.js +1 -0
  315. package/dist/esm/src/getAllRouter/index.d.ts +3 -0
  316. package/dist/esm/src/getAllRouter/index.d.ts.map +1 -0
  317. package/dist/esm/src/getAllRouter/index.js +1 -0
  318. package/dist/esm/src/hash/index.d.ts +4 -0
  319. package/dist/esm/src/hash/index.d.ts.map +1 -0
  320. package/dist/esm/src/hash/index.js +1 -0
  321. package/dist/esm/src/id/index.d.ts +3 -0
  322. package/dist/esm/src/id/index.d.ts.map +1 -0
  323. package/dist/esm/src/id/index.js +1 -0
  324. package/dist/esm/src/id/random.d.ts +4 -0
  325. package/dist/esm/src/id/random.d.ts.map +1 -0
  326. package/dist/esm/src/id/random.js +1 -0
  327. package/dist/esm/src/index.d.ts +25 -0
  328. package/dist/esm/src/index.d.ts.map +1 -0
  329. package/dist/esm/src/index.js +1 -0
  330. package/dist/esm/src/jwt/index.d.ts +9 -0
  331. package/dist/esm/src/jwt/index.d.ts.map +1 -0
  332. package/dist/esm/src/jwt/index.js +1 -0
  333. package/dist/esm/src/mac/index.d.ts +6 -0
  334. package/dist/esm/src/mac/index.d.ts.map +1 -0
  335. package/dist/esm/src/mac/index.js +1 -0
  336. package/dist/esm/src/server.d.ts +7 -0
  337. package/dist/esm/src/server.d.ts.map +1 -0
  338. package/dist/esm/src/server.js +1 -0
  339. package/dist/esm/src/start.d.ts +4 -0
  340. package/dist/esm/src/start.d.ts.map +1 -0
  341. package/dist/esm/src/start.js +1 -0
  342. package/dist/esm/src/update.d.ts +3 -0
  343. package/dist/esm/src/update.d.ts.map +1 -0
  344. package/dist/esm/src/update.js +1 -0
  345. package/dist/esm/start.js +1 -1
  346. package/dist/esm/update.js +1 -1
  347. package/package.json +3 -4
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const Packet = require('../packets/packet');
4
+ const CommandCodes = require('../constants/commands');
5
+ const StringParser = require('../parsers/string.js');
6
+ const CharsetToEncoding = require('../constants/charset_encodings.js');
7
+
8
+ class PrepareStatement {
9
+ constructor(sql, charsetNumber) {
10
+ this.query = sql;
11
+ this.charsetNumber = charsetNumber;
12
+ this.encoding = CharsetToEncoding[charsetNumber];
13
+ }
14
+
15
+ toPacket() {
16
+ const buf = StringParser.encode(this.query, this.encoding);
17
+ const length = 5 + buf.length;
18
+ const buffer = Buffer.allocUnsafe(length);
19
+ const packet = new Packet(0, buffer, 0, length);
20
+ packet.offset = 4;
21
+ packet.writeInt8(CommandCodes.STMT_PREPARE);
22
+ packet.writeBuffer(buf);
23
+ return packet;
24
+ }
25
+ }
26
+
27
+ module.exports = PrepareStatement;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ class PreparedStatementHeader {
4
+ constructor(packet) {
5
+ packet.skip(1); // should be 0
6
+ this.id = packet.readInt32();
7
+ this.fieldCount = packet.readInt16();
8
+ this.parameterCount = packet.readInt16();
9
+ packet.skip(1); // should be 0
10
+ this.warningCount = packet.readInt16();
11
+ }
12
+ }
13
+
14
+ // TODO: toPacket
15
+
16
+ module.exports = PreparedStatementHeader;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const Packet = require('../packets/packet.js');
4
+ const CommandCode = require('../constants/commands.js');
5
+ const StringParser = require('../parsers/string.js');
6
+ const CharsetToEncoding = require('../constants/charset_encodings.js');
7
+
8
+ class Query {
9
+ constructor(sql, charsetNumber) {
10
+ this.query = sql;
11
+ this.charsetNumber = charsetNumber;
12
+ this.encoding = CharsetToEncoding[charsetNumber];
13
+ }
14
+
15
+ toPacket() {
16
+ const buf = StringParser.encode(this.query, this.encoding);
17
+ const length = 5 + buf.length;
18
+ const buffer = Buffer.allocUnsafe(length);
19
+ const packet = new Packet(0, buffer, 0, length);
20
+ packet.offset = 4;
21
+ packet.writeInt8(CommandCode.QUERY);
22
+ packet.writeBuffer(buf);
23
+ return packet;
24
+ }
25
+ }
26
+
27
+ module.exports = Query;
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ // http://dev.mysql.com/doc/internals/en/com-register-slave.html
4
+ // note that documentation is incorrect, for example command code is actually 0x15 but documented as 0x14
5
+
6
+ const Packet = require('../packets/packet');
7
+ const CommandCodes = require('../constants/commands');
8
+
9
+ class RegisterSlave {
10
+ constructor(opts) {
11
+ this.serverId = opts.serverId || 0;
12
+ this.slaveHostname = opts.slaveHostname || '';
13
+ this.slaveUser = opts.slaveUser || '';
14
+ this.slavePassword = opts.slavePassword || '';
15
+ this.slavePort = opts.slavePort || 0;
16
+ this.replicationRank = opts.replicationRank || 0;
17
+ this.masterId = opts.masterId || 0;
18
+ }
19
+
20
+ toPacket() {
21
+ const length =
22
+ 15 + // TODO: should be ascii?
23
+ Buffer.byteLength(this.slaveHostname, 'utf8') +
24
+ Buffer.byteLength(this.slaveUser, 'utf8') +
25
+ Buffer.byteLength(this.slavePassword, 'utf8') +
26
+ 3 +
27
+ 4;
28
+ const buffer = Buffer.allocUnsafe(length);
29
+ const packet = new Packet(0, buffer, 0, length);
30
+ packet.offset = 4;
31
+ packet.writeInt8(CommandCodes.REGISTER_SLAVE);
32
+ packet.writeInt32(this.serverId);
33
+ packet.writeInt8(Buffer.byteLength(this.slaveHostname, 'utf8'));
34
+ packet.writeString(this.slaveHostname);
35
+ packet.writeInt8(Buffer.byteLength(this.slaveUser, 'utf8'));
36
+ packet.writeString(this.slaveUser);
37
+ packet.writeInt8(Buffer.byteLength(this.slavePassword, 'utf8'));
38
+ packet.writeString(this.slavePassword);
39
+ packet.writeInt16(this.slavePort);
40
+ packet.writeInt32(this.replicationRank);
41
+ packet.writeInt32(this.masterId);
42
+ return packet;
43
+ }
44
+ }
45
+
46
+ module.exports = RegisterSlave;
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ // TODO: rename to OK packet
4
+ // https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html
5
+
6
+ const Packet = require('./packet.js');
7
+ const ClientConstants = require('../constants/client.js');
8
+ const ServerSatusFlags = require('../constants/server_status.js');
9
+
10
+ const EncodingToCharset = require('../constants/encoding_charset.js');
11
+ const sessionInfoTypes = require('../constants/session_track.js');
12
+
13
+ class ResultSetHeader {
14
+ constructor(packet, connection) {
15
+ const bigNumberStrings = connection.config.bigNumberStrings;
16
+ const encoding = connection.serverEncoding;
17
+ const flags = connection._handshakePacket.capabilityFlags;
18
+ const isSet = function (flag) {
19
+ return flags & ClientConstants[flag];
20
+ };
21
+ if (packet.buffer[packet.offset] !== 0) {
22
+ this.fieldCount = packet.readLengthCodedNumber();
23
+ if (this.fieldCount === null) {
24
+ this.infileName = packet.readString(undefined, encoding);
25
+ }
26
+ return;
27
+ }
28
+ this.fieldCount = packet.readInt8(); // skip OK byte
29
+ this.affectedRows = packet.readLengthCodedNumber(bigNumberStrings);
30
+ this.insertId = packet.readLengthCodedNumberSigned(bigNumberStrings);
31
+ this.info = '';
32
+ if (isSet('PROTOCOL_41')) {
33
+ this.serverStatus = packet.readInt16();
34
+ this.warningStatus = packet.readInt16();
35
+ } else if (isSet('TRANSACTIONS')) {
36
+ this.serverStatus = packet.readInt16();
37
+ }
38
+ let stateChanges = null;
39
+ if (isSet('SESSION_TRACK') && packet.offset < packet.end) {
40
+ this.info = packet.readLengthCodedString(encoding);
41
+
42
+ if (this.serverStatus && ServerSatusFlags.SERVER_SESSION_STATE_CHANGED) {
43
+ // session change info record - see
44
+ // https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html#cs-sect-packet-ok-sessioninfo
45
+ let len =
46
+ packet.offset < packet.end ? packet.readLengthCodedNumber() : 0;
47
+ const end = packet.offset + len;
48
+ let type, key, stateEnd;
49
+ if (len > 0) {
50
+ stateChanges = {
51
+ systemVariables: {},
52
+ schema: null,
53
+ gtids: [],
54
+ trackStateChange: null,
55
+ };
56
+ }
57
+ while (packet.offset < end) {
58
+ type = packet.readInt8();
59
+ len = packet.readLengthCodedNumber();
60
+ stateEnd = packet.offset + len;
61
+ if (type === sessionInfoTypes.SYSTEM_VARIABLES) {
62
+ key = packet.readLengthCodedString(encoding);
63
+ const val = packet.readLengthCodedString(encoding);
64
+ stateChanges.systemVariables[key] = val;
65
+ if (key === 'character_set_client') {
66
+ const charsetNumber = EncodingToCharset[val];
67
+ connection.config.charsetNumber = charsetNumber;
68
+ }
69
+ } else if (type === sessionInfoTypes.SCHEMA) {
70
+ key = packet.readLengthCodedString(encoding);
71
+ stateChanges.schema = key;
72
+ } else if (type === sessionInfoTypes.STATE_CHANGE) {
73
+ stateChanges.trackStateChange =
74
+ packet.readLengthCodedString(encoding);
75
+ } else if (type === sessionInfoTypes.STATE_GTIDS) {
76
+ // TODO: find if the first length coded string means anything. Usually comes as empty
77
+ // eslint-disable-next-line no-unused-vars
78
+ const _unknownString = packet.readLengthCodedString(encoding);
79
+ const gtid = packet.readLengthCodedString(encoding);
80
+ stateChanges.gtids = gtid.split(',');
81
+ } else {
82
+ // unsupported session track type. For now just ignore
83
+ }
84
+ packet.offset = stateEnd;
85
+ }
86
+ }
87
+ } else {
88
+ this.info = packet.readString(undefined, encoding);
89
+ }
90
+ if (stateChanges) {
91
+ this.stateChanges = stateChanges;
92
+ }
93
+ const m = this.info.match(/\schanged:\s*(\d+)/i);
94
+ if (m !== null) {
95
+ this.changedRows = parseInt(m[1], 10);
96
+ } else {
97
+ this.changedRows = 0;
98
+ }
99
+ }
100
+
101
+ // TODO: should be consistent instance member, but it's just easier here to have just function
102
+ static toPacket(fieldCount, insertId) {
103
+ let length = 4 + Packet.lengthCodedNumberLength(fieldCount);
104
+ if (typeof insertId !== 'undefined') {
105
+ length += Packet.lengthCodedNumberLength(insertId);
106
+ }
107
+ const buffer = Buffer.allocUnsafe(length);
108
+ const packet = new Packet(0, buffer, 0, length);
109
+ packet.offset = 4;
110
+ packet.writeLengthCodedNumber(fieldCount);
111
+ if (typeof insertId !== 'undefined') {
112
+ packet.writeLengthCodedNumber(insertId);
113
+ }
114
+ return packet;
115
+ }
116
+ }
117
+
118
+ module.exports = ResultSetHeader;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const ClientConstants = require('../constants/client');
4
+ const Packet = require('../packets/packet');
5
+
6
+ class SSLRequest {
7
+ constructor(flags, charset) {
8
+ this.clientFlags = flags | ClientConstants.SSL;
9
+ this.charset = charset;
10
+ }
11
+
12
+ toPacket() {
13
+ const length = 36;
14
+ const buffer = Buffer.allocUnsafe(length);
15
+ const packet = new Packet(0, buffer, 0, length);
16
+ buffer.fill(0);
17
+ packet.offset = 4;
18
+ packet.writeInt32(this.clientFlags);
19
+ packet.writeInt32(0); // max packet size. todo: move to config
20
+ packet.writeInt8(this.charset);
21
+ return packet;
22
+ }
23
+ }
24
+
25
+ module.exports = SSLRequest;
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ const Packet = require('../packets/packet');
4
+
5
+ class TextRow {
6
+ constructor(columns) {
7
+ this.columns = columns || [];
8
+ }
9
+
10
+ static fromPacket(packet) {
11
+ // packet.reset(); // set offset to starting point?
12
+ const columns = [];
13
+ while (packet.haveMoreData()) {
14
+ columns.push(packet.readLengthCodedString());
15
+ }
16
+ return new TextRow(columns);
17
+ }
18
+
19
+ static toPacket(columns, encoding) {
20
+ const sequenceId = 0; // TODO remove, this is calculated now in connecton
21
+ let length = 0;
22
+ columns.forEach((val) => {
23
+ if (val === null || typeof val === 'undefined') {
24
+ ++length;
25
+ return;
26
+ }
27
+ length += Packet.lengthCodedStringLength(val.toString(10), encoding);
28
+ });
29
+ const buffer = Buffer.allocUnsafe(length + 4);
30
+ const packet = new Packet(sequenceId, buffer, 0, length + 4);
31
+ packet.offset = 4;
32
+ columns.forEach((val) => {
33
+ if (val === null) {
34
+ packet.writeNull();
35
+ return;
36
+ }
37
+ if (typeof val === 'undefined') {
38
+ packet.writeInt8(0);
39
+ return;
40
+ }
41
+ packet.writeLengthCodedString(val.toString(10), encoding);
42
+ });
43
+ return packet;
44
+ }
45
+ }
46
+
47
+ module.exports = TextRow;
@@ -0,0 +1,231 @@
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
+ const genFunc = require('generate-function');
8
+ const parserCache = require('./parser_cache.js');
9
+ const typeNames = [];
10
+ for (const t in Types) {
11
+ typeNames[Types[t]] = t;
12
+ }
13
+
14
+ function readCodeFor(field, config, options, fieldNum) {
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
+ switch (field.columnType) {
25
+ case Types.TINY:
26
+ return unsigned ? 'packet.readInt8();' : 'packet.readSInt8();';
27
+ case Types.SHORT:
28
+ return unsigned ? 'packet.readInt16();' : 'packet.readSInt16();';
29
+ case Types.LONG:
30
+ case Types.INT24: // in binary protocol int24 is encoded in 4 bytes int32
31
+ return unsigned ? 'packet.readInt32();' : 'packet.readSInt32();';
32
+ case Types.YEAR:
33
+ return 'packet.readInt16()';
34
+ case Types.FLOAT:
35
+ return 'packet.readFloat();';
36
+ case Types.DOUBLE:
37
+ return 'packet.readDouble();';
38
+ case Types.NULL:
39
+ return 'null;';
40
+ case Types.DATE:
41
+ case Types.DATETIME:
42
+ case Types.TIMESTAMP:
43
+ case Types.NEWDATE:
44
+ if (helpers.typeMatch(field.columnType, dateStrings, Types)) {
45
+ return `packet.readDateTimeString(${parseInt(field.decimals, 10)}, ${null}, ${field.columnType});`;
46
+ }
47
+ return `packet.readDateTime(${helpers.srcEscape(timezone)});`;
48
+ case Types.TIME:
49
+ return 'packet.readTimeString()';
50
+ case Types.DECIMAL:
51
+ case Types.NEWDECIMAL:
52
+ if (config.decimalNumbers) {
53
+ return 'packet.parseLengthCodedFloat();';
54
+ }
55
+ return 'packet.readLengthCodedString("ascii");';
56
+ case Types.GEOMETRY:
57
+ return 'packet.parseGeometryValue();';
58
+ case Types.VECTOR:
59
+ return 'packet.parseVector()';
60
+ case Types.JSON:
61
+ // Since for JSON columns mysql always returns charset 63 (BINARY),
62
+ // we have to handle it according to JSON specs and use "utf8",
63
+ // see https://github.com/sidorares/node-mysql2/issues/409
64
+ return config.jsonStrings
65
+ ? 'packet.readLengthCodedString("utf8")'
66
+ : 'JSON.parse(packet.readLengthCodedString("utf8"));';
67
+ case Types.LONGLONG:
68
+ if (!supportBigNumbers) {
69
+ return unsigned
70
+ ? 'packet.readInt64JSNumber();'
71
+ : 'packet.readSInt64JSNumber();';
72
+ }
73
+ if (bigNumberStrings) {
74
+ return unsigned
75
+ ? 'packet.readInt64String();'
76
+ : 'packet.readSInt64String();';
77
+ }
78
+ return unsigned ? 'packet.readInt64();' : 'packet.readSInt64();';
79
+
80
+ default:
81
+ if (field.characterSet === Charsets.BINARY) {
82
+ return 'packet.readLengthCodedBuffer();';
83
+ }
84
+ return `packet.readLengthCodedString(fields[${fieldNum}].encoding)`;
85
+ }
86
+ }
87
+
88
+ function compile(fields, options, config) {
89
+ const parserFn = genFunc();
90
+ const nullBitmapLength = Math.floor((fields.length + 7 + 2) / 8);
91
+
92
+ function wrap(field, packet) {
93
+ return {
94
+ type: typeNames[field.columnType],
95
+ length: field.columnLength,
96
+ db: field.schema,
97
+ table: field.table,
98
+ name: field.name,
99
+ string: function (encoding = field.encoding) {
100
+ if (field.columnType === Types.JSON && encoding === field.encoding) {
101
+ // Since for JSON columns mysql always returns charset 63 (BINARY),
102
+ // we have to handle it according to JSON specs and use "utf8",
103
+ // see https://github.com/sidorares/node-mysql2/issues/1661
104
+ console.warn(
105
+ `typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\``
106
+ );
107
+ }
108
+
109
+ if (
110
+ [Types.DATETIME, Types.NEWDATE, Types.TIMESTAMP, Types.DATE].includes(
111
+ field.columnType
112
+ )
113
+ ) {
114
+ return packet.readDateTimeString(parseInt(field.decimals, 10));
115
+ }
116
+
117
+ if (field.columnType === Types.TINY) {
118
+ const unsigned = field.flags & FieldFlags.UNSIGNED;
119
+
120
+ return String(unsigned ? packet.readInt8() : packet.readSInt8());
121
+ }
122
+
123
+ if (field.columnType === Types.TIME) {
124
+ return packet.readTimeString();
125
+ }
126
+
127
+ return packet.readLengthCodedString(encoding);
128
+ },
129
+ buffer: function () {
130
+ return packet.readLengthCodedBuffer();
131
+ },
132
+ geometry: function () {
133
+ return packet.parseGeometryValue();
134
+ },
135
+ };
136
+ }
137
+
138
+ parserFn('(function(){');
139
+ parserFn('return class BinaryRow {');
140
+ parserFn('constructor() {');
141
+ parserFn('}');
142
+
143
+ parserFn('next(packet, fields, options) {');
144
+ if (options.rowsAsArray) {
145
+ parserFn(`const result = new Array(${fields.length});`);
146
+ } else {
147
+ parserFn('const result = {};');
148
+ }
149
+
150
+ // Global typeCast
151
+ if (
152
+ typeof config.typeCast === 'function' &&
153
+ typeof options.typeCast !== 'function'
154
+ ) {
155
+ options.typeCast = config.typeCast;
156
+ }
157
+
158
+ parserFn('packet.readInt8();'); // status byte
159
+ for (let i = 0; i < nullBitmapLength; ++i) {
160
+ parserFn(`const nullBitmaskByte${i} = packet.readInt8();`);
161
+ }
162
+
163
+ let lvalue = '';
164
+ let currentFieldNullBit = 4;
165
+ let nullByteIndex = 0;
166
+ let fieldName = '';
167
+ let tableName = '';
168
+
169
+ for (let i = 0; i < fields.length; i++) {
170
+ fieldName = helpers.fieldEscape(fields[i].name);
171
+ // parserFn(`// ${fieldName}: ${typeNames[fields[i].columnType]}`);
172
+
173
+ if (typeof options.nestTables === 'string') {
174
+ lvalue = `result[${helpers.fieldEscape(fields[i].table + options.nestTables + fields[i].name)}]`;
175
+ } else if (options.nestTables === true) {
176
+ tableName = helpers.fieldEscape(fields[i].table);
177
+
178
+ parserFn(`if (!result[${tableName}]) result[${tableName}] = {};`);
179
+ lvalue = `result[${tableName}][${fieldName}]`;
180
+ } else if (options.rowsAsArray) {
181
+ lvalue = `result[${i.toString(10)}]`;
182
+ } else {
183
+ lvalue = `result[${fieldName}]`;
184
+ }
185
+
186
+ parserFn(`if (nullBitmaskByte${nullByteIndex} & ${currentFieldNullBit}) `);
187
+ parserFn(`${lvalue} = null;`);
188
+ parserFn('else {');
189
+
190
+ if (options.typeCast === false) {
191
+ parserFn(`${lvalue} = packet.readLengthCodedBuffer();`);
192
+ } else {
193
+ const fieldWrapperVar = `fieldWrapper${i}`;
194
+ parserFn(`const ${fieldWrapperVar} = wrap(fields[${i}], packet);`);
195
+ const readCode = readCodeFor(fields[i], config, options, i);
196
+
197
+ if (typeof options.typeCast === 'function') {
198
+ parserFn(
199
+ `${lvalue} = options.typeCast(${fieldWrapperVar}, function() { return ${readCode} });`
200
+ );
201
+ } else {
202
+ parserFn(`${lvalue} = ${readCode};`);
203
+ }
204
+ }
205
+ parserFn('}');
206
+
207
+ currentFieldNullBit *= 2;
208
+ if (currentFieldNullBit === 0x100) {
209
+ currentFieldNullBit = 1;
210
+ nullByteIndex++;
211
+ }
212
+ }
213
+
214
+ parserFn('return result;');
215
+ parserFn('}');
216
+ parserFn('};')('})()');
217
+
218
+ if (config.debug) {
219
+ helpers.printDebugWithCode(
220
+ 'Compiled binary protocol row parser',
221
+ parserFn.toString()
222
+ );
223
+ }
224
+ return parserFn.toFunction({ wrap });
225
+ }
226
+
227
+ function getBinaryParser(fields, options, config) {
228
+ return parserCache.getParser('binary', fields, options, config, compile);
229
+ }
230
+
231
+ module.exports = getBinaryParser;
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ const { createLRU } = require('lru.min');
4
+
5
+ const parserCache = createLRU({
6
+ max: 15000,
7
+ });
8
+
9
+ function keyFromFields(type, fields, options, config) {
10
+ const res = [
11
+ type,
12
+ typeof options.nestTables,
13
+ options.nestTables,
14
+ Boolean(options.rowsAsArray),
15
+ Boolean(options.supportBigNumbers || config.supportBigNumbers),
16
+ Boolean(options.bigNumberStrings || config.bigNumberStrings),
17
+ typeof options.typeCast,
18
+ options.timezone || config.timezone,
19
+ Boolean(options.decimalNumbers),
20
+ options.dateStrings,
21
+ ];
22
+
23
+ for (let i = 0; i < fields.length; ++i) {
24
+ const field = fields[i];
25
+
26
+ res.push([
27
+ field.name,
28
+ field.columnType,
29
+ field.length,
30
+ field.schema,
31
+ field.table,
32
+ field.flags,
33
+ field.characterSet,
34
+ ]);
35
+ }
36
+
37
+ return JSON.stringify(res, null, 0);
38
+ }
39
+
40
+ function getParser(type, fields, options, config, compiler) {
41
+ const key = keyFromFields(type, fields, options, config);
42
+ let parser = parserCache.get(key);
43
+
44
+ if (parser) {
45
+ return parser;
46
+ }
47
+
48
+ parser = compiler(fields, options, config);
49
+ parserCache.set(key, parser);
50
+ return parser;
51
+ }
52
+
53
+ function setMaxCache(max) {
54
+ parserCache.resize(max);
55
+ }
56
+
57
+ function clearCache() {
58
+ parserCache.clear();
59
+ }
60
+
61
+ module.exports = {
62
+ getParser: getParser,
63
+ setMaxCache: setMaxCache,
64
+ clearCache: clearCache,
65
+ _keyFromFields: keyFromFields,
66
+ };