tedious-fabric 1.0.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 (304) hide show
  1. package/CLAUDE.md +91 -0
  2. package/LICENSE +21 -0
  3. package/README.md +67 -0
  4. package/appveyor.yml +67 -0
  5. package/eslint.config.mjs +314 -0
  6. package/lib/all-headers.d.ts +2 -0
  7. package/lib/all-headers.js +24 -0
  8. package/lib/all-headers.js.map +1 -0
  9. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +82 -0
  10. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
  11. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +55 -0
  12. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
  13. package/lib/always-encrypted/cek-entry.d.ts +11 -0
  14. package/lib/always-encrypted/cek-entry.js +42 -0
  15. package/lib/always-encrypted/cek-entry.js.map +1 -0
  16. package/lib/always-encrypted/get-parameter-encryption-metadata.js +90 -0
  17. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
  18. package/lib/always-encrypted/key-crypto.js +94 -0
  19. package/lib/always-encrypted/key-crypto.js.map +1 -0
  20. package/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts +21 -0
  21. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +247 -0
  22. package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
  23. package/lib/always-encrypted/symmetric-key-cache.js +36 -0
  24. package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
  25. package/lib/always-encrypted/symmetric-key.js +25 -0
  26. package/lib/always-encrypted/symmetric-key.js.map +1 -0
  27. package/lib/always-encrypted/types.d.ts +73 -0
  28. package/lib/always-encrypted/types.js +61 -0
  29. package/lib/always-encrypted/types.js.map +1 -0
  30. package/lib/always-encrypted/utils.js +23 -0
  31. package/lib/always-encrypted/utils.js.map +1 -0
  32. package/lib/bulk-load-payload.d.ts +8 -0
  33. package/lib/bulk-load-payload.js +23 -0
  34. package/lib/bulk-load-payload.js.map +1 -0
  35. package/lib/bulk-load.d.ts +275 -0
  36. package/lib/bulk-load.js +515 -0
  37. package/lib/bulk-load.js.map +1 -0
  38. package/lib/collation.d.ts +28 -0
  39. package/lib/collation.js +348 -0
  40. package/lib/collation.js.map +1 -0
  41. package/lib/connection.d.ts +1309 -0
  42. package/lib/connection.js +2732 -0
  43. package/lib/connection.js.map +1 -0
  44. package/lib/connector.d.ts +18 -0
  45. package/lib/connector.js +142 -0
  46. package/lib/connector.js.map +1 -0
  47. package/lib/data-type.d.ts +554 -0
  48. package/lib/data-type.js +428 -0
  49. package/lib/data-type.js.map +1 -0
  50. package/lib/data-types/bigint.d.ts +3 -0
  51. package/lib/data-types/bigint.js +53 -0
  52. package/lib/data-types/bigint.js.map +1 -0
  53. package/lib/data-types/binary.d.ts +5 -0
  54. package/lib/data-types/binary.js +67 -0
  55. package/lib/data-types/binary.js.map +1 -0
  56. package/lib/data-types/bit.d.ts +3 -0
  57. package/lib/data-types/bit.js +46 -0
  58. package/lib/data-types/bit.js.map +1 -0
  59. package/lib/data-types/bitn.d.ts +3 -0
  60. package/lib/data-types/bitn.js +29 -0
  61. package/lib/data-types/bitn.js.map +1 -0
  62. package/lib/data-types/char.d.ts +5 -0
  63. package/lib/data-types/char.js +86 -0
  64. package/lib/data-types/char.js.map +1 -0
  65. package/lib/data-types/date.d.ts +3 -0
  66. package/lib/data-types/date.js +72 -0
  67. package/lib/data-types/date.js.map +1 -0
  68. package/lib/data-types/datetime.d.ts +3 -0
  69. package/lib/data-types/datetime.js +93 -0
  70. package/lib/data-types/datetime.js.map +1 -0
  71. package/lib/data-types/datetime2.d.ts +5 -0
  72. package/lib/data-types/datetime2.js +118 -0
  73. package/lib/data-types/datetime2.js.map +1 -0
  74. package/lib/data-types/datetimen.d.ts +3 -0
  75. package/lib/data-types/datetimen.js +29 -0
  76. package/lib/data-types/datetimen.js.map +1 -0
  77. package/lib/data-types/datetimeoffset.d.ts +5 -0
  78. package/lib/data-types/datetimeoffset.js +111 -0
  79. package/lib/data-types/datetimeoffset.js.map +1 -0
  80. package/lib/data-types/decimal.d.ts +6 -0
  81. package/lib/data-types/decimal.js +107 -0
  82. package/lib/data-types/decimal.js.map +1 -0
  83. package/lib/data-types/decimaln.d.ts +3 -0
  84. package/lib/data-types/decimaln.js +29 -0
  85. package/lib/data-types/decimaln.js.map +1 -0
  86. package/lib/data-types/float.d.ts +3 -0
  87. package/lib/data-types/float.js +47 -0
  88. package/lib/data-types/float.js.map +1 -0
  89. package/lib/data-types/floatn.d.ts +3 -0
  90. package/lib/data-types/floatn.js +29 -0
  91. package/lib/data-types/floatn.js.map +1 -0
  92. package/lib/data-types/image.d.ts +3 -0
  93. package/lib/data-types/image.js +56 -0
  94. package/lib/data-types/image.js.map +1 -0
  95. package/lib/data-types/int.d.ts +3 -0
  96. package/lib/data-types/int.js +53 -0
  97. package/lib/data-types/int.js.map +1 -0
  98. package/lib/data-types/intn.d.ts +3 -0
  99. package/lib/data-types/intn.js +29 -0
  100. package/lib/data-types/intn.js.map +1 -0
  101. package/lib/data-types/money.d.ts +3 -0
  102. package/lib/data-types/money.js +59 -0
  103. package/lib/data-types/money.js.map +1 -0
  104. package/lib/data-types/moneyn.d.ts +3 -0
  105. package/lib/data-types/moneyn.js +29 -0
  106. package/lib/data-types/moneyn.js.map +1 -0
  107. package/lib/data-types/nchar.d.ts +5 -0
  108. package/lib/data-types/nchar.js +100 -0
  109. package/lib/data-types/nchar.js.map +1 -0
  110. package/lib/data-types/ntext.d.ts +3 -0
  111. package/lib/data-types/ntext.js +60 -0
  112. package/lib/data-types/ntext.js.map +1 -0
  113. package/lib/data-types/null.d.ts +3 -0
  114. package/lib/data-types/null.js +29 -0
  115. package/lib/data-types/null.js.map +1 -0
  116. package/lib/data-types/numeric.d.ts +6 -0
  117. package/lib/data-types/numeric.js +106 -0
  118. package/lib/data-types/numeric.js.map +1 -0
  119. package/lib/data-types/numericn.d.ts +3 -0
  120. package/lib/data-types/numericn.js +29 -0
  121. package/lib/data-types/numericn.js.map +1 -0
  122. package/lib/data-types/nvarchar.d.ts +5 -0
  123. package/lib/data-types/nvarchar.js +133 -0
  124. package/lib/data-types/nvarchar.js.map +1 -0
  125. package/lib/data-types/real.d.ts +3 -0
  126. package/lib/data-types/real.js +48 -0
  127. package/lib/data-types/real.js.map +1 -0
  128. package/lib/data-types/smalldatetime.d.ts +3 -0
  129. package/lib/data-types/smalldatetime.js +83 -0
  130. package/lib/data-types/smalldatetime.js.map +1 -0
  131. package/lib/data-types/smallint.d.ts +3 -0
  132. package/lib/data-types/smallint.js +53 -0
  133. package/lib/data-types/smallint.js.map +1 -0
  134. package/lib/data-types/smallmoney.d.ts +3 -0
  135. package/lib/data-types/smallmoney.js +51 -0
  136. package/lib/data-types/smallmoney.js.map +1 -0
  137. package/lib/data-types/sql-variant.d.ts +3 -0
  138. package/lib/data-types/sql-variant.js +29 -0
  139. package/lib/data-types/sql-variant.js.map +1 -0
  140. package/lib/data-types/text.d.ts +3 -0
  141. package/lib/data-types/text.js +69 -0
  142. package/lib/data-types/text.js.map +1 -0
  143. package/lib/data-types/time.d.ts +3 -0
  144. package/lib/data-types/time.js +96 -0
  145. package/lib/data-types/time.js.map +1 -0
  146. package/lib/data-types/tinyint.d.ts +3 -0
  147. package/lib/data-types/tinyint.js +53 -0
  148. package/lib/data-types/tinyint.js.map +1 -0
  149. package/lib/data-types/tvp.d.ts +3 -0
  150. package/lib/data-types/tvp.js +117 -0
  151. package/lib/data-types/tvp.js.map +1 -0
  152. package/lib/data-types/udt.d.ts +3 -0
  153. package/lib/data-types/udt.js +29 -0
  154. package/lib/data-types/udt.js.map +1 -0
  155. package/lib/data-types/uniqueidentifier.d.ts +3 -0
  156. package/lib/data-types/uniqueidentifier.js +50 -0
  157. package/lib/data-types/uniqueidentifier.js.map +1 -0
  158. package/lib/data-types/varbinary.d.ts +5 -0
  159. package/lib/data-types/varbinary.js +119 -0
  160. package/lib/data-types/varbinary.js.map +1 -0
  161. package/lib/data-types/varchar.d.ts +5 -0
  162. package/lib/data-types/varchar.js +112 -0
  163. package/lib/data-types/varchar.js.map +1 -0
  164. package/lib/data-types/xml.d.ts +3 -0
  165. package/lib/data-types/xml.js +29 -0
  166. package/lib/data-types/xml.js.map +1 -0
  167. package/lib/debug.d.ts +25 -0
  168. package/lib/debug.js +66 -0
  169. package/lib/debug.js.map +1 -0
  170. package/lib/errors.d.ts +17 -0
  171. package/lib/errors.js +23 -0
  172. package/lib/errors.js.map +1 -0
  173. package/lib/guid-parser.d.ts +3 -0
  174. package/lib/guid-parser.js +30 -0
  175. package/lib/guid-parser.js.map +1 -0
  176. package/lib/incoming-message-stream.d.ts +19 -0
  177. package/lib/incoming-message-stream.js +97 -0
  178. package/lib/incoming-message-stream.js.map +1 -0
  179. package/lib/instance-lookup.d.ts +13 -0
  180. package/lib/instance-lookup.js +91 -0
  181. package/lib/instance-lookup.js.map +1 -0
  182. package/lib/library.d.ts +1 -0
  183. package/lib/library.js +8 -0
  184. package/lib/library.js.map +1 -0
  185. package/lib/login7-payload.d.ts +51 -0
  186. package/lib/login7-payload.js +408 -0
  187. package/lib/login7-payload.js.map +1 -0
  188. package/lib/message-io.d.ts +28 -0
  189. package/lib/message-io.js +152 -0
  190. package/lib/message-io.js.map +1 -0
  191. package/lib/message.d.ts +11 -0
  192. package/lib/message.js +21 -0
  193. package/lib/message.js.map +1 -0
  194. package/lib/metadata-parser.d.ts +48 -0
  195. package/lib/metadata-parser.js +380 -0
  196. package/lib/metadata-parser.js.map +1 -0
  197. package/lib/ntlm-payload.d.ts +23 -0
  198. package/lib/ntlm-payload.js +135 -0
  199. package/lib/ntlm-payload.js.map +1 -0
  200. package/lib/ntlm.d.ts +4 -0
  201. package/lib/ntlm.js +72 -0
  202. package/lib/ntlm.js.map +1 -0
  203. package/lib/outgoing-message-stream.d.ts +15 -0
  204. package/lib/outgoing-message-stream.js +81 -0
  205. package/lib/outgoing-message-stream.js.map +1 -0
  206. package/lib/packet.d.ts +33 -0
  207. package/lib/packet.js +191 -0
  208. package/lib/packet.js.map +1 -0
  209. package/lib/prelogin-payload.d.ts +67 -0
  210. package/lib/prelogin-payload.js +228 -0
  211. package/lib/prelogin-payload.js.map +1 -0
  212. package/lib/request.d.ts +370 -0
  213. package/lib/request.js +387 -0
  214. package/lib/request.js.map +1 -0
  215. package/lib/rpcrequest-payload.d.ts +16 -0
  216. package/lib/rpcrequest-payload.js +109 -0
  217. package/lib/rpcrequest-payload.js.map +1 -0
  218. package/lib/sender.d.ts +5 -0
  219. package/lib/sender.js +78 -0
  220. package/lib/sender.js.map +1 -0
  221. package/lib/special-stored-procedure.d.ts +18 -0
  222. package/lib/special-stored-procedure.js +26 -0
  223. package/lib/special-stored-procedure.js.map +1 -0
  224. package/lib/sqlbatch-payload.d.ts +13 -0
  225. package/lib/sqlbatch-payload.js +34 -0
  226. package/lib/sqlbatch-payload.js.map +1 -0
  227. package/lib/tds-versions.d.ts +6 -0
  228. package/lib/tds-versions.js +19 -0
  229. package/lib/tds-versions.js.map +1 -0
  230. package/lib/tedious.d.ts +13 -0
  231. package/lib/tedious.js +73 -0
  232. package/lib/tedious.js.map +1 -0
  233. package/lib/token/colmetadata-token-parser.d.ts +12 -0
  234. package/lib/token/colmetadata-token-parser.js +124 -0
  235. package/lib/token/colmetadata-token-parser.js.map +1 -0
  236. package/lib/token/done-token-parser.d.ts +6 -0
  237. package/lib/token/done-token-parser.js +76 -0
  238. package/lib/token/done-token-parser.js.map +1 -0
  239. package/lib/token/env-change-token-parser.d.ts +5 -0
  240. package/lib/token/env-change-token-parser.js +190 -0
  241. package/lib/token/env-change-token-parser.js.map +1 -0
  242. package/lib/token/feature-ext-ack-parser.d.ts +5 -0
  243. package/lib/token/feature-ext-ack-parser.js +52 -0
  244. package/lib/token/feature-ext-ack-parser.js.map +1 -0
  245. package/lib/token/fedauth-info-parser.d.ts +5 -0
  246. package/lib/token/fedauth-info-parser.js +62 -0
  247. package/lib/token/fedauth-info-parser.js.map +1 -0
  248. package/lib/token/handler.d.ts +136 -0
  249. package/lib/token/handler.js +445 -0
  250. package/lib/token/handler.js.map +1 -0
  251. package/lib/token/helpers.d.ts +28 -0
  252. package/lib/token/helpers.js +205 -0
  253. package/lib/token/helpers.js.map +1 -0
  254. package/lib/token/infoerror-token-parser.d.ts +5 -0
  255. package/lib/token/infoerror-token-parser.js +80 -0
  256. package/lib/token/infoerror-token-parser.js.map +1 -0
  257. package/lib/token/loginack-token-parser.d.ts +5 -0
  258. package/lib/token/loginack-token-parser.js +75 -0
  259. package/lib/token/loginack-token-parser.js.map +1 -0
  260. package/lib/token/nbcrow-token-parser.d.ts +4 -0
  261. package/lib/token/nbcrow-token-parser.js +103 -0
  262. package/lib/token/nbcrow-token-parser.js.map +1 -0
  263. package/lib/token/order-token-parser.d.ts +5 -0
  264. package/lib/token/order-token-parser.js +34 -0
  265. package/lib/token/order-token-parser.js.map +1 -0
  266. package/lib/token/returnstatus-token-parser.d.ts +5 -0
  267. package/lib/token/returnstatus-token-parser.js +21 -0
  268. package/lib/token/returnstatus-token-parser.js.map +1 -0
  269. package/lib/token/returnvalue-token-parser.d.ts +4 -0
  270. package/lib/token/returnvalue-token-parser.js +93 -0
  271. package/lib/token/returnvalue-token-parser.js.map +1 -0
  272. package/lib/token/row-token-parser.d.ts +4 -0
  273. package/lib/token/row-token-parser.js +76 -0
  274. package/lib/token/row-token-parser.js.map +1 -0
  275. package/lib/token/sspi-token-parser.d.ts +5 -0
  276. package/lib/token/sspi-token-parser.js +42 -0
  277. package/lib/token/sspi-token-parser.js.map +1 -0
  278. package/lib/token/stream-parser.d.ts +34 -0
  279. package/lib/token/stream-parser.js +341 -0
  280. package/lib/token/stream-parser.js.map +1 -0
  281. package/lib/token/token-stream-parser.d.ts +15 -0
  282. package/lib/token/token-stream-parser.js +36 -0
  283. package/lib/token/token-stream-parser.js.map +1 -0
  284. package/lib/token/token.d.ts +312 -0
  285. package/lib/token/token.js +328 -0
  286. package/lib/token/token.js.map +1 -0
  287. package/lib/tracking-buffer/writable-tracking-buffer.d.ts +47 -0
  288. package/lib/tracking-buffer/writable-tracking-buffer.js +249 -0
  289. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
  290. package/lib/transaction.d.ts +39 -0
  291. package/lib/transaction.js +137 -0
  292. package/lib/transaction.js.map +1 -0
  293. package/lib/transient-error-lookup.d.ts +3 -0
  294. package/lib/transient-error-lookup.js +19 -0
  295. package/lib/transient-error-lookup.js.map +1 -0
  296. package/lib/value-parser.d.ts +7 -0
  297. package/lib/value-parser.js +813 -0
  298. package/lib/value-parser.js.map +1 -0
  299. package/package.json +145 -0
  300. package/pull_request_template.md +9 -0
  301. package/tsconfig.build-types.json +15 -0
  302. package/tsconfig.json +30 -0
  303. package/types/js-md4.d.ts +7 -0
  304. package/types/native-duplexpair.d.ts +12 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done-token-parser.js","names":["_token","require","_helpers","STATUS","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","readToken","buf","offset","options","status","value","readUInt16LE","more","sqlError","rowCountValid","attention","serverError","curCmd","rowCount","tdsVersion","readUInt32LE","readBigUInt64LE","Result","Number","undefined","doneParser","DoneToken","doneInProcParser","DoneInProcToken","doneProcParser","DoneProcToken"],"sources":["../../src/token/done-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\nimport { DoneToken, DoneInProcToken, DoneProcToken } from './token';\nimport { Result, readBigUInt64LE, readUInt16LE, readUInt32LE } from './helpers';\n\n// s2.2.7.5/6/7\n\nconst STATUS = {\n MORE: 0x0001,\n ERROR: 0x0002,\n // This bit is not yet in use by SQL Server, so is not exposed in the returned token\n INXACT: 0x0004,\n COUNT: 0x0010,\n ATTN: 0x0020,\n SRVERROR: 0x0100\n};\n\ninterface TokenData {\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n}\n\nfunction readToken(buf: Buffer, offset: number, options: ParserOptions): Result<TokenData> {\n let status;\n ({ offset, value: status } = readUInt16LE(buf, offset));\n\n const more = !!(status & STATUS.MORE);\n const sqlError = !!(status & STATUS.ERROR);\n const rowCountValid = !!(status & STATUS.COUNT);\n const attention = !!(status & STATUS.ATTN);\n const serverError = !!(status & STATUS.SRVERROR);\n\n let curCmd;\n ({ offset, value: curCmd } = readUInt16LE(buf, offset));\n\n let rowCount;\n ({ offset, value: rowCount } = (options.tdsVersion < '7_2' ? readUInt32LE : readBigUInt64LE)(buf, offset));\n\n return new Result({\n more: more,\n sqlError: sqlError,\n attention: attention,\n serverError: serverError,\n rowCount: rowCountValid ? Number(rowCount) : undefined,\n curCmd: curCmd\n }, offset);\n}\n\nexport function doneParser(buf: Buffer, offset: number, options: ParserOptions): Result<DoneToken> {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneToken(value), offset);\n}\n\nexport function doneInProcParser(buf: Buffer, offset: number, options: ParserOptions): Result<DoneInProcToken> {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneInProcToken(value), offset);\n}\n\nexport function doneProcParser(buf: Buffer, offset: number, options: ParserOptions): Result<DoneProcToken> {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneProcToken(value), offset);\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA;;AAEA,MAAME,MAAM,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACb;EACAC,MAAM,EAAE,MAAM;EACdC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE;AACZ,CAAC;AAWD,SAASC,SAASA,CAACC,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACzF,IAAIC,MAAM;EACV,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAO,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAEtD,MAAMK,IAAI,GAAG,CAAC,EAAEH,MAAM,GAAGX,MAAM,CAACC,IAAI,CAAC;EACrC,MAAMc,QAAQ,GAAG,CAAC,EAAEJ,MAAM,GAAGX,MAAM,CAACE,KAAK,CAAC;EAC1C,MAAMc,aAAa,GAAG,CAAC,EAAEL,MAAM,GAAGX,MAAM,CAACI,KAAK,CAAC;EAC/C,MAAMa,SAAS,GAAG,CAAC,EAAEN,MAAM,GAAGX,MAAM,CAACK,IAAI,CAAC;EAC1C,MAAMa,WAAW,GAAG,CAAC,EAAEP,MAAM,GAAGX,MAAM,CAACM,QAAQ,CAAC;EAEhD,IAAIa,MAAM;EACV,CAAC;IAAEV,MAAM;IAAEG,KAAK,EAAEO;EAAO,CAAC,GAAG,IAAAN,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAEtD,IAAIW,QAAQ;EACZ,CAAC;IAAEX,MAAM;IAAEG,KAAK,EAAEQ;EAAS,CAAC,GAAG,CAACV,OAAO,CAACW,UAAU,GAAG,KAAK,GAAGC,qBAAY,GAAGC,wBAAe,EAAEf,GAAG,EAAEC,MAAM,CAAC;EAEzG,OAAO,IAAIe,eAAM,CAAC;IAChBV,IAAI,EAAEA,IAAI;IACVC,QAAQ,EAAEA,QAAQ;IAClBE,SAAS,EAAEA,SAAS;IACpBC,WAAW,EAAEA,WAAW;IACxBE,QAAQ,EAAEJ,aAAa,GAAGS,MAAM,CAACL,QAAQ,CAAC,GAAGM,SAAS;IACtDP,MAAM,EAAEA;EACV,CAAC,EAAEV,MAAM,CAAC;AACZ;AAEO,SAASkB,UAAUA,CAACnB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACjG,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAII,gBAAS,CAAChB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACjD;AAEO,SAASoB,gBAAgBA,CAACrB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAA2B;EAC7G,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAIM,sBAAe,CAAClB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACvD;AAEO,SAASsB,cAAcA,CAACvB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAyB;EACzG,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAIQ,oBAAa,CAACpB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACrD","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import { type ParserOptions } from './stream-parser';
2
+ import { type EnvChangeToken } from './token';
3
+ import { Result } from './helpers';
4
+ declare function envChangeParser(buf: Buffer, offset: number, _options: ParserOptions): Result<EnvChangeToken | undefined>;
5
+ export default envChangeParser;
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _collation = require("../collation");
8
+ var _token = require("./token");
9
+ var _helpers = require("./helpers");
10
+ const types = {
11
+ 1: {
12
+ name: 'DATABASE',
13
+ event: 'databaseChange'
14
+ },
15
+ 2: {
16
+ name: 'LANGUAGE',
17
+ event: 'languageChange'
18
+ },
19
+ 3: {
20
+ name: 'CHARSET',
21
+ event: 'charsetChange'
22
+ },
23
+ 4: {
24
+ name: 'PACKET_SIZE',
25
+ event: 'packetSizeChange'
26
+ },
27
+ 7: {
28
+ name: 'SQL_COLLATION',
29
+ event: 'sqlCollationChange'
30
+ },
31
+ 8: {
32
+ name: 'BEGIN_TXN',
33
+ event: 'beginTransaction'
34
+ },
35
+ 9: {
36
+ name: 'COMMIT_TXN',
37
+ event: 'commitTransaction'
38
+ },
39
+ 10: {
40
+ name: 'ROLLBACK_TXN',
41
+ event: 'rollbackTransaction'
42
+ },
43
+ 13: {
44
+ name: 'DATABASE_MIRRORING_PARTNER',
45
+ event: 'partnerNode'
46
+ },
47
+ 17: {
48
+ name: 'TXN_ENDED'
49
+ },
50
+ 18: {
51
+ name: 'RESET_CONNECTION',
52
+ event: 'resetConnection'
53
+ },
54
+ 20: {
55
+ name: 'ROUTING_CHANGE',
56
+ event: 'routingChange'
57
+ }
58
+ };
59
+ function _readNewAndOldValue(buf, offset, length, type) {
60
+ switch (type.name) {
61
+ case 'DATABASE':
62
+ case 'LANGUAGE':
63
+ case 'CHARSET':
64
+ case 'PACKET_SIZE':
65
+ case 'DATABASE_MIRRORING_PARTNER':
66
+ {
67
+ let newValue;
68
+ ({
69
+ offset,
70
+ value: newValue
71
+ } = (0, _helpers.readBVarChar)(buf, offset));
72
+ let oldValue;
73
+ ({
74
+ offset,
75
+ value: oldValue
76
+ } = (0, _helpers.readBVarChar)(buf, offset));
77
+ switch (type.name) {
78
+ case 'PACKET_SIZE':
79
+ return new _helpers.Result(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset);
80
+ case 'DATABASE':
81
+ return new _helpers.Result(new _token.DatabaseEnvChangeToken(newValue, oldValue), offset);
82
+ case 'LANGUAGE':
83
+ return new _helpers.Result(new _token.LanguageEnvChangeToken(newValue, oldValue), offset);
84
+ case 'CHARSET':
85
+ return new _helpers.Result(new _token.CharsetEnvChangeToken(newValue, oldValue), offset);
86
+ case 'DATABASE_MIRRORING_PARTNER':
87
+ return new _helpers.Result(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset);
88
+ }
89
+ throw new Error('unreachable');
90
+ }
91
+ case 'SQL_COLLATION':
92
+ case 'BEGIN_TXN':
93
+ case 'COMMIT_TXN':
94
+ case 'ROLLBACK_TXN':
95
+ case 'RESET_CONNECTION':
96
+ {
97
+ let newValue;
98
+ ({
99
+ offset,
100
+ value: newValue
101
+ } = (0, _helpers.readBVarByte)(buf, offset));
102
+ let oldValue;
103
+ ({
104
+ offset,
105
+ value: oldValue
106
+ } = (0, _helpers.readBVarByte)(buf, offset));
107
+ switch (type.name) {
108
+ case 'SQL_COLLATION':
109
+ {
110
+ const newCollation = newValue.length ? _collation.Collation.fromBuffer(newValue) : undefined;
111
+ const oldCollation = oldValue.length ? _collation.Collation.fromBuffer(oldValue) : undefined;
112
+ return new _helpers.Result(new _token.CollationChangeToken(newCollation, oldCollation), offset);
113
+ }
114
+ case 'BEGIN_TXN':
115
+ return new _helpers.Result(new _token.BeginTransactionEnvChangeToken(newValue, oldValue), offset);
116
+ case 'COMMIT_TXN':
117
+ return new _helpers.Result(new _token.CommitTransactionEnvChangeToken(newValue, oldValue), offset);
118
+ case 'ROLLBACK_TXN':
119
+ return new _helpers.Result(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue), offset);
120
+ case 'RESET_CONNECTION':
121
+ return new _helpers.Result(new _token.ResetConnectionEnvChangeToken(newValue, oldValue), offset);
122
+ }
123
+ throw new Error('unreachable');
124
+ }
125
+ case 'ROUTING_CHANGE':
126
+ {
127
+ let routePacket;
128
+ ({
129
+ offset,
130
+ value: routePacket
131
+ } = (0, _helpers.readUsVarByte)(buf, offset));
132
+ let oldValue;
133
+ ({
134
+ offset,
135
+ value: oldValue
136
+ } = (0, _helpers.readUsVarByte)(buf, offset));
137
+
138
+ // Routing Change:
139
+ // Byte 1: Protocol (must be 0)
140
+ // Bytes 2-3 (USHORT): Port number
141
+ // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)
142
+ // Bytes 6-*: Server name in unicode characters
143
+ const protocol = routePacket.readUInt8(0);
144
+ if (protocol !== 0) {
145
+ throw new Error('Unknown protocol byte in routing change event');
146
+ }
147
+ const port = routePacket.readUInt16LE(1);
148
+ const serverLen = routePacket.readUInt16LE(3);
149
+ // 2 bytes per char, starting at offset 5
150
+ const server = routePacket.toString('ucs2', 5, 5 + serverLen * 2);
151
+ const newValue = {
152
+ protocol: protocol,
153
+ port: port,
154
+ server: server
155
+ };
156
+ return new _helpers.Result(new _token.RoutingEnvChangeToken(newValue, oldValue), offset);
157
+ }
158
+ default:
159
+ {
160
+ console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);
161
+
162
+ // skip unknown bytes
163
+ return new _helpers.Result(undefined, offset + length - 1);
164
+ }
165
+ }
166
+ }
167
+ function envChangeParser(buf, offset, _options) {
168
+ let tokenLength;
169
+ ({
170
+ offset,
171
+ value: tokenLength
172
+ } = (0, _helpers.readUInt16LE)(buf, offset));
173
+ if (buf.length < offset + tokenLength) {
174
+ throw new _helpers.NotEnoughDataError(offset + tokenLength);
175
+ }
176
+ let typeNumber;
177
+ ({
178
+ offset,
179
+ value: typeNumber
180
+ } = (0, _helpers.readUInt8)(buf, offset));
181
+ const type = types[typeNumber];
182
+ if (!type) {
183
+ console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);
184
+ return new _helpers.Result(undefined, offset + tokenLength - 1);
185
+ }
186
+ return _readNewAndOldValue(buf, offset, tokenLength, type);
187
+ }
188
+ var _default = exports.default = envChangeParser;
189
+ module.exports = envChangeParser;
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl90b2tlbiIsIl9oZWxwZXJzIiwidHlwZXMiLCJuYW1lIiwiZXZlbnQiLCJfcmVhZE5ld0FuZE9sZFZhbHVlIiwiYnVmIiwib2Zmc2V0IiwibGVuZ3RoIiwidHlwZSIsIm5ld1ZhbHVlIiwidmFsdWUiLCJyZWFkQlZhckNoYXIiLCJvbGRWYWx1ZSIsIlJlc3VsdCIsIlBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiIsInBhcnNlSW50IiwiRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiIsIkVycm9yIiwicmVhZEJWYXJCeXRlIiwibmV3Q29sbGF0aW9uIiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsInVuZGVmaW5lZCIsIm9sZENvbGxhdGlvbiIsIkNvbGxhdGlvbkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIiwicm91dGVQYWNrZXQiLCJyZWFkVXNWYXJCeXRlIiwicHJvdG9jb2wiLCJyZWFkVUludDgiLCJwb3J0IiwicmVhZFVJbnQxNkxFIiwic2VydmVyTGVuIiwic2VydmVyIiwidG9TdHJpbmciLCJSb3V0aW5nRW52Q2hhbmdlVG9rZW4iLCJjb25zb2xlIiwiZXJyb3IiLCJlbnZDaGFuZ2VQYXJzZXIiLCJfb3B0aW9ucyIsInRva2VuTGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidHlwZU51bWJlciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5cbmltcG9ydCB7XG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4sXG4gIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4sXG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbixcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuLFxuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4sXG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuLFxuICBSb3V0aW5nRW52Q2hhbmdlVG9rZW4sXG4gIENvbGxhdGlvbkNoYW5nZVRva2VuLFxuICB0eXBlIEVudkNoYW5nZVRva2VuXG59IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQnl0ZSwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50OCwgcmVhZFVzVmFyQnl0ZSwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3QgdHlwZXM6IHsgW2tleTogbnVtYmVyXTogeyBuYW1lOiBzdHJpbmcsIGV2ZW50Pzogc3RyaW5nIH19ID0ge1xuICAxOiB7XG4gICAgbmFtZTogJ0RBVEFCQVNFJyxcbiAgICBldmVudDogJ2RhdGFiYXNlQ2hhbmdlJ1xuICB9LFxuICAyOiB7XG4gICAgbmFtZTogJ0xBTkdVQUdFJyxcbiAgICBldmVudDogJ2xhbmd1YWdlQ2hhbmdlJ1xuICB9LFxuICAzOiB7XG4gICAgbmFtZTogJ0NIQVJTRVQnLFxuICAgIGV2ZW50OiAnY2hhcnNldENoYW5nZSdcbiAgfSxcbiAgNDoge1xuICAgIG5hbWU6ICdQQUNLRVRfU0laRScsXG4gICAgZXZlbnQ6ICdwYWNrZXRTaXplQ2hhbmdlJ1xuICB9LFxuICA3OiB7XG4gICAgbmFtZTogJ1NRTF9DT0xMQVRJT04nLFxuICAgIGV2ZW50OiAnc3FsQ29sbGF0aW9uQ2hhbmdlJ1xuICB9LFxuICA4OiB7XG4gICAgbmFtZTogJ0JFR0lOX1RYTicsXG4gICAgZXZlbnQ6ICdiZWdpblRyYW5zYWN0aW9uJ1xuICB9LFxuICA5OiB7XG4gICAgbmFtZTogJ0NPTU1JVF9UWE4nLFxuICAgIGV2ZW50OiAnY29tbWl0VHJhbnNhY3Rpb24nXG4gIH0sXG4gIDEwOiB7XG4gICAgbmFtZTogJ1JPTExCQUNLX1RYTicsXG4gICAgZXZlbnQ6ICdyb2xsYmFja1RyYW5zYWN0aW9uJ1xuICB9LFxuICAxMzoge1xuICAgIG5hbWU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUicsXG4gICAgZXZlbnQ6ICdwYXJ0bmVyTm9kZSdcbiAgfSxcbiAgMTc6IHtcbiAgICBuYW1lOiAnVFhOX0VOREVEJ1xuICB9LFxuICAxODoge1xuICAgIG5hbWU6ICdSRVNFVF9DT05ORUNUSU9OJyxcbiAgICBldmVudDogJ3Jlc2V0Q29ubmVjdGlvbidcbiAgfSxcbiAgMjA6IHtcbiAgICBuYW1lOiAnUk9VVElOR19DSEFOR0UnLFxuICAgIGV2ZW50OiAncm91dGluZ0NoYW5nZSdcbiAgfVxufTtcblxuZnVuY3Rpb24gX3JlYWROZXdBbmRPbGRWYWx1ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCB0eXBlOiB7IG5hbWU6IHN0cmluZywgZXZlbnQ/OiBzdHJpbmcgfSk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ0RBVEFCQVNFJzpcbiAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgY2FzZSAnQ0hBUlNFVCc6XG4gICAgY2FzZSAnUEFDS0VUX1NJWkUnOlxuICAgIGNhc2UgJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJzoge1xuICAgICAgbGV0IG5ld1ZhbHVlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogbmV3VmFsdWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgb2xkVmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBvbGRWYWx1ZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ1BBQ0tFVF9TSVpFJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKHBhcnNlSW50KG5ld1ZhbHVlKSwgcGFyc2VJbnQob2xkVmFsdWUpKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERhdGFiYXNlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdDSEFSU0VUJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgQ2hhcnNldEVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgY2FzZSAnU1FMX0NPTExBVElPTic6XG4gICAgY2FzZSAnQkVHSU5fVFhOJzpcbiAgICBjYXNlICdDT01NSVRfVFhOJzpcbiAgICBjYXNlICdST0xMQkFDS19UWE4nOlxuICAgIGNhc2UgJ1JFU0VUX0NPTk5FQ1RJT04nOiB7XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBuZXdWYWx1ZSB9ID0gcmVhZEJWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkQlZhckJ5dGUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnU1FMX0NPTExBVElPTic6IHtcbiAgICAgICAgICBjb25zdCBuZXdDb2xsYXRpb24gPSBuZXdWYWx1ZS5sZW5ndGggPyBDb2xsYXRpb24uZnJvbUJ1ZmZlcihuZXdWYWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3Qgb2xkQ29sbGF0aW9uID0gb2xkVmFsdWUubGVuZ3RoID8gQ29sbGF0aW9uLmZyb21CdWZmZXIob2xkVmFsdWUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IENvbGxhdGlvbkNoYW5nZVRva2VuKG5ld0NvbGxhdGlvbiwgb2xkQ29sbGF0aW9uKSwgb2Zmc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ0JFR0lOX1RYTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuXG4gICAgICAgIGNhc2UgJ0NPTU1JVF9UWE4nOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUk9MTEJBQ0tfVFhOJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUkVTRVRfQ09OTkVDVElPTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBjYXNlICdST1VUSU5HX0NIQU5HRSc6IHtcbiAgICAgIGxldCByb3V0ZVBhY2tldDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHJvdXRlUGFja2V0IH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIC8vIFJvdXRpbmcgQ2hhbmdlOlxuICAgICAgLy8gQnl0ZSAxOiBQcm90b2NvbCAobXVzdCBiZSAwKVxuICAgICAgLy8gQnl0ZXMgMi0zIChVU0hPUlQpOiBQb3J0IG51bWJlclxuICAgICAgLy8gQnl0ZXMgNC01IChVU0hPUlQpOiBMZW5ndGggb2Ygc2VydmVyIGRhdGEgaW4gdW5pY29kZSAoMmJ5dGUgY2hhcnMpXG4gICAgICAvLyBCeXRlcyA2LSo6IFNlcnZlciBuYW1lIGluIHVuaWNvZGUgY2hhcmFjdGVyc1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSByb3V0ZVBhY2tldC5yZWFkVUludDgoMCk7XG4gICAgICBpZiAocHJvdG9jb2wgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByb3RvY29sIGJ5dGUgaW4gcm91dGluZyBjaGFuZ2UgZXZlbnQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcG9ydCA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgxKTtcbiAgICAgIGNvbnN0IHNlcnZlckxlbiA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgzKTtcbiAgICAgIC8vIDIgYnl0ZXMgcGVyIGNoYXIsIHN0YXJ0aW5nIGF0IG9mZnNldCA1XG4gICAgICBjb25zdCBzZXJ2ZXIgPSByb3V0ZVBhY2tldC50b1N0cmluZygndWNzMicsIDUsIDUgKyAoc2VydmVyTGVuICogMikpO1xuXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICBzZXJ2ZXI6IHNlcnZlclxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZS5uYW1lKTtcblxuICAgICAgLy8gc2tpcCB1bmtub3duIGJ5dGVzXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCArIGxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnZDaGFuZ2VQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIHRva2VuTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyB0b2tlbkxlbmd0aCk7XG4gIH1cblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZSA9IHR5cGVzW3R5cGVOdW1iZXJdO1xuXG4gIGlmICghdHlwZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZU51bWJlcik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodW5kZWZpbmVkLCBvZmZzZXQgKyB0b2tlbkxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIF9yZWFkTmV3QW5kT2xkVmFsdWUoYnVmLCBvZmZzZXQsIHRva2VuTGVuZ3RoLCB0eXBlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW52Q2hhbmdlUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBlbnZDaGFuZ2VQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQWVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLE1BQU1HLEtBQXlELEdBQUc7RUFDaEUsQ0FBQyxFQUFFO0lBQ0RDLElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxTQUFTO0lBQ2ZDLEtBQUssRUFBRTtFQUNULENBQUM7RUFDRCxDQUFDLEVBQUU7SUFD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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-change-token-parser.js","names":["_collation","require","_token","_helpers","types","name","event","_readNewAndOldValue","buf","offset","length","type","newValue","value","readBVarChar","oldValue","Result","PacketSizeEnvChangeToken","parseInt","DatabaseEnvChangeToken","LanguageEnvChangeToken","CharsetEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","Error","readBVarByte","newCollation","Collation","fromBuffer","undefined","oldCollation","CollationChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","ResetConnectionEnvChangeToken","routePacket","readUsVarByte","protocol","readUInt8","port","readUInt16LE","serverLen","server","toString","RoutingEnvChangeToken","console","error","envChangeParser","_options","tokenLength","NotEnoughDataError","typeNumber","_default","exports","default","module"],"sources":["../../src/token/env-change-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\nimport { Collation } from '../collation';\n\nimport {\n DatabaseEnvChangeToken,\n LanguageEnvChangeToken,\n CharsetEnvChangeToken,\n PacketSizeEnvChangeToken,\n BeginTransactionEnvChangeToken,\n CommitTransactionEnvChangeToken,\n RollbackTransactionEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n ResetConnectionEnvChangeToken,\n RoutingEnvChangeToken,\n CollationChangeToken,\n type EnvChangeToken\n} from './token';\n\nimport { NotEnoughDataError, readBVarByte, readBVarChar, readUInt16LE, readUInt8, readUsVarByte, Result } from './helpers';\n\nconst types: { [key: number]: { name: string, event?: string }} = {\n 1: {\n name: 'DATABASE',\n event: 'databaseChange'\n },\n 2: {\n name: 'LANGUAGE',\n event: 'languageChange'\n },\n 3: {\n name: 'CHARSET',\n event: 'charsetChange'\n },\n 4: {\n name: 'PACKET_SIZE',\n event: 'packetSizeChange'\n },\n 7: {\n name: 'SQL_COLLATION',\n event: 'sqlCollationChange'\n },\n 8: {\n name: 'BEGIN_TXN',\n event: 'beginTransaction'\n },\n 9: {\n name: 'COMMIT_TXN',\n event: 'commitTransaction'\n },\n 10: {\n name: 'ROLLBACK_TXN',\n event: 'rollbackTransaction'\n },\n 13: {\n name: 'DATABASE_MIRRORING_PARTNER',\n event: 'partnerNode'\n },\n 17: {\n name: 'TXN_ENDED'\n },\n 18: {\n name: 'RESET_CONNECTION',\n event: 'resetConnection'\n },\n 20: {\n name: 'ROUTING_CHANGE',\n event: 'routingChange'\n }\n};\n\nfunction _readNewAndOldValue(buf: Buffer, offset: number, length: number, type: { name: string, event?: string }): Result<EnvChangeToken | undefined> {\n switch (type.name) {\n case 'DATABASE':\n case 'LANGUAGE':\n case 'CHARSET':\n case 'PACKET_SIZE':\n case 'DATABASE_MIRRORING_PARTNER': {\n let newValue;\n ({ offset, value: newValue } = readBVarChar(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readBVarChar(buf, offset));\n\n switch (type.name) {\n case 'PACKET_SIZE':\n return new Result(new PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset);\n\n case 'DATABASE':\n return new Result(new DatabaseEnvChangeToken(newValue, oldValue), offset);\n\n case 'LANGUAGE':\n return new Result(new LanguageEnvChangeToken(newValue, oldValue), offset);\n\n case 'CHARSET':\n return new Result(new CharsetEnvChangeToken(newValue, oldValue), offset);\n\n case 'DATABASE_MIRRORING_PARTNER':\n return new Result(new DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset);\n }\n\n throw new Error('unreachable');\n }\n\n case 'SQL_COLLATION':\n case 'BEGIN_TXN':\n case 'COMMIT_TXN':\n case 'ROLLBACK_TXN':\n case 'RESET_CONNECTION': {\n let newValue;\n ({ offset, value: newValue } = readBVarByte(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readBVarByte(buf, offset));\n\n switch (type.name) {\n case 'SQL_COLLATION': {\n const newCollation = newValue.length ? Collation.fromBuffer(newValue) : undefined;\n const oldCollation = oldValue.length ? Collation.fromBuffer(oldValue) : undefined;\n\n return new Result(new CollationChangeToken(newCollation, oldCollation), offset);\n }\n\n case 'BEGIN_TXN':\n return new Result(new BeginTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'COMMIT_TXN':\n return new Result(new CommitTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'ROLLBACK_TXN':\n return new Result(new RollbackTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'RESET_CONNECTION':\n return new Result(new ResetConnectionEnvChangeToken(newValue, oldValue), offset);\n }\n\n throw new Error('unreachable');\n }\n\n case 'ROUTING_CHANGE': {\n let routePacket;\n ({ offset, value: routePacket } = readUsVarByte(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readUsVarByte(buf, offset));\n\n // Routing Change:\n // Byte 1: Protocol (must be 0)\n // Bytes 2-3 (USHORT): Port number\n // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)\n // Bytes 6-*: Server name in unicode characters\n const protocol = routePacket.readUInt8(0);\n if (protocol !== 0) {\n throw new Error('Unknown protocol byte in routing change event');\n }\n\n const port = routePacket.readUInt16LE(1);\n const serverLen = routePacket.readUInt16LE(3);\n // 2 bytes per char, starting at offset 5\n const server = routePacket.toString('ucs2', 5, 5 + (serverLen * 2));\n\n const newValue = {\n protocol: protocol,\n port: port,\n server: server\n };\n\n return new Result(new RoutingEnvChangeToken(newValue, oldValue), offset);\n }\n\n default: {\n console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);\n\n // skip unknown bytes\n return new Result(undefined, offset + length - 1);\n }\n }\n}\n\nfunction envChangeParser(buf: Buffer, offset: number, _options: ParserOptions): Result<EnvChangeToken | undefined> {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n let typeNumber;\n ({ offset, value: typeNumber } = readUInt8(buf, offset));\n\n const type = types[typeNumber];\n\n if (!type) {\n console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);\n return new Result(undefined, offset + tokenLength - 1);\n }\n\n return _readNewAndOldValue(buf, offset, tokenLength, type);\n}\n\nexport default envChangeParser;\nmodule.exports = envChangeParser;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import { Result } from './helpers';
2
+ import { type ParserOptions } from './stream-parser';
3
+ import { FeatureExtAckToken } from './token';
4
+ declare function featureExtAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result<FeatureExtAckToken>;
5
+ export default featureExtAckParser;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _helpers = require("./helpers");
8
+ var _token = require("./token");
9
+ const FEATURE_ID = {
10
+ SESSIONRECOVERY: 0x01,
11
+ FEDAUTH: 0x02,
12
+ COLUMNENCRYPTION: 0x04,
13
+ GLOBALTRANSACTIONS: 0x05,
14
+ AZURESQLSUPPORT: 0x08,
15
+ UTF8_SUPPORT: 0x0A,
16
+ TERMINATOR: 0xFF
17
+ };
18
+ function featureExtAckParser(buf, offset, _options) {
19
+ let fedAuth;
20
+ let utf8Support;
21
+ while (true) {
22
+ let featureId;
23
+ ({
24
+ value: featureId,
25
+ offset
26
+ } = (0, _helpers.readUInt8)(buf, offset));
27
+ if (featureId === FEATURE_ID.TERMINATOR) {
28
+ return new _helpers.Result(new _token.FeatureExtAckToken(fedAuth, utf8Support), offset);
29
+ }
30
+ let featureAckDataLen;
31
+ ({
32
+ value: featureAckDataLen,
33
+ offset
34
+ } = (0, _helpers.readUInt32LE)(buf, offset));
35
+ if (buf.length < offset + featureAckDataLen) {
36
+ throw new _helpers.NotEnoughDataError(offset + featureAckDataLen);
37
+ }
38
+ const featureData = buf.slice(offset, offset + featureAckDataLen);
39
+ offset += featureAckDataLen;
40
+ switch (featureId) {
41
+ case FEATURE_ID.FEDAUTH:
42
+ fedAuth = featureData;
43
+ break;
44
+ case FEATURE_ID.UTF8_SUPPORT:
45
+ utf8Support = !!featureData[0];
46
+ break;
47
+ }
48
+ }
49
+ }
50
+ var _default = exports.default = featureExtAckParser;
51
+ module.exports = featureExtAckParser;
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRUFUVVJFX0lEIiwiU0VTU0lPTlJFQ09WRVJZIiwiRkVEQVVUSCIsIkNPTFVNTkVOQ1JZUFRJT04iLCJHTE9CQUxUUkFOU0FDVElPTlMiLCJBWlVSRVNRTFNVUFBPUlQiLCJVVEY4X1NVUFBPUlQiLCJURVJNSU5BVE9SIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsImJ1ZiIsIm9mZnNldCIsIl9vcHRpb25zIiwiZmVkQXV0aCIsInV0ZjhTdXBwb3J0IiwiZmVhdHVyZUlkIiwidmFsdWUiLCJyZWFkVUludDgiLCJSZXN1bHQiLCJGZWF0dXJlRXh0QWNrVG9rZW4iLCJmZWF0dXJlQWNrRGF0YUxlbiIsInJlYWRVSW50MzJMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsImZlYXR1cmVEYXRhIiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDMyTEUsIHJlYWRVSW50OCwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IEZlYXR1cmVFeHRBY2tUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5jb25zdCBGRUFUVVJFX0lEID0ge1xuICBTRVNTSU9OUkVDT1ZFUlk6IDB4MDEsXG4gIEZFREFVVEg6IDB4MDIsXG4gIENPTFVNTkVOQ1JZUFRJT046IDB4MDQsXG4gIEdMT0JBTFRSQU5TQUNUSU9OUzogMHgwNSxcbiAgQVpVUkVTUUxTVVBQT1JUOiAweDA4LFxuICBVVEY4X1NVUFBPUlQ6IDB4MEEsXG4gIFRFUk1JTkFUT1I6IDB4RkZcbn07XG5cbmZ1bmN0aW9uIGZlYXR1cmVFeHRBY2tQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxGZWF0dXJlRXh0QWNrVG9rZW4+IHtcbiAgbGV0IGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgbGV0IHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbGV0IGZlYXR1cmVJZDtcbiAgICAoeyB2YWx1ZTogZmVhdHVyZUlkLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGZlYXR1cmVJZCA9PT0gRkVBVFVSRV9JRC5URVJNSU5BVE9SKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgRmVhdHVyZUV4dEFja1Rva2VuKGZlZEF1dGgsIHV0ZjhTdXBwb3J0KSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBsZXQgZmVhdHVyZUFja0RhdGFMZW47XG4gICAgKHsgdmFsdWU6IGZlYXR1cmVBY2tEYXRhTGVuLCBvZmZzZXQgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbikge1xuICAgICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgfVxuXG4gICAgY29uc3QgZmVhdHVyZURhdGEgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgb2Zmc2V0ICs9IGZlYXR1cmVBY2tEYXRhTGVuO1xuXG4gICAgc3dpdGNoIChmZWF0dXJlSWQpIHtcbiAgICAgIGNhc2UgRkVBVFVSRV9JRC5GRURBVVRIOlxuICAgICAgICBmZWRBdXRoID0gZmVhdHVyZURhdGE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGRUFUVVJFX0lELlVURjhfU1VQUE9SVDpcbiAgICAgICAgdXRmOFN1cHBvcnQgPSAhIWZlYXR1cmVEYXRhWzBdO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZmVhdHVyZUV4dEFja1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVhdHVyZUV4dEFja1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsTUFBTUUsVUFBVSxHQUFHO0VBQ2pCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsa0JBQWtCLEVBQUUsSUFBSTtFQUN4QkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxVQUFVLEVBQUU7QUFDZCxDQUFDO0FBRUQsU0FBU0MsbUJBQW1CQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBRUMsUUFBdUIsRUFBOEI7RUFDN0csSUFBSUMsT0FBMkI7RUFDL0IsSUFBSUMsV0FBZ0M7RUFFcEMsT0FBTyxJQUFJLEVBQUU7SUFDWCxJQUFJQyxTQUFTO0lBQ2IsQ0FBQztNQUFFQyxLQUFLLEVBQUVELFNBQVM7TUFBRUo7SUFBTyxDQUFDLEdBQUcsSUFBQU0sa0JBQVMsRUFBQ1AsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFdEQsSUFBSUksU0FBUyxLQUFLZCxVQUFVLENBQUNPLFVBQVUsRUFBRTtNQUN2QyxPQUFPLElBQUlVLGVBQU0sQ0FBQyxJQUFJQyx5QkFBa0IsQ0FBQ04sT0FBTyxFQUFFQyxXQUFXLENBQUMsRUFBRUgsTUFBTSxDQUFDO0lBQ3pFO0lBRUEsSUFBSVMsaUJBQWlCO0lBQ3JCLENBQUM7TUFBRUosS0FBSyxFQUFFSSxpQkFBaUI7TUFBRVQ7SUFBTyxDQUFDLEdBQUcsSUFBQVUscUJBQVksRUFBQ1gsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFakUsSUFBSUQsR0FBRyxDQUFDWSxNQUFNLEdBQUdYLE1BQU0sR0FBR1MsaUJBQWlCLEVBQUU7TUFDM0MsTUFBTSxJQUFJRywyQkFBa0IsQ0FBQ1osTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUMxRDtJQUVBLE1BQU1JLFdBQVcsR0FBR2QsR0FBRyxDQUFDZSxLQUFLLENBQUNkLE1BQU0sRUFBRUEsTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUNqRVQsTUFBTSxJQUFJUyxpQkFBaUI7SUFFM0IsUUFBUUwsU0FBUztNQUNmLEtBQUtkLFVBQVUsQ0FBQ0UsT0FBTztRQUNyQlUsT0FBTyxHQUFHVyxXQUFXO1FBQ3JCO01BQ0YsS0FBS3ZCLFVBQVUsQ0FBQ00sWUFBWTtRQUMxQk8sV0FBVyxHQUFHLENBQUMsQ0FBQ1UsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5QjtJQUNKO0VBQ0Y7QUFDRjtBQUFDLElBQUFFLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWNuQixtQkFBbUI7QUFDbENvQixNQUFNLENBQUNGLE9BQU8sR0FBR2xCLG1CQUFtQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-ext-ack-parser.js","names":["_helpers","require","_token","FEATURE_ID","SESSIONRECOVERY","FEDAUTH","COLUMNENCRYPTION","GLOBALTRANSACTIONS","AZURESQLSUPPORT","UTF8_SUPPORT","TERMINATOR","featureExtAckParser","buf","offset","_options","fedAuth","utf8Support","featureId","value","readUInt8","Result","FeatureExtAckToken","featureAckDataLen","readUInt32LE","length","NotEnoughDataError","featureData","slice","_default","exports","default","module"],"sources":["../../src/token/feature-ext-ack-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt32LE, readUInt8, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\n\nimport { FeatureExtAckToken } from './token';\n\nconst FEATURE_ID = {\n SESSIONRECOVERY: 0x01,\n FEDAUTH: 0x02,\n COLUMNENCRYPTION: 0x04,\n GLOBALTRANSACTIONS: 0x05,\n AZURESQLSUPPORT: 0x08,\n UTF8_SUPPORT: 0x0A,\n TERMINATOR: 0xFF\n};\n\nfunction featureExtAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result<FeatureExtAckToken> {\n let fedAuth: Buffer | undefined;\n let utf8Support: boolean | undefined;\n\n while (true) {\n let featureId;\n ({ value: featureId, offset } = readUInt8(buf, offset));\n\n if (featureId === FEATURE_ID.TERMINATOR) {\n return new Result(new FeatureExtAckToken(fedAuth, utf8Support), offset);\n }\n\n let featureAckDataLen;\n ({ value: featureAckDataLen, offset } = readUInt32LE(buf, offset));\n\n if (buf.length < offset + featureAckDataLen) {\n throw new NotEnoughDataError(offset + featureAckDataLen);\n }\n\n const featureData = buf.slice(offset, offset + featureAckDataLen);\n offset += featureAckDataLen;\n\n switch (featureId) {\n case FEATURE_ID.FEDAUTH:\n fedAuth = featureData;\n break;\n case FEATURE_ID.UTF8_SUPPORT:\n utf8Support = !!featureData[0];\n break;\n }\n }\n}\n\nexport default featureExtAckParser;\nmodule.exports = featureExtAckParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAG;EACjBC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,IAAI;EACbC,gBAAgB,EAAE,IAAI;EACtBC,kBAAkB,EAAE,IAAI;EACxBC,eAAe,EAAE,IAAI;EACrBC,YAAY,EAAE,IAAI;EAClBC,UAAU,EAAE;AACd,CAAC;AAED,SAASC,mBAAmBA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAA8B;EAC7G,IAAIC,OAA2B;EAC/B,IAAIC,WAAgC;EAEpC,OAAO,IAAI,EAAE;IACX,IAAIC,SAAS;IACb,CAAC;MAAEC,KAAK,EAAED,SAAS;MAAEJ;IAAO,CAAC,GAAG,IAAAM,kBAAS,EAACP,GAAG,EAAEC,MAAM,CAAC;IAEtD,IAAII,SAAS,KAAKd,UAAU,CAACO,UAAU,EAAE;MACvC,OAAO,IAAIU,eAAM,CAAC,IAAIC,yBAAkB,CAACN,OAAO,EAAEC,WAAW,CAAC,EAAEH,MAAM,CAAC;IACzE;IAEA,IAAIS,iBAAiB;IACrB,CAAC;MAAEJ,KAAK,EAAEI,iBAAiB;MAAET;IAAO,CAAC,GAAG,IAAAU,qBAAY,EAACX,GAAG,EAAEC,MAAM,CAAC;IAEjE,IAAID,GAAG,CAACY,MAAM,GAAGX,MAAM,GAAGS,iBAAiB,EAAE;MAC3C,MAAM,IAAIG,2BAAkB,CAACZ,MAAM,GAAGS,iBAAiB,CAAC;IAC1D;IAEA,MAAMI,WAAW,GAAGd,GAAG,CAACe,KAAK,CAACd,MAAM,EAAEA,MAAM,GAAGS,iBAAiB,CAAC;IACjET,MAAM,IAAIS,iBAAiB;IAE3B,QAAQL,SAAS;MACf,KAAKd,UAAU,CAACE,OAAO;QACrBU,OAAO,GAAGW,WAAW;QACrB;MACF,KAAKvB,UAAU,CAACM,YAAY;QAC1BO,WAAW,GAAG,CAAC,CAACU,WAAW,CAAC,CAAC,CAAC;QAC9B;IACJ;EACF;AACF;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcnB,mBAAmB;AAClCoB,MAAM,CAACF,OAAO,GAAGlB,mBAAmB","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import { Result } from './helpers';
2
+ import { type ParserOptions } from './stream-parser';
3
+ import { FedAuthInfoToken } from './token';
4
+ declare function fedAuthInfoParser(buf: Buffer, offset: number, _options: ParserOptions): Result<FedAuthInfoToken>;
5
+ export default fedAuthInfoParser;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _helpers = require("./helpers");
8
+ var _token = require("./token");
9
+ const FEDAUTHINFOID = {
10
+ STSURL: 0x01,
11
+ SPN: 0x02
12
+ };
13
+ function readFedAuthInfo(data) {
14
+ let offset = 0;
15
+ let spn, stsurl;
16
+ const countOfInfoIDs = data.readUInt32LE(offset);
17
+ offset += 4;
18
+ for (let i = 0; i < countOfInfoIDs; i++) {
19
+ const fedauthInfoID = data.readUInt8(offset);
20
+ offset += 1;
21
+ const fedAuthInfoDataLen = data.readUInt32LE(offset);
22
+ offset += 4;
23
+ const fedAuthInfoDataOffset = data.readUInt32LE(offset);
24
+ offset += 4;
25
+ switch (fedauthInfoID) {
26
+ case FEDAUTHINFOID.SPN:
27
+ spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
28
+ break;
29
+ case FEDAUTHINFOID.STSURL:
30
+ stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
31
+ break;
32
+
33
+ // ignoring unknown fedauthinfo options
34
+ default:
35
+ break;
36
+ }
37
+ }
38
+ return {
39
+ spn,
40
+ stsurl
41
+ };
42
+ }
43
+ function fedAuthInfoParser(buf, offset, _options) {
44
+ let tokenLength;
45
+ ({
46
+ offset,
47
+ value: tokenLength
48
+ } = (0, _helpers.readUInt32LE)(buf, offset));
49
+ if (buf.length < offset + tokenLength) {
50
+ throw new _helpers.NotEnoughDataError(offset + tokenLength);
51
+ }
52
+ const data = buf.slice(offset, offset + tokenLength);
53
+ offset += tokenLength;
54
+ const {
55
+ spn,
56
+ stsurl
57
+ } = readFedAuthInfo(data);
58
+ return new _helpers.Result(new _token.FedAuthInfoToken(spn, stsurl), offset);
59
+ }
60
+ var _default = exports.default = fedAuthInfoParser;
61
+ module.exports = fedAuthInfoParser;
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRURBVVRISU5GT0lEIiwiU1RTVVJMIiwiU1BOIiwicmVhZEZlZEF1dGhJbmZvIiwiZGF0YSIsIm9mZnNldCIsInNwbiIsInN0c3VybCIsImNvdW50T2ZJbmZvSURzIiwicmVhZFVJbnQzMkxFIiwiaSIsImZlZGF1dGhJbmZvSUQiLCJyZWFkVUludDgiLCJmZWRBdXRoSW5mb0RhdGFMZW4iLCJmZWRBdXRoSW5mb0RhdGFPZmZzZXQiLCJ0b1N0cmluZyIsImZlZEF1dGhJbmZvUGFyc2VyIiwiYnVmIiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwic2xpY2UiLCJSZXN1bHQiLCJGZWRBdXRoSW5mb1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9mZWRhdXRoLWluZm8tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZFVJbnQzMkxFLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IEZlZEF1dGhJbmZvVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuY29uc3QgRkVEQVVUSElORk9JRCA9IHtcbiAgU1RTVVJMOiAweDAxLFxuICBTUE46IDB4MDJcbn07XG5cbmZ1bmN0aW9uIHJlYWRGZWRBdXRoSW5mbyhkYXRhOiBCdWZmZXIpOiB7IHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCBzcG4sIHN0c3VybDtcblxuICBjb25zdCBjb3VudE9mSW5mb0lEcyA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIG9mZnNldCArPSA0O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRPZkluZm9JRHM7IGkrKykge1xuICAgIGNvbnN0IGZlZGF1dGhJbmZvSUQgPSBkYXRhLnJlYWRVSW50OChvZmZzZXQpO1xuICAgIG9mZnNldCArPSAxO1xuXG4gICAgY29uc3QgZmVkQXV0aEluZm9EYXRhTGVuID0gZGF0YS5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gNDtcblxuICAgIGNvbnN0IGZlZEF1dGhJbmZvRGF0YU9mZnNldCA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IDQ7XG5cbiAgICBzd2l0Y2ggKGZlZGF1dGhJbmZvSUQpIHtcbiAgICAgIGNhc2UgRkVEQVVUSElORk9JRC5TUE46XG4gICAgICAgIHNwbiA9IGRhdGEudG9TdHJpbmcoJ3VjczInLCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCArIGZlZEF1dGhJbmZvRGF0YUxlbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEZFREFVVEhJTkZPSUQuU1RTVVJMOlxuICAgICAgICBzdHN1cmwgPSBkYXRhLnRvU3RyaW5nKCd1Y3MyJywgZmVkQXV0aEluZm9EYXRhT2Zmc2V0LCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQgKyBmZWRBdXRoSW5mb0RhdGFMZW4pO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gaWdub3JpbmcgdW5rbm93biBmZWRhdXRoaW5mbyBvcHRpb25zXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzcG4sIHN0c3VybCB9O1xufVxuXG5mdW5jdGlvbiBmZWRBdXRoSW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PEZlZEF1dGhJbmZvVG9rZW4+IHtcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRva2VuTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IHRva2VuTGVuZ3RoO1xuXG4gIGNvbnN0IHsgc3BuLCBzdHN1cmwgfSA9IHJlYWRGZWRBdXRoSW5mbyhkYXRhKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEZlZEF1dGhJbmZvVG9rZW4oc3BuLCBzdHN1cmwpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWRBdXRoSW5mb1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVkQXV0aEluZm9QYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLE1BQU1FLGFBQWEsR0FBRztFQUNwQkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVELFNBQVNDLGVBQWVBLENBQUNDLElBQVksRUFBMkQ7RUFDOUYsSUFBSUMsTUFBTSxHQUFHLENBQUM7RUFDZCxJQUFJQyxHQUFHLEVBQUVDLE1BQU07RUFFZixNQUFNQyxjQUFjLEdBQUdKLElBQUksQ0FBQ0ssWUFBWSxDQUFDSixNQUFNLENBQUM7RUFDaERBLE1BQU0sSUFBSSxDQUFDO0VBRVgsS0FBSyxJQUFJSyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLGNBQWMsRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsTUFBTUMsYUFBYSxHQUFHUCxJQUFJLENBQUNRLFNBQVMsQ0FBQ1AsTUFBTSxDQUFDO0lBQzVDQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1RLGtCQUFrQixHQUFHVCxJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3BEQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1TLHFCQUFxQixHQUFHVixJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3ZEQSxNQUFNLElBQUksQ0FBQztJQUVYLFFBQVFNLGFBQWE7TUFDbkIsS0FBS1gsYUFBYSxDQUFDRSxHQUFHO1FBQ3BCSSxHQUFHLEdBQUdGLElBQUksQ0FBQ1csUUFBUSxDQUFDLE1BQU0sRUFBRUQscUJBQXFCLEVBQUVBLHFCQUFxQixHQUFHRCxrQkFBa0IsQ0FBQztRQUM5RjtNQUVGLEtBQUtiLGFBQWEsQ0FBQ0MsTUFBTTtRQUN2Qk0sTUFBTSxHQUFHSCxJQUFJLENBQUNXLFFBQVEsQ0FBQyxNQUFNLEVBQUVELHFCQUFxQixFQUFFQSxxQkFBcUIsR0FBR0Qsa0JBQWtCLENBQUM7UUFDakc7O01BRUY7TUFDQTtRQUNFO0lBQ0o7RUFDRjtFQUVBLE9BQU87SUFBRVAsR0FBRztJQUFFQztFQUFPLENBQUM7QUFDeEI7QUFFQSxTQUFTUyxpQkFBaUJBLENBQUNDLEdBQVcsRUFBRVosTUFBYyxFQUFFYSxRQUF1QixFQUE0QjtFQUN6RyxJQUFJQyxXQUFXO0VBQ2YsQ0FBQztJQUFFZCxNQUFNO0lBQUVlLEtBQUssRUFBRUQ7RUFBWSxDQUFDLEdBQUcsSUFBQVYscUJBQVksRUFBQ1EsR0FBRyxFQUFFWixNQUFNLENBQUM7RUFFM0QsSUFBSVksR0FBRyxDQUFDSSxNQUFNLEdBQUdoQixNQUFNLEdBQUdjLFdBQVcsRUFBRTtJQUNyQyxNQUFNLElBQUlHLDJCQUFrQixDQUFDakIsTUFBTSxHQUFHYyxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNZixJQUFJLEdBQUdhLEdBQUcsQ0FBQ00sS0FBSyxDQUFDbEIsTUFBTSxFQUFFQSxNQUFNLEdBQUdjLFdBQVcsQ0FBQztFQUNwRGQsTUFBTSxJQUFJYyxXQUFXO0VBRXJCLE1BQU07SUFBRWIsR0FBRztJQUFFQztFQUFPLENBQUMsR0FBR0osZUFBZSxDQUFDQyxJQUFJLENBQUM7RUFDN0MsT0FBTyxJQUFJb0IsZUFBTSxDQUFDLElBQUlDLHVCQUFnQixDQUFDbkIsR0FBRyxFQUFFQyxNQUFNLENBQUMsRUFBRUYsTUFBTSxDQUFDO0FBQzlEO0FBQUMsSUFBQXFCLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWNaLGlCQUFpQjtBQUNoQ2EsTUFBTSxDQUFDRixPQUFPLEdBQUdYLGlCQUFpQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fedauth-info-parser.js","names":["_helpers","require","_token","FEDAUTHINFOID","STSURL","SPN","readFedAuthInfo","data","offset","spn","stsurl","countOfInfoIDs","readUInt32LE","i","fedauthInfoID","readUInt8","fedAuthInfoDataLen","fedAuthInfoDataOffset","toString","fedAuthInfoParser","buf","_options","tokenLength","value","length","NotEnoughDataError","slice","Result","FedAuthInfoToken","_default","exports","default","module"],"sources":["../../src/token/fedauth-info-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt32LE, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\nimport { FedAuthInfoToken } from './token';\n\nconst FEDAUTHINFOID = {\n STSURL: 0x01,\n SPN: 0x02\n};\n\nfunction readFedAuthInfo(data: Buffer): { spn: string | undefined, stsurl: string | undefined } {\n let offset = 0;\n let spn, stsurl;\n\n const countOfInfoIDs = data.readUInt32LE(offset);\n offset += 4;\n\n for (let i = 0; i < countOfInfoIDs; i++) {\n const fedauthInfoID = data.readUInt8(offset);\n offset += 1;\n\n const fedAuthInfoDataLen = data.readUInt32LE(offset);\n offset += 4;\n\n const fedAuthInfoDataOffset = data.readUInt32LE(offset);\n offset += 4;\n\n switch (fedauthInfoID) {\n case FEDAUTHINFOID.SPN:\n spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n case FEDAUTHINFOID.STSURL:\n stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n // ignoring unknown fedauthinfo options\n default:\n break;\n }\n }\n\n return { spn, stsurl };\n}\n\nfunction fedAuthInfoParser(buf: Buffer, offset: number, _options: ParserOptions): Result<FedAuthInfoToken> {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt32LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n const data = buf.slice(offset, offset + tokenLength);\n offset += tokenLength;\n\n const { spn, stsurl } = readFedAuthInfo(data);\n return new Result(new FedAuthInfoToken(spn, stsurl), offset);\n}\n\nexport default fedAuthInfoParser;\nmodule.exports = fedAuthInfoParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,aAAa,GAAG;EACpBC,MAAM,EAAE,IAAI;EACZC,GAAG,EAAE;AACP,CAAC;AAED,SAASC,eAAeA,CAACC,IAAY,EAA2D;EAC9F,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,GAAG,EAAEC,MAAM;EAEf,MAAMC,cAAc,GAAGJ,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;EAChDA,MAAM,IAAI,CAAC;EAEX,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,cAAc,EAAEE,CAAC,EAAE,EAAE;IACvC,MAAMC,aAAa,GAAGP,IAAI,CAACQ,SAAS,CAACP,MAAM,CAAC;IAC5CA,MAAM,IAAI,CAAC;IAEX,MAAMQ,kBAAkB,GAAGT,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;IACpDA,MAAM,IAAI,CAAC;IAEX,MAAMS,qBAAqB,GAAGV,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;IACvDA,MAAM,IAAI,CAAC;IAEX,QAAQM,aAAa;MACnB,KAAKX,aAAa,CAACE,GAAG;QACpBI,GAAG,GAAGF,IAAI,CAACW,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;QAC9F;MAEF,KAAKb,aAAa,CAACC,MAAM;QACvBM,MAAM,GAAGH,IAAI,CAACW,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;QACjG;;MAEF;MACA;QACE;IACJ;EACF;EAEA,OAAO;IAAEP,GAAG;IAAEC;EAAO,CAAC;AACxB;AAEA,SAASS,iBAAiBA,CAACC,GAAW,EAAEZ,MAAc,EAAEa,QAAuB,EAA4B;EACzG,IAAIC,WAAW;EACf,CAAC;IAAEd,MAAM;IAAEe,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAV,qBAAY,EAACQ,GAAG,EAAEZ,MAAM,CAAC;EAE3D,IAAIY,GAAG,CAACI,MAAM,GAAGhB,MAAM,GAAGc,WAAW,EAAE;IACrC,MAAM,IAAIG,2BAAkB,CAACjB,MAAM,GAAGc,WAAW,CAAC;EACpD;EAEA,MAAMf,IAAI,GAAGa,GAAG,CAACM,KAAK,CAAClB,MAAM,EAAEA,MAAM,GAAGc,WAAW,CAAC;EACpDd,MAAM,IAAIc,WAAW;EAErB,MAAM;IAAEb,GAAG;IAAEC;EAAO,CAAC,GAAGJ,eAAe,CAACC,IAAI,CAAC;EAC7C,OAAO,IAAIoB,eAAM,CAAC,IAAIC,uBAAgB,CAACnB,GAAG,EAAEC,MAAM,CAAC,EAAEF,MAAM,CAAC;AAC9D;AAAC,IAAAqB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcZ,iBAAiB;AAChCa,MAAM,CAACF,OAAO,GAAGX,iBAAiB","ignoreList":[]}
@@ -0,0 +1,136 @@
1
+ import Connection from '../connection';
2
+ import Request from '../request';
3
+ import { RequestError } from '../errors';
4
+ import { BeginTransactionEnvChangeToken, CharsetEnvChangeToken, CollationChangeToken, ColMetadataToken, CommitTransactionEnvChangeToken, DatabaseEnvChangeToken, DatabaseMirroringPartnerEnvChangeToken, DoneInProcToken, DoneProcToken, DoneToken, ErrorMessageToken, FeatureExtAckToken, FedAuthInfoToken, InfoMessageToken, LanguageEnvChangeToken, LoginAckToken, NBCRowToken, OrderToken, PacketSizeEnvChangeToken, ResetConnectionEnvChangeToken, ReturnStatusToken, ReturnValueToken, RollbackTransactionEnvChangeToken, RoutingEnvChangeToken, RowToken, SSPIToken, Token } from './token';
5
+ import BulkLoad from '../bulk-load';
6
+ export declare class UnexpectedTokenError extends Error {
7
+ constructor(handler: TokenHandler, token: Token);
8
+ }
9
+ export declare class TokenHandler {
10
+ onInfoMessage(token: InfoMessageToken): void;
11
+ onErrorMessage(token: ErrorMessageToken): void;
12
+ onSSPI(token: SSPIToken): void;
13
+ onDatabaseChange(token: DatabaseEnvChangeToken): void;
14
+ onLanguageChange(token: LanguageEnvChangeToken): void;
15
+ onCharsetChange(token: CharsetEnvChangeToken): void;
16
+ onSqlCollationChange(token: CollationChangeToken): void;
17
+ onRoutingChange(token: RoutingEnvChangeToken): void;
18
+ onPacketSizeChange(token: PacketSizeEnvChangeToken): void;
19
+ onResetConnection(token: ResetConnectionEnvChangeToken): void;
20
+ onBeginTransaction(token: BeginTransactionEnvChangeToken): void;
21
+ onCommitTransaction(token: CommitTransactionEnvChangeToken): void;
22
+ onRollbackTransaction(token: RollbackTransactionEnvChangeToken): void;
23
+ onFedAuthInfo(token: FedAuthInfoToken): void;
24
+ onFeatureExtAck(token: FeatureExtAckToken): void;
25
+ onLoginAck(token: LoginAckToken): void;
26
+ onColMetadata(token: ColMetadataToken): void;
27
+ onOrder(token: OrderToken): void;
28
+ onRow(token: RowToken | NBCRowToken): void;
29
+ onReturnStatus(token: ReturnStatusToken): void;
30
+ onReturnValue(token: ReturnValueToken): void;
31
+ onDoneProc(token: DoneProcToken): void;
32
+ onDoneInProc(token: DoneInProcToken): void;
33
+ onDone(token: DoneToken): void;
34
+ onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken): void;
35
+ }
36
+ /**
37
+ * A handler for tokens received in the response message to the initial SQL Batch request
38
+ * that sets up different connection settings.
39
+ */
40
+ export declare class InitialSqlTokenHandler extends TokenHandler {
41
+ connection: Connection;
42
+ constructor(connection: Connection);
43
+ onInfoMessage(token: InfoMessageToken): void;
44
+ onErrorMessage(token: ErrorMessageToken): void;
45
+ onDatabaseChange(token: DatabaseEnvChangeToken): void;
46
+ onLanguageChange(token: LanguageEnvChangeToken): void;
47
+ onCharsetChange(token: CharsetEnvChangeToken): void;
48
+ onSqlCollationChange(token: CollationChangeToken): void;
49
+ onPacketSizeChange(token: PacketSizeEnvChangeToken): void;
50
+ onBeginTransaction(token: BeginTransactionEnvChangeToken): void;
51
+ onCommitTransaction(token: CommitTransactionEnvChangeToken): void;
52
+ onRollbackTransaction(token: RollbackTransactionEnvChangeToken): void;
53
+ onColMetadata(token: ColMetadataToken): void;
54
+ onOrder(token: OrderToken): void;
55
+ onRow(token: RowToken | NBCRowToken): void;
56
+ onReturnStatus(token: ReturnStatusToken): void;
57
+ onReturnValue(token: ReturnValueToken): void;
58
+ onDoneProc(token: DoneProcToken): void;
59
+ onDoneInProc(token: DoneInProcToken): void;
60
+ onDone(token: DoneToken): void;
61
+ onResetConnection(token: ResetConnectionEnvChangeToken): void;
62
+ }
63
+ /**
64
+ * A handler for tokens received in the response message to a Login7 message.
65
+ */
66
+ export declare class Login7TokenHandler extends TokenHandler {
67
+ connection: Connection;
68
+ fedAuthInfoToken: FedAuthInfoToken | undefined;
69
+ routingData: {
70
+ server: string;
71
+ port: number;
72
+ instance: string;
73
+ } | undefined;
74
+ loginAckReceived: boolean;
75
+ constructor(connection: Connection);
76
+ onInfoMessage(token: InfoMessageToken): void;
77
+ onErrorMessage(token: ErrorMessageToken): void;
78
+ onSSPI(token: SSPIToken): void;
79
+ onDatabaseChange(token: DatabaseEnvChangeToken): void;
80
+ onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken): void;
81
+ onLanguageChange(token: LanguageEnvChangeToken): void;
82
+ onCharsetChange(token: CharsetEnvChangeToken): void;
83
+ onSqlCollationChange(token: CollationChangeToken): void;
84
+ onFedAuthInfo(token: FedAuthInfoToken): void;
85
+ onFeatureExtAck(token: FeatureExtAckToken): void;
86
+ onLoginAck(token: LoginAckToken): void;
87
+ onRoutingChange(token: RoutingEnvChangeToken): void;
88
+ onDoneInProc(token: DoneInProcToken): void;
89
+ onDone(token: DoneToken): void;
90
+ onPacketSizeChange(token: PacketSizeEnvChangeToken): void;
91
+ }
92
+ /**
93
+ * A handler for tokens received in the response message to a RPC Request,
94
+ * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request.
95
+ */
96
+ export declare class RequestTokenHandler extends TokenHandler {
97
+ connection: Connection;
98
+ request: Request | BulkLoad;
99
+ errors: RequestError[];
100
+ constructor(connection: Connection, request: Request | BulkLoad);
101
+ onInfoMessage(token: InfoMessageToken): void;
102
+ onErrorMessage(token: ErrorMessageToken): void;
103
+ onDatabaseChange(token: DatabaseEnvChangeToken): void;
104
+ onLanguageChange(token: LanguageEnvChangeToken): void;
105
+ onCharsetChange(token: CharsetEnvChangeToken): void;
106
+ onSqlCollationChange(token: CollationChangeToken): void;
107
+ onPacketSizeChange(token: PacketSizeEnvChangeToken): void;
108
+ onBeginTransaction(token: BeginTransactionEnvChangeToken): void;
109
+ onCommitTransaction(token: CommitTransactionEnvChangeToken): void;
110
+ onRollbackTransaction(token: RollbackTransactionEnvChangeToken): void;
111
+ onColMetadata(token: ColMetadataToken): void;
112
+ onOrder(token: OrderToken): void;
113
+ onRow(token: RowToken | NBCRowToken): void;
114
+ onReturnStatus(token: ReturnStatusToken): void;
115
+ onReturnValue(token: ReturnValueToken): void;
116
+ onDoneProc(token: DoneProcToken): void;
117
+ onDoneInProc(token: DoneInProcToken): void;
118
+ onDone(token: DoneToken): void;
119
+ onResetConnection(token: ResetConnectionEnvChangeToken): void;
120
+ }
121
+ /**
122
+ * A handler for the attention acknowledgement message.
123
+ *
124
+ * This message only contains a `DONE` token that acknowledges
125
+ * that the attention message was received by the server.
126
+ */
127
+ export declare class AttentionTokenHandler extends TokenHandler {
128
+ connection: Connection;
129
+ request: Request | BulkLoad;
130
+ /**
131
+ * Returns whether an attention acknowledgement was received.
132
+ */
133
+ attentionReceived: boolean;
134
+ constructor(connection: Connection, request: Request | BulkLoad);
135
+ onDone(token: DoneToken): void;
136
+ }