tedious 16.2.0 → 16.4.0

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 (205) hide show
  1. package/lib/all-headers.js +1 -2
  2. package/lib/all-headers.js.map +1 -0
  3. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +9 -31
  4. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
  5. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +9 -24
  6. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
  7. package/lib/always-encrypted/cek-entry.js +8 -12
  8. package/lib/always-encrypted/cek-entry.js.map +1 -0
  9. package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -24
  10. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
  11. package/lib/always-encrypted/key-crypto.js +5 -30
  12. package/lib/always-encrypted/key-crypto.js.map +1 -0
  13. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +11 -72
  14. package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
  15. package/lib/always-encrypted/symmetric-key-cache.js +2 -13
  16. package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
  17. package/lib/always-encrypted/symmetric-key.js +3 -8
  18. package/lib/always-encrypted/symmetric-key.js.map +1 -0
  19. package/lib/always-encrypted/types.js +19 -27
  20. package/lib/always-encrypted/types.js.map +1 -0
  21. package/lib/always-encrypted/utils.js +2 -6
  22. package/lib/always-encrypted/utils.js.map +1 -0
  23. package/lib/bulk-load-payload.js +7 -15
  24. package/lib/bulk-load-payload.js.map +1 -0
  25. package/lib/bulk-load.js +58 -131
  26. package/lib/bulk-load.js.map +1 -0
  27. package/lib/collation.js +7 -15
  28. package/lib/collation.js.map +1 -0
  29. package/lib/connection.js +307 -534
  30. package/lib/connection.js.map +1 -0
  31. package/lib/connector.js +6 -37
  32. package/lib/connector.js.map +1 -0
  33. package/lib/data-type.js +2 -43
  34. package/lib/data-type.js.map +1 -0
  35. package/lib/data-types/bigint.js +1 -15
  36. package/lib/data-types/bigint.js.map +1 -0
  37. package/lib/data-types/binary.js +1 -12
  38. package/lib/data-types/binary.js.map +1 -0
  39. package/lib/data-types/bit.js +1 -11
  40. package/lib/data-types/bit.js.map +1 -0
  41. package/lib/data-types/bitn.js +1 -7
  42. package/lib/data-types/bitn.js.map +1 -0
  43. package/lib/data-types/char.js +1 -20
  44. package/lib/data-types/char.js.map +1 -0
  45. package/lib/data-types/date.js +1 -15
  46. package/lib/data-types/date.js.map +1 -0
  47. package/lib/data-types/datetime.js +3 -20
  48. package/lib/data-types/datetime.js.map +1 -0
  49. package/lib/data-types/datetime2.js +1 -26
  50. package/lib/data-types/datetime2.js.map +1 -0
  51. package/lib/data-types/datetimen.js +1 -7
  52. package/lib/data-types/datetimen.js.map +1 -0
  53. package/lib/data-types/datetimeoffset.js +1 -23
  54. package/lib/data-types/datetimeoffset.js.map +1 -0
  55. package/lib/data-types/decimal.js +1 -18
  56. package/lib/data-types/decimal.js.map +1 -0
  57. package/lib/data-types/decimaln.js +1 -7
  58. package/lib/data-types/decimaln.js.map +1 -0
  59. package/lib/data-types/float.js +1 -13
  60. package/lib/data-types/float.js.map +1 -0
  61. package/lib/data-types/floatn.js +1 -7
  62. package/lib/data-types/floatn.js.map +1 -0
  63. package/lib/data-types/image.js +1 -10
  64. package/lib/data-types/image.js.map +1 -0
  65. package/lib/data-types/int.js +1 -14
  66. package/lib/data-types/int.js.map +1 -0
  67. package/lib/data-types/intn.js +1 -7
  68. package/lib/data-types/intn.js.map +1 -0
  69. package/lib/data-types/money.js +1 -12
  70. package/lib/data-types/money.js.map +1 -0
  71. package/lib/data-types/moneyn.js +1 -7
  72. package/lib/data-types/moneyn.js.map +1 -0
  73. package/lib/data-types/nchar.js +1 -14
  74. package/lib/data-types/nchar.js.map +1 -0
  75. package/lib/data-types/ntext.js +1 -10
  76. package/lib/data-types/ntext.js.map +1 -0
  77. package/lib/data-types/null.js +1 -7
  78. package/lib/data-types/null.js.map +1 -0
  79. package/lib/data-types/numeric.js +1 -18
  80. package/lib/data-types/numeric.js.map +1 -0
  81. package/lib/data-types/numericn.js +1 -7
  82. package/lib/data-types/numericn.js.map +1 -0
  83. package/lib/data-types/nvarchar.js +1 -22
  84. package/lib/data-types/nvarchar.js.map +1 -0
  85. package/lib/data-types/real.js +1 -13
  86. package/lib/data-types/real.js.map +1 -0
  87. package/lib/data-types/smalldatetime.js +1 -14
  88. package/lib/data-types/smalldatetime.js.map +1 -0
  89. package/lib/data-types/smallint.js +1 -14
  90. package/lib/data-types/smallint.js.map +1 -0
  91. package/lib/data-types/smallmoney.js +1 -13
  92. package/lib/data-types/smallmoney.js.map +1 -0
  93. package/lib/data-types/sql-variant.js +1 -6
  94. package/lib/data-types/sql-variant.js.map +1 -0
  95. package/lib/data-types/text.js +1 -18
  96. package/lib/data-types/text.js.map +1 -0
  97. package/lib/data-types/time.js +1 -22
  98. package/lib/data-types/time.js.map +1 -0
  99. package/lib/data-types/tinyint.js +1 -14
  100. package/lib/data-types/tinyint.js.map +1 -0
  101. package/lib/data-types/tvp.js +11 -27
  102. package/lib/data-types/tvp.js.map +1 -0
  103. package/lib/data-types/udt.js +1 -7
  104. package/lib/data-types/udt.js.map +1 -0
  105. package/lib/data-types/uniqueidentifier.js +1 -11
  106. package/lib/data-types/uniqueidentifier.js.map +1 -0
  107. package/lib/data-types/varbinary.js +1 -22
  108. package/lib/data-types/varbinary.js.map +1 -0
  109. package/lib/data-types/varchar.js +1 -23
  110. package/lib/data-types/varchar.js.map +1 -0
  111. package/lib/data-types/xml.js +1 -7
  112. package/lib/data-types/xml.js.map +1 -0
  113. package/lib/debug.js +4 -16
  114. package/lib/debug.js.map +1 -0
  115. package/lib/errors/abort-error.js +2 -5
  116. package/lib/errors/abort-error.js.map +1 -0
  117. package/lib/errors/timeout-error.js +2 -5
  118. package/lib/errors/timeout-error.js.map +1 -0
  119. package/lib/errors.js +10 -16
  120. package/lib/errors.js.map +1 -0
  121. package/lib/guid-parser.js +1 -7
  122. package/lib/guid-parser.js.map +1 -0
  123. package/lib/incoming-message-stream.js +9 -29
  124. package/lib/incoming-message-stream.js.map +1 -0
  125. package/lib/instance-lookup.js +3 -34
  126. package/lib/instance-lookup.js.map +1 -0
  127. package/lib/library.js +1 -1
  128. package/lib/library.js.map +1 -0
  129. package/lib/login7-payload.js +99 -100
  130. package/lib/login7-payload.js.map +1 -0
  131. package/lib/message-io.js +17 -45
  132. package/lib/message-io.js.map +1 -0
  133. package/lib/message.js +4 -8
  134. package/lib/message.js.map +1 -0
  135. package/lib/metadata-parser.js +1 -22
  136. package/lib/metadata-parser.js.map +1 -0
  137. package/lib/ntlm-payload.js +2 -22
  138. package/lib/ntlm-payload.js.map +1 -0
  139. package/lib/ntlm.js +1 -4
  140. package/lib/ntlm.js.map +1 -0
  141. package/lib/outgoing-message-stream.js +12 -21
  142. package/lib/outgoing-message-stream.js.map +1 -0
  143. package/lib/packet.js +2 -47
  144. package/lib/packet.js.map +1 -0
  145. package/lib/prelogin-payload.js +11 -54
  146. package/lib/prelogin-payload.js.map +1 -0
  147. package/lib/request.js +88 -66
  148. package/lib/request.js.map +1 -0
  149. package/lib/rpcrequest-payload.js +8 -35
  150. package/lib/rpcrequest-payload.js.map +1 -0
  151. package/lib/sender.js +1 -24
  152. package/lib/sender.js.map +1 -0
  153. package/lib/special-stored-procedure.js +1 -1
  154. package/lib/special-stored-procedure.js.map +1 -0
  155. package/lib/sqlbatch-payload.js +5 -18
  156. package/lib/sqlbatch-payload.js.map +1 -0
  157. package/lib/tds-versions.js +3 -3
  158. package/lib/tds-versions.js.map +1 -0
  159. package/lib/tedious.js +1 -12
  160. package/lib/tedious.js.map +1 -0
  161. package/lib/token/colmetadata-token-parser.js +1 -17
  162. package/lib/token/colmetadata-token-parser.js.map +1 -0
  163. package/lib/token/done-token-parser.js +2 -8
  164. package/lib/token/done-token-parser.js.map +1 -0
  165. package/lib/token/env-change-token-parser.js +7 -28
  166. package/lib/token/env-change-token-parser.js.map +1 -0
  167. package/lib/token/feature-ext-ack-parser.js +1 -10
  168. package/lib/token/feature-ext-ack-parser.js.map +1 -0
  169. package/lib/token/fedauth-info-parser.js +2 -10
  170. package/lib/token/fedauth-info-parser.js.map +1 -0
  171. package/lib/token/handler.js +39 -149
  172. package/lib/token/handler.js.map +1 -0
  173. package/lib/token/infoerror-token-parser.js +1 -5
  174. package/lib/token/infoerror-token-parser.js.map +1 -0
  175. package/lib/token/loginack-token-parser.js +1 -6
  176. package/lib/token/loginack-token-parser.js.map +1 -0
  177. package/lib/token/nbcrow-token-parser.js +2 -15
  178. package/lib/token/nbcrow-token-parser.js.map +1 -0
  179. package/lib/token/order-token-parser.js +2 -7
  180. package/lib/token/order-token-parser.js.map +1 -0
  181. package/lib/token/returnstatus-token-parser.js +2 -4
  182. package/lib/token/returnstatus-token-parser.js.map +1 -0
  183. package/lib/token/returnvalue-token-parser.js +4 -9
  184. package/lib/token/returnvalue-token-parser.js.map +1 -0
  185. package/lib/token/row-token-parser.js +2 -11
  186. package/lib/token/row-token-parser.js.map +1 -0
  187. package/lib/token/sspi-token-parser.js +1 -5
  188. package/lib/token/sspi-token-parser.js.map +1 -0
  189. package/lib/token/stream-parser.js +24 -86
  190. package/lib/token/stream-parser.js.map +1 -0
  191. package/lib/token/token-stream-parser.js +4 -13
  192. package/lib/token/token-stream-parser.js.map +1 -0
  193. package/lib/token/token.js +88 -168
  194. package/lib/token/token.js.map +1 -0
  195. package/lib/tracking-buffer/writable-tracking-buffer.js +20 -60
  196. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
  197. package/lib/transaction.js +9 -33
  198. package/lib/transaction.js.map +1 -0
  199. package/lib/transient-error-lookup.js +1 -4
  200. package/lib/transient-error-lookup.js.map +1 -0
  201. package/lib/utils/with-timeout.js +1 -9
  202. package/lib/utils/with-timeout.js.map +1 -0
  203. package/lib/value-parser.js +1 -143
  204. package/lib/value-parser.js.map +1 -0
  205. package/package.json +27 -71
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","names":["TYPE","ALTMETADATA","ALTROW","COLMETADATA","COLINFO","DONE","DONEPROC","DONEINPROC","ENVCHANGE","ERROR","FEATUREEXTACK","FEDAUTHINFO","INFO","LOGINACK","NBCROW","OFFSET","ORDER","RETURNSTATUS","RETURNVALUE","ROW","SSPI","TABNAME","exports","Token","name","handlerName","constructor","ColMetadataToken","columns","DoneToken","more","sqlError","attention","serverError","rowCount","curCmd","DoneInProcToken","DoneProcToken","DatabaseEnvChangeToken","type","newValue","oldValue","LanguageEnvChangeToken","CharsetEnvChangeToken","PacketSizeEnvChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","ResetConnectionEnvChangeToken","CollationChangeToken","RoutingEnvChangeToken","FeatureExtAckToken","fedAuth","utf8Support","FedAuthInfoToken","spn","stsurl","InfoMessageToken","number","state","class","message","serverName","procName","lineNumber","clazz","ErrorMessageToken","LoginAckToken","interface","tdsVersion","progName","progVersion","interfaze","NBCRowToken","OrderToken","orderColumns","ReturnStatusToken","value","ReturnValueToken","paramOrdinal","paramName","metadata","RowToken","SSPIToken","ntlmpacket","ntlmpacketBuffer"],"sources":["../../src/token/token.ts"],"sourcesContent":["import { Collation } from '../collation';\nimport { Metadata } from '../metadata-parser';\nimport { ColumnMetadata } from './colmetadata-token-parser';\nimport { TokenHandler } from './handler';\n\nexport const TYPE = {\n ALTMETADATA: 0x88,\n ALTROW: 0xD3,\n COLMETADATA: 0x81,\n COLINFO: 0xA5,\n DONE: 0xFD,\n DONEPROC: 0xFE,\n DONEINPROC: 0xFF,\n ENVCHANGE: 0xE3,\n ERROR: 0xAA,\n FEATUREEXTACK: 0xAE,\n FEDAUTHINFO: 0xEE,\n INFO: 0xAB,\n LOGINACK: 0xAD,\n NBCROW: 0xD2,\n OFFSET: 0x78,\n ORDER: 0xA9,\n RETURNSTATUS: 0x79,\n RETURNVALUE: 0xAC,\n ROW: 0xD1,\n SSPI: 0xED,\n TABNAME: 0xA4\n};\n\ntype HandlerName = keyof TokenHandler;\n\nexport abstract class Token {\n name: string;\n handlerName: keyof TokenHandler;\n\n constructor(name: string, handlerName: HandlerName) {\n this.name = name;\n this.handlerName = handlerName;\n }\n}\n\nexport class ColMetadataToken extends Token {\n declare name: 'COLMETADATA';\n declare handlerName: 'onColMetadata';\n\n columns: ColumnMetadata[];\n\n constructor(columns: ColumnMetadata[]) {\n super('COLMETADATA', 'onColMetadata');\n\n this.columns = columns;\n }\n}\n\nexport class DoneToken extends Token {\n declare name: 'DONE';\n declare handlerName: 'onDone';\n\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n\n constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { more: boolean, sqlError: boolean, attention: boolean, serverError: boolean, rowCount: number | undefined, curCmd: number }) {\n super('DONE', 'onDone');\n\n this.more = more;\n this.sqlError = sqlError;\n this.attention = attention;\n this.serverError = serverError;\n this.rowCount = rowCount;\n this.curCmd = curCmd;\n }\n}\n\nexport class DoneInProcToken extends Token {\n declare name: 'DONEINPROC';\n declare handlerName: 'onDoneInProc';\n\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n\n constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { more: boolean, sqlError: boolean, attention: boolean, serverError: boolean, rowCount: number | undefined, curCmd: number }) {\n super('DONEINPROC', 'onDoneInProc');\n\n this.more = more;\n this.sqlError = sqlError;\n this.attention = attention;\n this.serverError = serverError;\n this.rowCount = rowCount;\n this.curCmd = curCmd;\n }\n}\n\nexport class DoneProcToken extends Token {\n declare name: 'DONEPROC';\n declare handlerName: 'onDoneProc';\n\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n\n constructor({ more, sqlError, attention, serverError, rowCount, curCmd }: { more: boolean, sqlError: boolean, attention: boolean, serverError: boolean, rowCount: number | undefined, curCmd: number }) {\n super('DONEPROC', 'onDoneProc');\n\n this.more = more;\n this.sqlError = sqlError;\n this.attention = attention;\n this.serverError = serverError;\n this.rowCount = rowCount;\n this.curCmd = curCmd;\n }\n}\n\nexport class DatabaseEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onDatabaseChange';\n\n type: 'DATABASE';\n newValue: string;\n oldValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onDatabaseChange');\n\n this.type = 'DATABASE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class LanguageEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onLanguageChange';\n\n type: 'LANGUAGE';\n newValue: string;\n oldValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onLanguageChange');\n\n this.type = 'LANGUAGE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class CharsetEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onCharsetChange';\n\n type: 'CHARSET';\n newValue: string;\n oldValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onCharsetChange');\n\n this.type = 'CHARSET';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class PacketSizeEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onPacketSizeChange';\n\n type: 'PACKET_SIZE';\n newValue: number;\n oldValue: number;\n\n constructor(newValue: number, oldValue: number) {\n super('ENVCHANGE', 'onPacketSizeChange');\n\n this.type = 'PACKET_SIZE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class BeginTransactionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onBeginTransaction';\n\n type: 'BEGIN_TXN';\n newValue: Buffer;\n oldValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onBeginTransaction');\n\n this.type = 'BEGIN_TXN';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class CommitTransactionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onCommitTransaction';\n\n type: 'COMMIT_TXN';\n newValue: Buffer;\n oldValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onCommitTransaction');\n\n this.type = 'COMMIT_TXN';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class RollbackTransactionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onRollbackTransaction';\n\n type: 'ROLLBACK_TXN';\n oldValue: Buffer;\n newValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onRollbackTransaction');\n\n this.type = 'ROLLBACK_TXN';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class DatabaseMirroringPartnerEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onDatabaseMirroringPartner';\n\n type: 'DATABASE_MIRRORING_PARTNER';\n oldValue: string;\n newValue: string;\n\n constructor(newValue: string, oldValue: string) {\n super('ENVCHANGE', 'onDatabaseMirroringPartner');\n\n this.type = 'DATABASE_MIRRORING_PARTNER';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class ResetConnectionEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onResetConnection';\n\n type: 'RESET_CONNECTION';\n oldValue: Buffer;\n newValue: Buffer;\n\n constructor(newValue: Buffer, oldValue: Buffer) {\n super('ENVCHANGE', 'onResetConnection');\n\n this.type = 'RESET_CONNECTION';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class CollationChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onSqlCollationChange';\n\n type: 'SQL_COLLATION';\n oldValue: Collation | undefined;\n newValue: Collation | undefined;\n\n constructor(newValue: Collation | undefined, oldValue: Collation | undefined) {\n super('ENVCHANGE', 'onSqlCollationChange');\n\n this.type = 'SQL_COLLATION';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class RoutingEnvChangeToken extends Token {\n declare name: 'ENVCHANGE';\n declare handlerName: 'onRoutingChange';\n\n type: 'ROUTING_CHANGE';\n newValue: { protocol: number, port: number, server: string };\n oldValue: Buffer;\n\n constructor(newValue: { protocol: number, port: number, server: string }, oldValue: Buffer) {\n super('ENVCHANGE', 'onRoutingChange');\n\n this.type = 'ROUTING_CHANGE';\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n}\n\nexport class FeatureExtAckToken extends Token {\n declare name: 'FEATUREEXTACK';\n declare handlerName: 'onFeatureExtAck';\n\n fedAuth: Buffer | undefined;\n\n /** Value of UTF8_SUPPORT acknowledgement.\n *\n * undefined when UTF8_SUPPORT not included in token. */\n utf8Support: boolean | undefined;\n\n constructor(fedAuth: Buffer | undefined, utf8Support: boolean | undefined) {\n super('FEATUREEXTACK', 'onFeatureExtAck');\n\n this.fedAuth = fedAuth;\n this.utf8Support = utf8Support;\n }\n}\n\nexport class FedAuthInfoToken extends Token {\n declare name: 'FEDAUTHINFO';\n declare handlerName: 'onFedAuthInfo';\n\n spn: string | undefined;\n stsurl: string | undefined;\n\n constructor(spn: string | undefined, stsurl: string | undefined) {\n super('FEDAUTHINFO', 'onFedAuthInfo');\n\n this.spn = spn;\n this.stsurl = stsurl;\n }\n}\n\nexport class InfoMessageToken extends Token {\n declare name: 'INFO';\n declare handlerName: 'onInfoMessage';\n\n number: number;\n state: number;\n class: number;\n message: string;\n serverName: string;\n procName: string;\n lineNumber: number;\n\n constructor({ number, state, class: clazz, message, serverName, procName, lineNumber }: { number: number, state: number, class: number, message: string, serverName: string, procName: string, lineNumber: number }) {\n super('INFO', 'onInfoMessage');\n\n this.number = number;\n this.state = state;\n this.class = clazz;\n this.message = message;\n this.serverName = serverName;\n this.procName = procName;\n this.lineNumber = lineNumber;\n }\n}\n\nexport class ErrorMessageToken extends Token {\n declare name: 'ERROR';\n declare handlerName: 'onErrorMessage';\n\n number: number;\n state: number;\n class: number;\n message: string;\n serverName: string;\n procName: string;\n lineNumber: number;\n\n constructor({ number, state, class: clazz, message, serverName, procName, lineNumber }: { number: number, state: number, class: number, message: string, serverName: string, procName: string, lineNumber: number }) {\n super('ERROR', 'onErrorMessage');\n\n this.number = number;\n this.state = state;\n this.class = clazz;\n this.message = message;\n this.serverName = serverName;\n this.procName = procName;\n this.lineNumber = lineNumber;\n }\n}\n\nexport class LoginAckToken extends Token {\n declare name: 'LOGINACK';\n declare handlerName: 'onLoginAck';\n\n interface: string;\n tdsVersion: string;\n progName: string;\n progVersion: { major: number, minor: number, buildNumHi: number, buildNumLow: number };\n\n constructor({ interface: interfaze, tdsVersion, progName, progVersion }: { interface: LoginAckToken['interface'], tdsVersion: LoginAckToken['tdsVersion'], progName: LoginAckToken['progName'], progVersion: LoginAckToken['progVersion'] }) {\n super('LOGINACK', 'onLoginAck');\n\n this.interface = interfaze;\n this.tdsVersion = tdsVersion;\n this.progName = progName;\n this.progVersion = progVersion;\n }\n}\n\nexport class NBCRowToken extends Token {\n declare name: 'NBCROW';\n declare handlerName: 'onRow';\n\n columns: any;\n\n constructor(columns: any) {\n super('NBCROW', 'onRow');\n\n this.columns = columns;\n }\n}\n\nexport class OrderToken extends Token {\n declare name: 'ORDER';\n declare handlerName: 'onOrder';\n\n orderColumns: number[];\n\n constructor(orderColumns: number[]) {\n super('ORDER', 'onOrder');\n\n this.orderColumns = orderColumns;\n }\n}\n\nexport class ReturnStatusToken extends Token {\n declare name: 'RETURNSTATUS';\n declare handlerName: 'onReturnStatus';\n\n value: number;\n\n constructor(value: number) {\n super('RETURNSTATUS', 'onReturnStatus');\n\n this.value = value;\n }\n}\n\nexport class ReturnValueToken extends Token {\n declare name: 'RETURNVALUE';\n declare handlerName: 'onReturnValue';\n\n paramOrdinal: number;\n paramName: string;\n metadata: Metadata;\n value: unknown;\n\n constructor({ paramOrdinal, paramName, metadata, value }: { paramOrdinal: number, paramName: string, metadata: Metadata, value: unknown }) {\n super('RETURNVALUE', 'onReturnValue');\n\n this.paramOrdinal = paramOrdinal;\n this.paramName = paramName;\n this.metadata = metadata;\n this.value = value;\n }\n}\n\nexport class RowToken extends Token {\n declare name: 'ROW';\n declare handlerName: 'onRow';\n\n columns: any;\n\n constructor(columns: any) {\n super('ROW', 'onRow');\n\n this.columns = columns;\n }\n}\n\nexport class SSPIToken extends Token {\n declare name: 'SSPICHALLENGE';\n declare handlerName: 'onSSPI';\n\n ntlmpacket: any;\n ntlmpacketBuffer: Buffer;\n\n constructor(ntlmpacket: any, ntlmpacketBuffer: Buffer) {\n super('SSPICHALLENGE', 'onSSPI');\n\n this.ntlmpacket = ntlmpacket;\n this.ntlmpacketBuffer = ntlmpacketBuffer;\n }\n}\n"],"mappings":"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"}
@@ -8,7 +8,6 @@ const SHIFT_LEFT_32 = (1 << 16) * (1 << 16);
8
8
  const SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;
9
9
  const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
10
10
  const ZERO_LENGTH_BUFFER = Buffer.alloc(0);
11
-
12
11
  /**
13
12
  A Buffer-like class that tracks position.
14
13
 
@@ -16,13 +15,13 @@ const ZERO_LENGTH_BUFFER = Buffer.alloc(0);
16
15
  When writing, automatically allocates new buffers if there's not enough space.
17
16
  */
18
17
  class WritableTrackingBuffer {
18
+ initialSize;
19
+ encoding;
20
+ doubleSizeGrowth;
21
+ buffer;
22
+ compositeBuffer;
23
+ position;
19
24
  constructor(initialSize, encoding, doubleSizeGrowth) {
20
- this.initialSize = void 0;
21
- this.encoding = void 0;
22
- this.doubleSizeGrowth = void 0;
23
- this.buffer = void 0;
24
- this.compositeBuffer = void 0;
25
- this.position = void 0;
26
25
  this.initialSize = initialSize;
27
26
  this.encoding = encoding || 'ucs2';
28
27
  this.doubleSizeGrowth = doubleSizeGrowth || false;
@@ -30,67 +29,56 @@ class WritableTrackingBuffer {
30
29
  this.compositeBuffer = ZERO_LENGTH_BUFFER;
31
30
  this.position = 0;
32
31
  }
33
-
34
32
  get data() {
35
33
  this.newBuffer(0);
36
34
  return this.compositeBuffer;
37
35
  }
38
-
39
36
  copyFrom(buffer) {
40
37
  const length = buffer.length;
41
38
  this.makeRoomFor(length);
42
39
  buffer.copy(this.buffer, this.position);
43
40
  this.position += length;
44
41
  }
45
-
46
42
  makeRoomFor(requiredLength) {
47
43
  if (this.buffer.length - this.position < requiredLength) {
48
44
  if (this.doubleSizeGrowth) {
49
45
  let size = Math.max(128, this.buffer.length * 2);
50
-
51
46
  while (size < requiredLength) {
52
47
  size *= 2;
53
48
  }
54
-
55
49
  this.newBuffer(size);
56
50
  } else {
57
51
  this.newBuffer(requiredLength);
58
52
  }
59
53
  }
60
54
  }
61
-
62
55
  newBuffer(size) {
63
56
  const buffer = this.buffer.slice(0, this.position);
64
57
  this.compositeBuffer = Buffer.concat([this.compositeBuffer, buffer]);
65
58
  this.buffer = size === 0 ? ZERO_LENGTH_BUFFER : Buffer.alloc(size, 0);
66
59
  this.position = 0;
67
60
  }
68
-
69
61
  writeUInt8(value) {
70
62
  const length = 1;
71
63
  this.makeRoomFor(length);
72
64
  this.buffer.writeUInt8(value, this.position);
73
65
  this.position += length;
74
66
  }
75
-
76
67
  writeUInt16LE(value) {
77
68
  const length = 2;
78
69
  this.makeRoomFor(length);
79
70
  this.buffer.writeUInt16LE(value, this.position);
80
71
  this.position += length;
81
72
  }
82
-
83
73
  writeUShort(value) {
84
74
  this.writeUInt16LE(value);
85
75
  }
86
-
87
76
  writeUInt16BE(value) {
88
77
  const length = 2;
89
78
  this.makeRoomFor(length);
90
79
  this.buffer.writeUInt16BE(value, this.position);
91
80
  this.position += length;
92
81
  }
93
-
94
82
  writeUInt24LE(value) {
95
83
  const length = 3;
96
84
  this.makeRoomFor(length);
@@ -99,170 +87,146 @@ class WritableTrackingBuffer {
99
87
  this.buffer[this.position] = value & 0xff;
100
88
  this.position += length;
101
89
  }
102
-
103
90
  writeUInt32LE(value) {
104
91
  const length = 4;
105
92
  this.makeRoomFor(length);
106
93
  this.buffer.writeUInt32LE(value, this.position);
107
94
  this.position += length;
108
95
  }
109
-
110
96
  writeBigInt64LE(value) {
111
97
  const length = 8;
112
98
  this.makeRoomFor(length);
113
99
  this.buffer.writeBigInt64LE(value, this.position);
114
100
  this.position += length;
115
101
  }
116
-
117
102
  writeInt64LE(value) {
118
103
  this.writeBigInt64LE(BigInt(value));
119
104
  }
120
-
121
105
  writeUInt64LE(value) {
122
106
  this.writeBigUInt64LE(BigInt(value));
123
107
  }
124
-
125
108
  writeBigUInt64LE(value) {
126
109
  const length = 8;
127
110
  this.makeRoomFor(length);
128
111
  this.buffer.writeBigUInt64LE(value, this.position);
129
112
  this.position += length;
130
113
  }
131
-
132
114
  writeUInt32BE(value) {
133
115
  const length = 4;
134
116
  this.makeRoomFor(length);
135
117
  this.buffer.writeUInt32BE(value, this.position);
136
118
  this.position += length;
137
119
  }
138
-
139
120
  writeUInt40LE(value) {
140
121
  // inspired by https://github.com/dpw/node-buffer-more-ints
141
122
  this.writeInt32LE(value & -1);
142
123
  this.writeUInt8(Math.floor(value * SHIFT_RIGHT_32));
143
124
  }
144
-
145
125
  writeInt8(value) {
146
126
  const length = 1;
147
127
  this.makeRoomFor(length);
148
128
  this.buffer.writeInt8(value, this.position);
149
129
  this.position += length;
150
130
  }
151
-
152
131
  writeInt16LE(value) {
153
132
  const length = 2;
154
133
  this.makeRoomFor(length);
155
134
  this.buffer.writeInt16LE(value, this.position);
156
135
  this.position += length;
157
136
  }
158
-
159
137
  writeInt16BE(value) {
160
138
  const length = 2;
161
139
  this.makeRoomFor(length);
162
140
  this.buffer.writeInt16BE(value, this.position);
163
141
  this.position += length;
164
142
  }
165
-
166
143
  writeInt32LE(value) {
167
144
  const length = 4;
168
145
  this.makeRoomFor(length);
169
146
  this.buffer.writeInt32LE(value, this.position);
170
147
  this.position += length;
171
148
  }
172
-
173
149
  writeInt32BE(value) {
174
150
  const length = 4;
175
151
  this.makeRoomFor(length);
176
152
  this.buffer.writeInt32BE(value, this.position);
177
153
  this.position += length;
178
154
  }
179
-
180
155
  writeFloatLE(value) {
181
156
  const length = 4;
182
157
  this.makeRoomFor(length);
183
158
  this.buffer.writeFloatLE(value, this.position);
184
159
  this.position += length;
185
160
  }
186
-
187
161
  writeDoubleLE(value) {
188
162
  const length = 8;
189
163
  this.makeRoomFor(length);
190
164
  this.buffer.writeDoubleLE(value, this.position);
191
165
  this.position += length;
192
166
  }
193
-
194
167
  writeString(value, encoding) {
195
168
  if (encoding == null) {
196
169
  encoding = this.encoding;
197
170
  }
198
-
199
171
  const length = Buffer.byteLength(value, encoding);
200
- this.makeRoomFor(length); // $FlowFixMe https://github.com/facebook/flow/pull/5398
172
+ this.makeRoomFor(length);
201
173
 
174
+ // $FlowFixMe https://github.com/facebook/flow/pull/5398
202
175
  this.buffer.write(value, this.position, encoding);
203
176
  this.position += length;
204
177
  }
205
-
206
178
  writeBVarchar(value, encoding) {
207
179
  this.writeUInt8(value.length);
208
180
  this.writeString(value, encoding);
209
181
  }
210
-
211
182
  writeUsVarchar(value, encoding) {
212
183
  this.writeUInt16LE(value.length);
213
184
  this.writeString(value, encoding);
214
- } // TODO: Figure out what types are passed in other than `Buffer`
215
-
185
+ }
216
186
 
187
+ // TODO: Figure out what types are passed in other than `Buffer`
217
188
  writeUsVarbyte(value, encoding) {
218
189
  if (encoding == null) {
219
190
  encoding = this.encoding;
220
191
  }
221
-
222
192
  let length;
223
-
224
193
  if (value instanceof Buffer) {
225
194
  length = value.length;
226
195
  } else {
227
196
  value = value.toString();
228
197
  length = Buffer.byteLength(value, encoding);
229
198
  }
230
-
231
199
  this.writeUInt16LE(length);
232
-
233
200
  if (value instanceof Buffer) {
234
201
  this.writeBuffer(value);
235
202
  } else {
236
- this.makeRoomFor(length); // $FlowFixMe https://github.com/facebook/flow/pull/5398
237
-
203
+ this.makeRoomFor(length);
204
+ // $FlowFixMe https://github.com/facebook/flow/pull/5398
238
205
  this.buffer.write(value, this.position, encoding);
239
206
  this.position += length;
240
207
  }
241
208
  }
242
-
243
209
  writePLPBody(value, encoding) {
244
210
  if (encoding == null) {
245
211
  encoding = this.encoding;
246
212
  }
247
-
248
213
  let length;
249
-
250
214
  if (value instanceof Buffer) {
251
215
  length = value.length;
252
216
  } else {
253
217
  value = value.toString();
254
218
  length = Buffer.byteLength(value, encoding);
255
- } // Length of all chunks.
219
+ }
220
+
221
+ // Length of all chunks.
256
222
  // this.writeUInt64LE(length);
257
223
  // unknown seems to work better here - might revisit later.
224
+ this.writeBuffer(UNKNOWN_PLP_LEN);
258
225
 
259
-
260
- this.writeBuffer(UNKNOWN_PLP_LEN); // In the UNKNOWN_PLP_LEN case, the data is represented as a series of zero or more chunks.
261
-
226
+ // In the UNKNOWN_PLP_LEN case, the data is represented as a series of zero or more chunks.
262
227
  if (length > 0) {
263
228
  // One chunk.
264
229
  this.writeUInt32LE(length);
265
-
266
230
  if (value instanceof Buffer) {
267
231
  this.writeBuffer(value);
268
232
  } else {
@@ -270,27 +234,23 @@ class WritableTrackingBuffer {
270
234
  this.buffer.write(value, this.position, encoding);
271
235
  this.position += length;
272
236
  }
273
- } // PLP_TERMINATOR (no more chunks).
274
-
237
+ }
275
238
 
239
+ // PLP_TERMINATOR (no more chunks).
276
240
  this.writeUInt32LE(0);
277
241
  }
278
-
279
242
  writeBuffer(value) {
280
243
  const length = value.length;
281
244
  this.makeRoomFor(length);
282
245
  value.copy(this.buffer, this.position);
283
246
  this.position += length;
284
247
  }
285
-
286
248
  writeMoney(value) {
287
249
  this.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32));
288
250
  this.writeInt32LE(value & -1);
289
251
  }
290
-
291
252
  }
292
-
293
253
  var _default = WritableTrackingBuffer;
294
254
  exports.default = _default;
295
255
  module.exports = WritableTrackingBuffer;
296
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTSElGVF9MRUZUXzMyIiwiU0hJRlRfUklHSFRfMzIiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiWkVST19MRU5HVEhfQlVGRkVSIiwiYWxsb2MiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpbml0aWFsU2l6ZSIsImVuY29kaW5nIiwiZG91YmxlU2l6ZUdyb3d0aCIsImJ1ZmZlciIsImNvbXBvc2l0ZUJ1ZmZlciIsInBvc2l0aW9uIiwiZGF0YSIsIm5ld0J1ZmZlciIsImNvcHlGcm9tIiwibGVuZ3RoIiwibWFrZVJvb21Gb3IiLCJjb3B5IiwicmVxdWlyZWRMZW5ndGgiLCJzaXplIiwiTWF0aCIsIm1heCIsInNsaWNlIiwiY29uY2F0Iiwid3JpdGVVSW50OCIsInZhbHVlIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVVNob3J0Iiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDI0TEUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVCaWdJbnQ2NExFIiwid3JpdGVJbnQ2NExFIiwiQmlnSW50Iiwid3JpdGVVSW50NjRMRSIsIndyaXRlQmlnVUludDY0TEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVVSW50NDBMRSIsIndyaXRlSW50MzJMRSIsImZsb29yIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlU3RyaW5nIiwiYnl0ZUxlbmd0aCIsIndyaXRlIiwid3JpdGVCVmFyY2hhciIsIndyaXRlVXNWYXJjaGFyIiwid3JpdGVVc1ZhcmJ5dGUiLCJ0b1N0cmluZyIsIndyaXRlQnVmZmVyIiwid3JpdGVQTFBCb2R5Iiwid3JpdGVNb25leSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTSElGVF9MRUZUXzMyID0gKDEgPDwgMTYpICogKDEgPDwgMTYpO1xuY29uc3QgU0hJRlRfUklHSFRfMzIgPSAxIC8gU0hJRlRfTEVGVF8zMjtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBaRVJPX0xFTkdUSF9CVUZGRVIgPSBCdWZmZXIuYWxsb2MoMCk7XG5cbmV4cG9ydCB0eXBlIEVuY29kaW5nID0gJ3V0ZjgnIHwgJ3VjczInIHwgJ2FzY2lpJztcblxuLyoqXG4gIEEgQnVmZmVyLWxpa2UgY2xhc3MgdGhhdCB0cmFja3MgcG9zaXRpb24uXG5cbiAgQXMgdmFsdWVzIGFyZSB3cml0dGVuLCB0aGUgcG9zaXRpb24gYWR2YW5jZXMgYnkgdGhlIHNpemUgb2YgdGhlIHdyaXR0ZW4gZGF0YS5cbiAgV2hlbiB3cml0aW5nLCBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlcyBuZXcgYnVmZmVycyBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UuXG4gKi9cbmNsYXNzIFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIge1xuICBpbml0aWFsU2l6ZTogbnVtYmVyO1xuICBlbmNvZGluZzogRW5jb2Rpbmc7XG4gIGRvdWJsZVNpemVHcm93dGg6IGJvb2xlYW47XG5cbiAgYnVmZmVyOiBCdWZmZXI7XG4gIGNvbXBvc2l0ZUJ1ZmZlcjogQnVmZmVyO1xuXG4gIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbFNpemU6IG51bWJlciwgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwsIGRvdWJsZVNpemVHcm93dGg/OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbml0aWFsU2l6ZSA9IGluaXRpYWxTaXplO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyB8fCAndWNzMic7XG4gICAgdGhpcy5kb3VibGVTaXplR3Jvd3RoID0gZG91YmxlU2l6ZUdyb3d0aCB8fCBmYWxzZTtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyh0aGlzLmluaXRpYWxTaXplLCAwKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IFpFUk9fTEVOR1RIX0JVRkZFUjtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHRoaXMubmV3QnVmZmVyKDApO1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0ZUJ1ZmZlcjtcbiAgfVxuXG4gIGNvcHlGcm9tKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgbWFrZVJvb21Gb3IocmVxdWlyZWRMZW5ndGg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLnBvc2l0aW9uIDwgcmVxdWlyZWRMZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmRvdWJsZVNpemVHcm93dGgpIHtcbiAgICAgICAgbGV0IHNpemUgPSBNYXRoLm1heCgxMjgsIHRoaXMuYnVmZmVyLmxlbmd0aCAqIDIpO1xuICAgICAgICB3aGlsZSAoc2l6ZSA8IHJlcXVpcmVkTGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSAqPSAyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmV3QnVmZmVyKHNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXdCdWZmZXIocmVxdWlyZWRMZW5ndGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5ld0J1ZmZlcihzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlci5zbGljZSgwLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY29tcG9zaXRlQnVmZmVyLCBidWZmZXJdKTtcbiAgICB0aGlzLmJ1ZmZlciA9IChzaXplID09PSAwKSA/IFpFUk9fTEVOR1RIX0JVRkZFUiA6IEJ1ZmZlci5hbGxvYyhzaXplLCAwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIHdyaXRlVUludDgodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDE7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MTZMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMjtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVTaG9ydCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZVVJbnQxNkxFKHZhbHVlKTtcbiAgfVxuXG4gIHdyaXRlVUludDE2QkUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDI7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMztcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbiArIDJdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyAxXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dID0gdmFsdWUgJiAweGZmO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MzJMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gNDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MzJMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJpZ0ludDY0TEUodmFsdWU6IGJpZ2ludCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IDg7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlQmlnSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUludDY0TEUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVCaWdJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVVSW50NjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZUJpZ1VJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVCaWdVSW50NjRMRSh2YWx1ZTogYmlnaW50KSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVCaWdVSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQzMkJFKHZhbHVlLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlVUludDQwTEUodmFsdWU6IG51bWJlcikge1xuICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kcHcvbm9kZS1idWZmZXItbW9yZS1pbnRzXG4gICAgdGhpcy53cml0ZUludDMyTEUodmFsdWUgJiAtMSk7XG4gICAgdGhpcy53cml0ZVVJbnQ4KE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICB9XG5cbiAgd3JpdGVJbnQ4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAxO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyQkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVGbG9hdExFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUZsb2F0TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVEb3VibGVMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVEb3VibGVMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nLCBlbmNvZGluZz86IEVuY29kaW5nIHwgbnVsbCkge1xuICAgIGlmIChlbmNvZGluZyA9PSBudWxsKSB7XG4gICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsIGVuY29kaW5nKTtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG5cbiAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L3B1bGwvNTM5OFxuICAgIHRoaXMuYnVmZmVyLndyaXRlKHZhbHVlLCB0aGlzLnBvc2l0aW9uLCBlbmNvZGluZyk7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJWYXJjaGFyKHZhbHVlOiBzdHJpbmcsIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgdGhpcy53cml0ZVVJbnQ4KHZhbHVlLmxlbmd0aCk7XG4gICAgdGhpcy53cml0ZVN0cmluZyh2YWx1ZSwgZW5jb2RpbmcpO1xuICB9XG5cbiAgd3JpdGVVc1ZhcmNoYXIodmFsdWU6IHN0cmluZywgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoKTtcbiAgICB0aGlzLndyaXRlU3RyaW5nKHZhbHVlLCBlbmNvZGluZyk7XG4gIH1cblxuICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoYXQgdHlwZXMgYXJlIHBhc3NlZCBpbiBvdGhlciB0aGFuIGBCdWZmZXJgXG4gIHdyaXRlVXNWYXJieXRlKHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cbiAgICB0aGlzLndyaXRlVUludDE2TEUobGVuZ3RoKTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgdGhpcy53cml0ZUJ1ZmZlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgIC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC81Mzk4XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZSh2YWx1ZSwgdGhpcy5wb3NpdGlvbiwgZW5jb2RpbmcpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVQTFBCb2R5KHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cblxuICAgIC8vIExlbmd0aCBvZiBhbGwgY2h1bmtzLlxuICAgIC8vIHRoaXMud3JpdGVVSW50NjRMRShsZW5ndGgpO1xuICAgIC8vIHVua25vd24gc2VlbXMgdG8gd29yayBiZXR0ZXIgaGVyZSAtIG1pZ2h0IHJldmlzaXQgbGF0ZXIuXG4gICAgdGhpcy53cml0ZUJ1ZmZlcihVTktOT1dOX1BMUF9MRU4pO1xuXG4gICAgLy8gSW4gdGhlIFVOS05PV05fUExQX0xFTiBjYXNlLCB0aGUgZGF0YSBpcyByZXByZXNlbnRlZCBhcyBhIHNlcmllcyBvZiB6ZXJvIG9yIG1vcmUgY2h1bmtzLlxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAvLyBPbmUgY2h1bmsuXG4gICAgICB0aGlzLndyaXRlVUludDMyTEUobGVuZ3RoKTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICB0aGlzLndyaXRlQnVmZmVyKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgICAgdGhpcy5idWZmZXIud3JpdGUodmFsdWUsIHRoaXMucG9zaXRpb24sIGVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUExQX1RFUk1JTkFUT1IgKG5vIG1vcmUgY2h1bmtzKS5cbiAgICB0aGlzLndyaXRlVUludDMyTEUoMCk7XG4gIH1cblxuICB3cml0ZUJ1ZmZlcih2YWx1ZTogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB2YWx1ZS5jb3B5KHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlTW9uZXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKHZhbHVlICYgLTEpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBTixLQUFhLEtBQUssRUFBbEIsQ0FBdEI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsSUFBSUQsYUFBM0I7QUFDQSxNQUFNRSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxD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
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTSElGVF9MRUZUXzMyIiwiU0hJRlRfUklHSFRfMzIiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiWkVST19MRU5HVEhfQlVGRkVSIiwiYWxsb2MiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwiaW5pdGlhbFNpemUiLCJlbmNvZGluZyIsImRvdWJsZVNpemVHcm93dGgiLCJidWZmZXIiLCJjb21wb3NpdGVCdWZmZXIiLCJwb3NpdGlvbiIsImNvbnN0cnVjdG9yIiwiZGF0YSIsIm5ld0J1ZmZlciIsImNvcHlGcm9tIiwibGVuZ3RoIiwibWFrZVJvb21Gb3IiLCJjb3B5IiwicmVxdWlyZWRMZW5ndGgiLCJzaXplIiwiTWF0aCIsIm1heCIsInNsaWNlIiwiY29uY2F0Iiwid3JpdGVVSW50OCIsInZhbHVlIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVVNob3J0Iiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDI0TEUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVCaWdJbnQ2NExFIiwid3JpdGVJbnQ2NExFIiwiQmlnSW50Iiwid3JpdGVVSW50NjRMRSIsIndyaXRlQmlnVUludDY0TEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVVSW50NDBMRSIsIndyaXRlSW50MzJMRSIsImZsb29yIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlU3RyaW5nIiwiYnl0ZUxlbmd0aCIsIndyaXRlIiwid3JpdGVCVmFyY2hhciIsIndyaXRlVXNWYXJjaGFyIiwid3JpdGVVc1ZhcmJ5dGUiLCJ0b1N0cmluZyIsIndyaXRlQnVmZmVyIiwid3JpdGVQTFBCb2R5Iiwid3JpdGVNb25leSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTSElGVF9MRUZUXzMyID0gKDEgPDwgMTYpICogKDEgPDwgMTYpO1xuY29uc3QgU0hJRlRfUklHSFRfMzIgPSAxIC8gU0hJRlRfTEVGVF8zMjtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBaRVJPX0xFTkdUSF9CVUZGRVIgPSBCdWZmZXIuYWxsb2MoMCk7XG5cbmV4cG9ydCB0eXBlIEVuY29kaW5nID0gJ3V0ZjgnIHwgJ3VjczInIHwgJ2FzY2lpJztcblxuLyoqXG4gIEEgQnVmZmVyLWxpa2UgY2xhc3MgdGhhdCB0cmFja3MgcG9zaXRpb24uXG5cbiAgQXMgdmFsdWVzIGFyZSB3cml0dGVuLCB0aGUgcG9zaXRpb24gYWR2YW5jZXMgYnkgdGhlIHNpemUgb2YgdGhlIHdyaXR0ZW4gZGF0YS5cbiAgV2hlbiB3cml0aW5nLCBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlcyBuZXcgYnVmZmVycyBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UuXG4gKi9cbmNsYXNzIFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIge1xuICBpbml0aWFsU2l6ZTogbnVtYmVyO1xuICBlbmNvZGluZzogRW5jb2Rpbmc7XG4gIGRvdWJsZVNpemVHcm93dGg6IGJvb2xlYW47XG5cbiAgYnVmZmVyOiBCdWZmZXI7XG4gIGNvbXBvc2l0ZUJ1ZmZlcjogQnVmZmVyO1xuXG4gIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbFNpemU6IG51bWJlciwgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwsIGRvdWJsZVNpemVHcm93dGg/OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbml0aWFsU2l6ZSA9IGluaXRpYWxTaXplO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyB8fCAndWNzMic7XG4gICAgdGhpcy5kb3VibGVTaXplR3Jvd3RoID0gZG91YmxlU2l6ZUdyb3d0aCB8fCBmYWxzZTtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyh0aGlzLmluaXRpYWxTaXplLCAwKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IFpFUk9fTEVOR1RIX0JVRkZFUjtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHRoaXMubmV3QnVmZmVyKDApO1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0ZUJ1ZmZlcjtcbiAgfVxuXG4gIGNvcHlGcm9tKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgbWFrZVJvb21Gb3IocmVxdWlyZWRMZW5ndGg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLnBvc2l0aW9uIDwgcmVxdWlyZWRMZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmRvdWJsZVNpemVHcm93dGgpIHtcbiAgICAgICAgbGV0IHNpemUgPSBNYXRoLm1heCgxMjgsIHRoaXMuYnVmZmVyLmxlbmd0aCAqIDIpO1xuICAgICAgICB3aGlsZSAoc2l6ZSA8IHJlcXVpcmVkTGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSAqPSAyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmV3QnVmZmVyKHNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXdCdWZmZXIocmVxdWlyZWRMZW5ndGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5ld0J1ZmZlcihzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlci5zbGljZSgwLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY29tcG9zaXRlQnVmZmVyLCBidWZmZXJdKTtcbiAgICB0aGlzLmJ1ZmZlciA9IChzaXplID09PSAwKSA/IFpFUk9fTEVOR1RIX0JVRkZFUiA6IEJ1ZmZlci5hbGxvYyhzaXplLCAwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIHdyaXRlVUludDgodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDE7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MTZMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMjtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVTaG9ydCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZVVJbnQxNkxFKHZhbHVlKTtcbiAgfVxuXG4gIHdyaXRlVUludDE2QkUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDI7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMztcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbiArIDJdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyAxXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dID0gdmFsdWUgJiAweGZmO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MzJMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gNDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MzJMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJpZ0ludDY0TEUodmFsdWU6IGJpZ2ludCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IDg7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlQmlnSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUludDY0TEUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVCaWdJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVVSW50NjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZUJpZ1VJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVCaWdVSW50NjRMRSh2YWx1ZTogYmlnaW50KSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVCaWdVSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQzMkJFKHZhbHVlLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlVUludDQwTEUodmFsdWU6IG51bWJlcikge1xuICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kcHcvbm9kZS1idWZmZXItbW9yZS1pbnRzXG4gICAgdGhpcy53cml0ZUludDMyTEUodmFsdWUgJiAtMSk7XG4gICAgdGhpcy53cml0ZVVJbnQ4KE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICB9XG5cbiAgd3JpdGVJbnQ4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAxO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyQkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVGbG9hdExFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUZsb2F0TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVEb3VibGVMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVEb3VibGVMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nLCBlbmNvZGluZz86IEVuY29kaW5nIHwgbnVsbCkge1xuICAgIGlmIChlbmNvZGluZyA9PSBudWxsKSB7XG4gICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsIGVuY29kaW5nKTtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG5cbiAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L3B1bGwvNTM5OFxuICAgIHRoaXMuYnVmZmVyLndyaXRlKHZhbHVlLCB0aGlzLnBvc2l0aW9uLCBlbmNvZGluZyk7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJWYXJjaGFyKHZhbHVlOiBzdHJpbmcsIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgdGhpcy53cml0ZVVJbnQ4KHZhbHVlLmxlbmd0aCk7XG4gICAgdGhpcy53cml0ZVN0cmluZyh2YWx1ZSwgZW5jb2RpbmcpO1xuICB9XG5cbiAgd3JpdGVVc1ZhcmNoYXIodmFsdWU6IHN0cmluZywgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoKTtcbiAgICB0aGlzLndyaXRlU3RyaW5nKHZhbHVlLCBlbmNvZGluZyk7XG4gIH1cblxuICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoYXQgdHlwZXMgYXJlIHBhc3NlZCBpbiBvdGhlciB0aGFuIGBCdWZmZXJgXG4gIHdyaXRlVXNWYXJieXRlKHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cbiAgICB0aGlzLndyaXRlVUludDE2TEUobGVuZ3RoKTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgdGhpcy53cml0ZUJ1ZmZlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgIC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC81Mzk4XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZSh2YWx1ZSwgdGhpcy5wb3NpdGlvbiwgZW5jb2RpbmcpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVQTFBCb2R5KHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cblxuICAgIC8vIExlbmd0aCBvZiBhbGwgY2h1bmtzLlxuICAgIC8vIHRoaXMud3JpdGVVSW50NjRMRShsZW5ndGgpO1xuICAgIC8vIHVua25vd24gc2VlbXMgdG8gd29yayBiZXR0ZXIgaGVyZSAtIG1pZ2h0IHJldmlzaXQgbGF0ZXIuXG4gICAgdGhpcy53cml0ZUJ1ZmZlcihVTktOT1dOX1BMUF9MRU4pO1xuXG4gICAgLy8gSW4gdGhlIFVOS05PV05fUExQX0xFTiBjYXNlLCB0aGUgZGF0YSBpcyByZXByZXNlbnRlZCBhcyBhIHNlcmllcyBvZiB6ZXJvIG9yIG1vcmUgY2h1bmtzLlxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAvLyBPbmUgY2h1bmsuXG4gICAgICB0aGlzLndyaXRlVUludDMyTEUobGVuZ3RoKTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICB0aGlzLndyaXRlQnVmZmVyKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgICAgdGhpcy5idWZmZXIud3JpdGUodmFsdWUsIHRoaXMucG9zaXRpb24sIGVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUExQX1RFUk1JTkFUT1IgKG5vIG1vcmUgY2h1bmtzKS5cbiAgICB0aGlzLndyaXRlVUludDMyTEUoMCk7XG4gIH1cblxuICB3cml0ZUJ1ZmZlcih2YWx1ZTogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB2YWx1ZS5jb3B5KHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlTW9uZXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKHZhbHVlICYgLTEpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMzQyxNQUFNQyxjQUFjLEdBQUcsQ0FBQyxHQUFHRCxhQUFhO0FBQ3hD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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writable-tracking-buffer.js","names":["SHIFT_LEFT_32","SHIFT_RIGHT_32","UNKNOWN_PLP_LEN","Buffer","from","ZERO_LENGTH_BUFFER","alloc","WritableTrackingBuffer","initialSize","encoding","doubleSizeGrowth","buffer","compositeBuffer","position","constructor","data","newBuffer","copyFrom","length","makeRoomFor","copy","requiredLength","size","Math","max","slice","concat","writeUInt8","value","writeUInt16LE","writeUShort","writeUInt16BE","writeUInt24LE","writeUInt32LE","writeBigInt64LE","writeInt64LE","BigInt","writeUInt64LE","writeBigUInt64LE","writeUInt32BE","writeUInt40LE","writeInt32LE","floor","writeInt8","writeInt16LE","writeInt16BE","writeInt32BE","writeFloatLE","writeDoubleLE","writeString","byteLength","write","writeBVarchar","writeUsVarchar","writeUsVarbyte","toString","writeBuffer","writePLPBody","writeMoney","_default","exports","default","module"],"sources":["../../src/tracking-buffer/writable-tracking-buffer.ts"],"sourcesContent":["const SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst ZERO_LENGTH_BUFFER = Buffer.alloc(0);\n\nexport type Encoding = 'utf8' | 'ucs2' | 'ascii';\n\n/**\n A Buffer-like class that tracks position.\n\n As values are written, the position advances by the size of the written data.\n When writing, automatically allocates new buffers if there's not enough space.\n */\nclass WritableTrackingBuffer {\n initialSize: number;\n encoding: Encoding;\n doubleSizeGrowth: boolean;\n\n buffer: Buffer;\n compositeBuffer: Buffer;\n\n position: number;\n\n constructor(initialSize: number, encoding?: Encoding | null, doubleSizeGrowth?: boolean) {\n this.initialSize = initialSize;\n this.encoding = encoding || 'ucs2';\n this.doubleSizeGrowth = doubleSizeGrowth || false;\n this.buffer = Buffer.alloc(this.initialSize, 0);\n this.compositeBuffer = ZERO_LENGTH_BUFFER;\n this.position = 0;\n }\n\n get data() {\n this.newBuffer(0);\n return this.compositeBuffer;\n }\n\n copyFrom(buffer: Buffer) {\n const length = buffer.length;\n this.makeRoomFor(length);\n buffer.copy(this.buffer, this.position);\n this.position += length;\n }\n\n makeRoomFor(requiredLength: number) {\n if (this.buffer.length - this.position < requiredLength) {\n if (this.doubleSizeGrowth) {\n let size = Math.max(128, this.buffer.length * 2);\n while (size < requiredLength) {\n size *= 2;\n }\n this.newBuffer(size);\n } else {\n this.newBuffer(requiredLength);\n }\n }\n }\n\n newBuffer(size: number) {\n const buffer = this.buffer.slice(0, this.position);\n this.compositeBuffer = Buffer.concat([this.compositeBuffer, buffer]);\n this.buffer = (size === 0) ? ZERO_LENGTH_BUFFER : Buffer.alloc(size, 0);\n this.position = 0;\n }\n\n writeUInt8(value: number) {\n const length = 1;\n this.makeRoomFor(length);\n this.buffer.writeUInt8(value, this.position);\n this.position += length;\n }\n\n writeUInt16LE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeUInt16LE(value, this.position);\n this.position += length;\n }\n\n writeUShort(value: number) {\n this.writeUInt16LE(value);\n }\n\n writeUInt16BE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeUInt16BE(value, this.position);\n this.position += length;\n }\n\n writeUInt24LE(value: number) {\n const length = 3;\n this.makeRoomFor(length);\n this.buffer[this.position + 2] = (value >>> 16) & 0xff;\n this.buffer[this.position + 1] = (value >>> 8) & 0xff;\n this.buffer[this.position] = value & 0xff;\n this.position += length;\n }\n\n writeUInt32LE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeUInt32LE(value, this.position);\n this.position += length;\n }\n\n writeBigInt64LE(value: bigint) {\n const length = 8;\n this.makeRoomFor(length);\n this.buffer.writeBigInt64LE(value, this.position);\n this.position += length;\n }\n\n writeInt64LE(value: number) {\n this.writeBigInt64LE(BigInt(value));\n }\n\n writeUInt64LE(value: number) {\n this.writeBigUInt64LE(BigInt(value));\n }\n\n writeBigUInt64LE(value: bigint) {\n const length = 8;\n this.makeRoomFor(length);\n this.buffer.writeBigUInt64LE(value, this.position);\n this.position += length;\n }\n\n writeUInt32BE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeUInt32BE(value, this.position);\n this.position += length;\n }\n\n writeUInt40LE(value: number) {\n // inspired by https://github.com/dpw/node-buffer-more-ints\n this.writeInt32LE(value & -1);\n this.writeUInt8(Math.floor(value * SHIFT_RIGHT_32));\n }\n\n writeInt8(value: number) {\n const length = 1;\n this.makeRoomFor(length);\n this.buffer.writeInt8(value, this.position);\n this.position += length;\n }\n\n writeInt16LE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeInt16LE(value, this.position);\n this.position += length;\n }\n\n writeInt16BE(value: number) {\n const length = 2;\n this.makeRoomFor(length);\n this.buffer.writeInt16BE(value, this.position);\n this.position += length;\n }\n\n writeInt32LE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeInt32LE(value, this.position);\n this.position += length;\n }\n\n writeInt32BE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeInt32BE(value, this.position);\n this.position += length;\n }\n\n writeFloatLE(value: number) {\n const length = 4;\n this.makeRoomFor(length);\n this.buffer.writeFloatLE(value, this.position);\n this.position += length;\n }\n\n writeDoubleLE(value: number) {\n const length = 8;\n this.makeRoomFor(length);\n this.buffer.writeDoubleLE(value, this.position);\n this.position += length;\n }\n\n writeString(value: string, encoding?: Encoding | null) {\n if (encoding == null) {\n encoding = this.encoding;\n }\n\n const length = Buffer.byteLength(value, encoding);\n this.makeRoomFor(length);\n\n // $FlowFixMe https://github.com/facebook/flow/pull/5398\n this.buffer.write(value, this.position, encoding);\n this.position += length;\n }\n\n writeBVarchar(value: string, encoding?: Encoding | null) {\n this.writeUInt8(value.length);\n this.writeString(value, encoding);\n }\n\n writeUsVarchar(value: string, encoding?: Encoding | null) {\n this.writeUInt16LE(value.length);\n this.writeString(value, encoding);\n }\n\n // TODO: Figure out what types are passed in other than `Buffer`\n writeUsVarbyte(value: any, encoding?: Encoding | null) {\n if (encoding == null) {\n encoding = this.encoding;\n }\n\n let length;\n if (value instanceof Buffer) {\n length = value.length;\n } else {\n value = value.toString();\n length = Buffer.byteLength(value, encoding);\n }\n this.writeUInt16LE(length);\n\n if (value instanceof Buffer) {\n this.writeBuffer(value);\n } else {\n this.makeRoomFor(length);\n // $FlowFixMe https://github.com/facebook/flow/pull/5398\n this.buffer.write(value, this.position, encoding);\n this.position += length;\n }\n }\n\n writePLPBody(value: any, encoding?: Encoding | null) {\n if (encoding == null) {\n encoding = this.encoding;\n }\n\n let length;\n if (value instanceof Buffer) {\n length = value.length;\n } else {\n value = value.toString();\n length = Buffer.byteLength(value, encoding);\n }\n\n // Length of all chunks.\n // this.writeUInt64LE(length);\n // unknown seems to work better here - might revisit later.\n this.writeBuffer(UNKNOWN_PLP_LEN);\n\n // In the UNKNOWN_PLP_LEN case, the data is represented as a series of zero or more chunks.\n if (length > 0) {\n // One chunk.\n this.writeUInt32LE(length);\n if (value instanceof Buffer) {\n this.writeBuffer(value);\n } else {\n this.makeRoomFor(length);\n this.buffer.write(value, this.position, encoding);\n this.position += length;\n }\n }\n\n // PLP_TERMINATOR (no more chunks).\n this.writeUInt32LE(0);\n }\n\n writeBuffer(value: Buffer) {\n const length = value.length;\n this.makeRoomFor(length);\n value.copy(this.buffer, this.position);\n this.position += length;\n }\n\n writeMoney(value: number) {\n this.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32));\n this.writeInt32LE(value & -1);\n }\n}\n\nexport default WritableTrackingBuffer;\nmodule.exports = WritableTrackingBuffer;\n"],"mappings":";;;;;;AAAA,MAAMA,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3C,MAAMC,cAAc,GAAG,CAAC,GAAGD,aAAa;AACxC,MAAME,eAAe,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrF,MAAMC,kBAAkB,GAAGF,MAAM,CAACG,KAAK,CAAC,CAAC,CAAC;AAI1C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,CAAC;EAC3BC,WAAW;EACXC,QAAQ;EACRC,gBAAgB;EAEhBC,MAAM;EACNC,eAAe;EAEfC,QAAQ;EAERC,WAAWA,CAACN,WAAmB,EAAEC,QAA0B,EAAEC,gBAA0B,EAAE;IACvF,IAAI,CAACF,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,QAAQ,GAAGA,QAAQ,IAAI,MAAM;IAClC,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB,IAAI,KAAK;IACjD,IAAI,CAACC,MAAM,GAAGR,MAAM,CAACG,KAAK,CAAC,IAAI,CAACE,WAAW,EAAE,CAAC,CAAC;IAC/C,IAAI,CAACI,eAAe,GAAGP,kBAAkB;IACzC,IAAI,CAACQ,QAAQ,GAAG,CAAC;EACnB;EAEA,IAAIE,IAAIA,CAAA,EAAG;IACT,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC;IACjB,OAAO,IAAI,CAACJ,eAAe;EAC7B;EAEAK,QAAQA,CAACN,MAAc,EAAE;IACvB,MAAMO,MAAM,GAAGP,MAAM,CAACO,MAAM;IAC5B,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxBP,MAAM,CAACS,IAAI,CAAC,IAAI,CAACT,MAAM,EAAE,IAAI,CAACE,QAAQ,CAAC;IACvC,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAC,WAAWA,CAACE,cAAsB,EAAE;IAClC,IAAI,IAAI,CAACV,MAAM,CAACO,MAAM,GAAG,IAAI,CAACL,QAAQ,GAAGQ,cAAc,EAAE;MACvD,IAAI,IAAI,CAACX,gBAAgB,EAAE;QACzB,IAAIY,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAE,IAAI,CAACb,MAAM,CAACO,MAAM,GAAG,CAAC,CAAC;QAChD,OAAOI,IAAI,GAAGD,cAAc,EAAE;UAC5BC,IAAI,IAAI,CAAC;QACX;QACA,IAAI,CAACN,SAAS,CAACM,IAAI,CAAC;MACtB,CAAC,MAAM;QACL,IAAI,CAACN,SAAS,CAACK,cAAc,CAAC;MAChC;IACF;EACF;EAEAL,SAASA,CAACM,IAAY,EAAE;IACtB,MAAMX,MAAM,GAAG,IAAI,CAACA,MAAM,CAACc,KAAK,CAAC,CAAC,EAAE,IAAI,CAACZ,QAAQ,CAAC;IAClD,IAAI,CAACD,eAAe,GAAGT,MAAM,CAACuB,MAAM,CAAC,CAAC,IAAI,CAACd,eAAe,EAAED,MAAM,CAAC,CAAC;IACpE,IAAI,CAACA,MAAM,GAAIW,IAAI,KAAK,CAAC,GAAIjB,kBAAkB,GAAGF,MAAM,CAACG,KAAK,CAACgB,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,CAACT,QAAQ,GAAG,CAAC;EACnB;EAEAc,UAAUA,CAACC,KAAa,EAAE;IACxB,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACgB,UAAU,CAACC,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC5C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAW,aAAaA,CAACD,KAAa,EAAE;IAC3B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACkB,aAAa,CAACD,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC/C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAY,WAAWA,CAACF,KAAa,EAAE;IACzB,IAAI,CAACC,aAAa,CAACD,KAAK,CAAC;EAC3B;EAEAG,aAAaA,CAACH,KAAa,EAAE;IAC3B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACoB,aAAa,CAACH,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC/C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAc,aAAaA,CAACJ,KAAa,EAAE;IAC3B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAAC,IAAI,CAACE,QAAQ,GAAG,CAAC,CAAC,GAAIe,KAAK,KAAK,EAAE,GAAI,IAAI;IACtD,IAAI,CAACjB,MAAM,CAAC,IAAI,CAACE,QAAQ,GAAG,CAAC,CAAC,GAAIe,KAAK,KAAK,CAAC,GAAI,IAAI;IACrD,IAAI,CAACjB,MAAM,CAAC,IAAI,CAACE,QAAQ,CAAC,GAAGe,KAAK,GAAG,IAAI;IACzC,IAAI,CAACf,QAAQ,IAAIK,MAAM;EACzB;EAEAe,aAAaA,CAACL,KAAa,EAAE;IAC3B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACsB,aAAa,CAACL,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC/C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAgB,eAAeA,CAACN,KAAa,EAAE;IAC7B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACuB,eAAe,CAACN,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IACjD,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAiB,YAAYA,CAACP,KAAa,EAAE;IAC1B,IAAI,CAACM,eAAe,CAACE,MAAM,CAACR,KAAK,CAAC,CAAC;EACrC;EAEAS,aAAaA,CAACT,KAAa,EAAE;IAC3B,IAAI,CAACU,gBAAgB,CAACF,MAAM,CAACR,KAAK,CAAC,CAAC;EACtC;EAEAU,gBAAgBA,CAACV,KAAa,EAAE;IAC9B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAAC2B,gBAAgB,CAACV,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAClD,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAqB,aAAaA,CAACX,KAAa,EAAE;IAC3B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAAC4B,aAAa,CAACX,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC/C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAsB,aAAaA,CAACZ,KAAa,EAAE;IAC3B;IACA,IAAI,CAACa,YAAY,CAACb,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,CAACD,UAAU,CAACJ,IAAI,CAACmB,KAAK,CAACd,KAAK,GAAG3B,cAAc,CAAC,CAAC;EACrD;EAEA0C,SAASA,CAACf,KAAa,EAAE;IACvB,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACgC,SAAS,CAACf,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC3C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEA0B,YAAYA,CAAChB,KAAa,EAAE;IAC1B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACiC,YAAY,CAAChB,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC9C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEA2B,YAAYA,CAACjB,KAAa,EAAE;IAC1B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACkC,YAAY,CAACjB,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC9C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAuB,YAAYA,CAACb,KAAa,EAAE;IAC1B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAAC8B,YAAY,CAACb,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC9C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEA4B,YAAYA,CAAClB,KAAa,EAAE;IAC1B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACmC,YAAY,CAAClB,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC9C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEA6B,YAAYA,CAACnB,KAAa,EAAE;IAC1B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACoC,YAAY,CAACnB,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC9C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEA8B,aAAaA,CAACpB,KAAa,EAAE;IAC3B,MAAMV,MAAM,GAAG,CAAC;IAChB,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxB,IAAI,CAACP,MAAM,CAACqC,aAAa,CAACpB,KAAK,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC/C,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEA+B,WAAWA,CAACrB,KAAa,EAAEnB,QAA0B,EAAE;IACrD,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC1B;IAEA,MAAMS,MAAM,GAAGf,MAAM,CAAC+C,UAAU,CAACtB,KAAK,EAAEnB,QAAQ,CAAC;IACjD,IAAI,CAACU,WAAW,CAACD,MAAM,CAAC;;IAExB;IACA,IAAI,CAACP,MAAM,CAACwC,KAAK,CAACvB,KAAK,EAAE,IAAI,CAACf,QAAQ,EAAEJ,QAAQ,CAAC;IACjD,IAAI,CAACI,QAAQ,IAAIK,MAAM;EACzB;EAEAkC,aAAaA,CAACxB,KAAa,EAAEnB,QAA0B,EAAE;IACvD,IAAI,CAACkB,UAAU,CAACC,KAAK,CAACV,MAAM,CAAC;IAC7B,IAAI,CAAC+B,WAAW,CAACrB,KAAK,EAAEnB,QAAQ,CAAC;EACnC;EAEA4C,cAAcA,CAACzB,KAAa,EAAEnB,QAA0B,EAAE;IACxD,IAAI,CAACoB,aAAa,CAACD,KAAK,CAACV,MAAM,CAAC;IAChC,IAAI,CAAC+B,WAAW,CAACrB,KAAK,EAAEnB,QAAQ,CAAC;EACnC;;EAEA;EACA6C,cAAcA,CAAC1B,KAAU,EAAEnB,QAA0B,EAAE;IACrD,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC1B;IAEA,IAAIS,MAAM;IACV,IAAIU,KAAK,YAAYzB,MAAM,EAAE;MAC3Be,MAAM,GAAGU,KAAK,CAACV,MAAM;IACvB,CAAC,MAAM;MACLU,KAAK,GAAGA,KAAK,CAAC2B,QAAQ,CAAC,CAAC;MACxBrC,MAAM,GAAGf,MAAM,CAAC+C,UAAU,CAACtB,KAAK,EAAEnB,QAAQ,CAAC;IAC7C;IACA,IAAI,CAACoB,aAAa,CAACX,MAAM,CAAC;IAE1B,IAAIU,KAAK,YAAYzB,MAAM,EAAE;MAC3B,IAAI,CAACqD,WAAW,CAAC5B,KAAK,CAAC;IACzB,CAAC,MAAM;MACL,IAAI,CAACT,WAAW,CAACD,MAAM,CAAC;MACxB;MACA,IAAI,CAACP,MAAM,CAACwC,KAAK,CAACvB,KAAK,EAAE,IAAI,CAACf,QAAQ,EAAEJ,QAAQ,CAAC;MACjD,IAAI,CAACI,QAAQ,IAAIK,MAAM;IACzB;EACF;EAEAuC,YAAYA,CAAC7B,KAAU,EAAEnB,QAA0B,EAAE;IACnD,IAAIA,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC1B;IAEA,IAAIS,MAAM;IACV,IAAIU,KAAK,YAAYzB,MAAM,EAAE;MAC3Be,MAAM,GAAGU,KAAK,CAACV,MAAM;IACvB,CAAC,MAAM;MACLU,KAAK,GAAGA,KAAK,CAAC2B,QAAQ,CAAC,CAAC;MACxBrC,MAAM,GAAGf,MAAM,CAAC+C,UAAU,CAACtB,KAAK,EAAEnB,QAAQ,CAAC;IAC7C;;IAEA;IACA;IACA;IACA,IAAI,CAAC+C,WAAW,CAACtD,eAAe,CAAC;;IAEjC;IACA,IAAIgB,MAAM,GAAG,CAAC,EAAE;MACd;MACA,IAAI,CAACe,aAAa,CAACf,MAAM,CAAC;MAC1B,IAAIU,KAAK,YAAYzB,MAAM,EAAE;QAC3B,IAAI,CAACqD,WAAW,CAAC5B,KAAK,CAAC;MACzB,CAAC,MAAM;QACL,IAAI,CAACT,WAAW,CAACD,MAAM,CAAC;QACxB,IAAI,CAACP,MAAM,CAACwC,KAAK,CAACvB,KAAK,EAAE,IAAI,CAACf,QAAQ,EAAEJ,QAAQ,CAAC;QACjD,IAAI,CAACI,QAAQ,IAAIK,MAAM;MACzB;IACF;;IAEA;IACA,IAAI,CAACe,aAAa,CAAC,CAAC,CAAC;EACvB;EAEAuB,WAAWA,CAAC5B,KAAa,EAAE;IACzB,MAAMV,MAAM,GAAGU,KAAK,CAACV,MAAM;IAC3B,IAAI,CAACC,WAAW,CAACD,MAAM,CAAC;IACxBU,KAAK,CAACR,IAAI,CAAC,IAAI,CAACT,MAAM,EAAE,IAAI,CAACE,QAAQ,CAAC;IACtC,IAAI,CAACA,QAAQ,IAAIK,MAAM;EACzB;EAEAwC,UAAUA,CAAC9B,KAAa,EAAE;IACxB,IAAI,CAACa,YAAY,CAAClB,IAAI,CAACmB,KAAK,CAACd,KAAK,GAAG3B,cAAc,CAAC,CAAC;IACrD,IAAI,CAACwC,YAAY,CAACb,KAAK,GAAG,CAAC,CAAC,CAAC;EAC/B;AACF;AAAC,IAAA+B,QAAA,GAEcpD,sBAAsB;AAAAqD,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACrCG,MAAM,CAACF,OAAO,GAAGrD,sBAAsB"}