@warlock.js/notifications 5.1.0 → 5.2.2

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 (243) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +8 -0
  3. package/cjs/{channel_api-CH3DxhRU.cjs → channel_api-ChOeNKM1.cjs} +42 -42
  4. package/cjs/channel_api-ChOeNKM1.cjs.map +1 -0
  5. package/cjs/index.cjs +1 -1
  6. package/cjs/index.cjs.map +1 -1
  7. package/cjs/rabbitmq-driver-Drn1T40o.cjs +3 -0
  8. package/cjs/{src-Cus6pYPC.cjs → src-Dy5nwVcs.cjs} +57 -29
  9. package/cjs/src-Dy5nwVcs.cjs.map +1 -0
  10. package/esm/channels/database-channel.d.mts.map +1 -1
  11. package/esm/config.d.mts.map +1 -1
  12. package/esm/dispatch/define-channel.d.mts.map +1 -1
  13. package/esm/dispatch/define-notification.d.mts.map +1 -1
  14. package/esm/dispatch/define-notification.mjs.map +1 -1
  15. package/esm/dispatch/notifications-event-bus.mjs.map +1 -1
  16. package/esm/dispatch/notify.mjs.map +1 -1
  17. package/esm/errors.d.mts.map +1 -1
  18. package/esm/herald/src/communicators/broker.mjs.map +1 -1
  19. package/esm/herald/src/drivers/rabbitmq/rabbitmq-channel.mjs.map +1 -1
  20. package/esm/herald/src/drivers/rabbitmq/rabbitmq-driver.mjs +1 -1
  21. package/esm/herald/src/drivers/rabbitmq/rabbitmq-driver.mjs.map +1 -1
  22. package/esm/herald/src/message-managers/event-consumer.mjs.map +1 -1
  23. package/esm/herald/src/message-managers/event-message.mjs.map +1 -1
  24. package/esm/herald/src/message-managers/prepare-consumer-subscription.mjs.map +1 -1
  25. package/esm/herald/src/use-case-broadcast.mjs.map +1 -1
  26. package/esm/herald/src/utils/connect-to-broker.mjs.map +1 -1
  27. package/esm/in-app/base-notifications-repository.d.mts.map +1 -1
  28. package/esm/in-app/database-notification.d.mts.map +1 -1
  29. package/esm/in-app/in-app.d.mts.map +1 -1
  30. package/esm/migration/notification-columns.mjs.map +1 -1
  31. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/Random/_internal.mjs +6 -0
  32. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/Random/_internal.mjs.map +1 -0
  33. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/mixed/clone/clone.mjs +1 -1
  34. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/mixed/clone/clone.mjs.map +1 -0
  35. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/number/round.mjs +1 -1
  36. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/number/round.mjs.map +1 -0
  37. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/object/except.mjs +1 -1
  38. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/object/except.mjs.map +1 -0
  39. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/object/get.mjs +1 -1
  40. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/object/get.mjs.map +1 -0
  41. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/object/omit.mjs +1 -1
  42. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/object/omit.mjs.map +1 -0
  43. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/object/unset.mjs +1 -1
  44. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/object/unset.mjs.map +1 -0
  45. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/capitalize.mjs +1 -1
  46. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/capitalize.mjs.map +1 -0
  47. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/ltrim.mjs +1 -1
  48. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/ltrim.mjs.map +1 -0
  49. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/readMoreChars.mjs +1 -1
  50. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/readMoreChars.mjs.map +1 -0
  51. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/rtrim.mjs +1 -1
  52. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/rtrim.mjs.map +1 -0
  53. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/toCamelCase.mjs +1 -1
  54. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/toCamelCase.mjs.map +1 -0
  55. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/toKebabCase.mjs +1 -1
  56. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/toKebabCase.mjs.map +1 -0
  57. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/toSnakeCase.mjs +1 -1
  58. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/toSnakeCase.mjs.map +1 -0
  59. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/toStudlyCase.mjs +1 -1
  60. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/toStudlyCase.mjs.map +1 -0
  61. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/trim.mjs +1 -1
  62. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/trim.mjs.map +1 -0
  63. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/ucfirst.mjs +1 -1
  64. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/ucfirst.mjs.map +1 -0
  65. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/string/words.mjs +1 -1
  66. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/string/words.mjs.map +1 -0
  67. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/utils/escapeRegex.mjs +1 -1
  68. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/utils/escapeRegex.mjs.map +1 -0
  69. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/utils/lazy.mjs +1 -1
  70. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/utils/lazy.mjs.map +1 -0
  71. package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/utils/tap.mjs +1 -1
  72. package/esm/node_modules/.pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez/reinforcements/esm/utils/tap.mjs.map +1 -0
  73. package/esm/node_modules/{@mongez → .pnpm/@mongez_supportive-is@2.1.4/node_modules/@mongez}/supportive-is/esm/index.mjs +1 -1
  74. package/esm/node_modules/.pnpm/@mongez_supportive-is@2.1.4/node_modules/@mongez/supportive-is/esm/index.mjs.map +1 -0
  75. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/channel_api.mjs +2 -2
  76. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/channel_api.mjs.map +1 -0
  77. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/api_args.mjs +2 -2
  78. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/api_args.mjs.map +1 -0
  79. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/bitset.mjs +2 -2
  80. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/bitset.mjs.map +1 -0
  81. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/channel.mjs +2 -2
  82. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/channel.mjs.map +1 -0
  83. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/channel_model.mjs +2 -2
  84. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/channel_model.mjs.map +1 -0
  85. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/codec.mjs +3 -3
  86. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/codec.mjs.map +1 -0
  87. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/connect.mjs +3 -3
  88. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/connect.mjs.map +1 -0
  89. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/connection.mjs +2 -2
  90. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/connection.mjs.map +1 -0
  91. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/credentials.mjs +2 -2
  92. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/credentials.mjs.map +1 -0
  93. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/defs.mjs +3 -3
  94. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/defs.mjs.map +1 -0
  95. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/error.mjs +2 -2
  96. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/error.mjs.map +1 -0
  97. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/format.mjs +2 -2
  98. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/format.mjs.map +1 -0
  99. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/frame.mjs +3 -3
  100. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/frame.mjs.map +1 -0
  101. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/heartbeat.mjs +2 -2
  102. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/heartbeat.mjs.map +1 -0
  103. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/lib/mux.mjs +2 -2
  104. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/lib/mux.mjs.map +1 -0
  105. package/esm/node_modules/{amqplib → .pnpm/amqplib@0.10.9/node_modules/amqplib}/package.mjs +2 -2
  106. package/esm/node_modules/.pnpm/amqplib@0.10.9/node_modules/amqplib/package.mjs.map +1 -0
  107. package/esm/node_modules/{buffer-more-ints → .pnpm/buffer-more-ints@1.0.0/node_modules/buffer-more-ints}/buffer-more-ints.mjs +2 -2
  108. package/esm/node_modules/.pnpm/buffer-more-ints@1.0.0/node_modules/buffer-more-ints/buffer-more-ints.mjs.map +1 -0
  109. package/esm/node_modules/{dayjs → .pnpm/dayjs@1.11.23/node_modules/dayjs}/dayjs.min.mjs +2 -2
  110. package/esm/node_modules/.pnpm/dayjs@1.11.23/node_modules/dayjs/dayjs.min.mjs.map +1 -0
  111. package/esm/node_modules/{querystringify → .pnpm/querystringify@2.2.0/node_modules/querystringify}/index.mjs +2 -2
  112. package/esm/node_modules/.pnpm/querystringify@2.2.0/node_modules/querystringify/index.mjs.map +1 -0
  113. package/esm/node_modules/{requires-port → .pnpm/requires-port@1.0.0/node_modules/requires-port}/index.mjs +2 -2
  114. package/esm/node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.mjs.map +1 -0
  115. package/esm/node_modules/{url-parse → .pnpm/url-parse@1.5.10/node_modules/url-parse}/index.mjs +4 -4
  116. package/esm/node_modules/.pnpm/url-parse@1.5.10/node_modules/url-parse/index.mjs.map +1 -0
  117. package/esm/queue/herald-queue.mjs.map +1 -1
  118. package/esm/queue/notifications-worker.mjs.map +1 -1
  119. package/esm/seal/src/factory/validators.mjs.map +1 -1
  120. package/esm/seal/src/helpers/get-field-value.mjs +2 -2
  121. package/esm/seal/src/helpers/is-empty-value.mjs +1 -1
  122. package/esm/seal/src/helpers/validation-helpers.mjs.map +1 -1
  123. package/esm/seal/src/mutators/array-mutators.mjs +2 -2
  124. package/esm/seal/src/mutators/date-mutators.mjs +1 -1
  125. package/esm/seal/src/mutators/number-mutators.mjs +3 -3
  126. package/esm/seal/src/mutators/number-mutators.mjs.map +1 -1
  127. package/esm/seal/src/mutators/object-mutators.mjs +3 -3
  128. package/esm/seal/src/mutators/scalar-mutators.mjs.map +1 -1
  129. package/esm/seal/src/mutators/string-mutators.mjs +10 -10
  130. package/esm/seal/src/mutators/string-mutators.mjs.map +1 -1
  131. package/esm/seal/src/rules/array/array-rules.mjs.map +1 -1
  132. package/esm/seal/src/rules/common/enum.mjs.map +1 -1
  133. package/esm/seal/src/rules/common/literal.mjs.map +1 -1
  134. package/esm/seal/src/rules/common/type-rules.mjs +1 -1
  135. package/esm/seal/src/rules/common/unknown-key.mjs.map +1 -1
  136. package/esm/seal/src/rules/conditional/present-with-rules.mjs +2 -2
  137. package/esm/seal/src/rules/conditional/present-without-rules.mjs +2 -2
  138. package/esm/seal/src/rules/conditional/required-if-rules.mjs +2 -2
  139. package/esm/seal/src/rules/conditional/required-if-rules.mjs.map +1 -1
  140. package/esm/seal/src/rules/conditional/required-with-rules.mjs +2 -2
  141. package/esm/seal/src/rules/conditional/required-without-rules.mjs +2 -2
  142. package/esm/seal/src/rules/core/union.mjs.map +1 -1
  143. package/esm/seal/src/rules/core/when.mjs +2 -2
  144. package/esm/seal/src/rules/core/when.mjs.map +1 -1
  145. package/esm/seal/src/rules/date/date-day-rules.mjs.map +1 -1
  146. package/esm/seal/src/rules/date/date-field-comparison-rules.mjs +2 -2
  147. package/esm/seal/src/rules/date/date-period-rules.mjs +2 -2
  148. package/esm/seal/src/rules/date/date-period-rules.mjs.map +1 -1
  149. package/esm/seal/src/rules/date/date-special-rules.mjs.map +1 -1
  150. package/esm/seal/src/rules/date/date.mjs +2 -2
  151. package/esm/seal/src/rules/date/date.mjs.map +1 -1
  152. package/esm/seal/src/rules/length/length-rules.mjs.map +1 -1
  153. package/esm/seal/src/rules/number/number-rules.mjs +2 -2
  154. package/esm/seal/src/rules/scalar/accepted-rule.mjs.map +1 -1
  155. package/esm/seal/src/rules/scalar/declined-rule.mjs.map +1 -1
  156. package/esm/seal/src/rules/string/credit-card.mjs.map +1 -1
  157. package/esm/seal/src/rules/string/email.mjs +1 -1
  158. package/esm/seal/src/rules/string/id-formats.mjs.map +1 -1
  159. package/esm/seal/src/rules/string/matches.mjs +1 -1
  160. package/esm/seal/src/rules/string/string-comparison.mjs.map +1 -1
  161. package/esm/seal/src/standard-schema/json-schema.mjs.map +1 -1
  162. package/esm/seal/src/standard-schema/map-result.mjs.map +1 -1
  163. package/esm/seal/src/validators/base-validator.mjs +2 -2
  164. package/esm/seal/src/validators/date-validator.mjs +1 -1
  165. package/esm/seal/src/validators/date-validator.mjs.map +1 -1
  166. package/esm/seal/src/validators/discriminated-union-validator.mjs +1 -1
  167. package/esm/seal/src/validators/discriminated-union-validator.mjs.map +1 -1
  168. package/esm/seal/src/validators/lazy-validator.mjs.map +1 -1
  169. package/esm/seal/src/validators/methods/required-methods.mjs.map +1 -1
  170. package/esm/seal/src/validators/numeric-validator.mjs +1 -1
  171. package/esm/seal/src/validators/object-validator.mjs +3 -3
  172. package/esm/seal/src/validators/object-validator.mjs.map +1 -1
  173. package/esm/seal/src/validators/record-validator.mjs +1 -1
  174. package/esm/seal/src/validators/record-validator.mjs.map +1 -1
  175. package/esm/seal/src/validators/scalar-validator.mjs.map +1 -1
  176. package/esm/seal/src/validators/union-validator.mjs.map +1 -1
  177. package/llms-full.txt +4 -0
  178. package/package.json +9 -6
  179. package/skills/notifications-basics/SKILL.md +4 -0
  180. package/cjs/channel_api-CH3DxhRU.cjs.map +0 -1
  181. package/cjs/chunk-fl3r8ClO.cjs +0 -41
  182. package/cjs/rabbitmq-driver-CJtyxjUQ.cjs +0 -3
  183. package/cjs/src-Cus6pYPC.cjs.map +0 -1
  184. package/esm/node_modules/@mongez/reinforcements/esm/Random/_internal.mjs +0 -6
  185. package/esm/node_modules/@mongez/reinforcements/esm/Random/_internal.mjs.map +0 -1
  186. package/esm/node_modules/@mongez/reinforcements/esm/mixed/clone/clone.mjs.map +0 -1
  187. package/esm/node_modules/@mongez/reinforcements/esm/number/round.mjs.map +0 -1
  188. package/esm/node_modules/@mongez/reinforcements/esm/object/except.mjs.map +0 -1
  189. package/esm/node_modules/@mongez/reinforcements/esm/object/get.mjs.map +0 -1
  190. package/esm/node_modules/@mongez/reinforcements/esm/object/omit.mjs.map +0 -1
  191. package/esm/node_modules/@mongez/reinforcements/esm/object/unset.mjs.map +0 -1
  192. package/esm/node_modules/@mongez/reinforcements/esm/string/capitalize.mjs.map +0 -1
  193. package/esm/node_modules/@mongez/reinforcements/esm/string/ltrim.mjs.map +0 -1
  194. package/esm/node_modules/@mongez/reinforcements/esm/string/readMoreChars.mjs.map +0 -1
  195. package/esm/node_modules/@mongez/reinforcements/esm/string/rtrim.mjs.map +0 -1
  196. package/esm/node_modules/@mongez/reinforcements/esm/string/toCamelCase.mjs.map +0 -1
  197. package/esm/node_modules/@mongez/reinforcements/esm/string/toKebabCase.mjs.map +0 -1
  198. package/esm/node_modules/@mongez/reinforcements/esm/string/toSnakeCase.mjs.map +0 -1
  199. package/esm/node_modules/@mongez/reinforcements/esm/string/toStudlyCase.mjs.map +0 -1
  200. package/esm/node_modules/@mongez/reinforcements/esm/string/trim.mjs.map +0 -1
  201. package/esm/node_modules/@mongez/reinforcements/esm/string/ucfirst.mjs.map +0 -1
  202. package/esm/node_modules/@mongez/reinforcements/esm/string/words.mjs.map +0 -1
  203. package/esm/node_modules/@mongez/reinforcements/esm/utils/escapeRegex.mjs.map +0 -1
  204. package/esm/node_modules/@mongez/reinforcements/esm/utils/lazy.mjs.map +0 -1
  205. package/esm/node_modules/@mongez/reinforcements/esm/utils/tap.mjs.map +0 -1
  206. package/esm/node_modules/@mongez/supportive-is/esm/index.mjs.map +0 -1
  207. package/esm/node_modules/amqplib/channel_api.mjs.map +0 -1
  208. package/esm/node_modules/amqplib/lib/api_args.mjs.map +0 -1
  209. package/esm/node_modules/amqplib/lib/bitset.mjs.map +0 -1
  210. package/esm/node_modules/amqplib/lib/channel.mjs.map +0 -1
  211. package/esm/node_modules/amqplib/lib/channel_model.mjs.map +0 -1
  212. package/esm/node_modules/amqplib/lib/codec.mjs.map +0 -1
  213. package/esm/node_modules/amqplib/lib/connect.mjs.map +0 -1
  214. package/esm/node_modules/amqplib/lib/connection.mjs.map +0 -1
  215. package/esm/node_modules/amqplib/lib/credentials.mjs.map +0 -1
  216. package/esm/node_modules/amqplib/lib/defs.mjs.map +0 -1
  217. package/esm/node_modules/amqplib/lib/error.mjs.map +0 -1
  218. package/esm/node_modules/amqplib/lib/format.mjs.map +0 -1
  219. package/esm/node_modules/amqplib/lib/frame.mjs.map +0 -1
  220. package/esm/node_modules/amqplib/lib/heartbeat.mjs.map +0 -1
  221. package/esm/node_modules/amqplib/lib/mux.mjs.map +0 -1
  222. package/esm/node_modules/amqplib/package.mjs.map +0 -1
  223. package/esm/node_modules/buffer-more-ints/buffer-more-ints.mjs.map +0 -1
  224. package/esm/node_modules/dayjs/dayjs.min.mjs.map +0 -1
  225. package/esm/node_modules/querystringify/index.mjs.map +0 -1
  226. package/esm/node_modules/requires-port/index.mjs.map +0 -1
  227. package/esm/node_modules/url-parse/index.mjs.map +0 -1
  228. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/bool.mjs +0 -0
  229. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/color.mjs +0 -0
  230. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/date.mjs +0 -0
  231. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/float.mjs +0 -0
  232. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/id.mjs +0 -0
  233. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/int.mjs +0 -0
  234. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/nanoid.mjs +0 -0
  235. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/pick.mjs +0 -0
  236. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/random.mjs +0 -0
  237. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/sample.mjs +0 -0
  238. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/string.mjs +0 -0
  239. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/token.mjs +0 -0
  240. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/uuid.mjs +0 -0
  241. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/Random/weighted.mjs +0 -0
  242. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/async/retry.mjs +0 -0
  243. /package/esm/node_modules/{@mongez → .pnpm/@mongez_reinforcements@4.0.1/node_modules/@mongez}/reinforcements/esm/index.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel_api-CH3DxhRU.cjs","names":["assert","EventEmitter","EventEmitter","fmt","fmt","EventEmitter","promisify"],"sources":["../../../../../../node_modules/requires-port/index.js","../../../../../../node_modules/querystringify/index.js","../../../../../../node_modules/url-parse/index.js","../../../../../../node_modules/buffer-more-ints/buffer-more-ints.js","../../../../../../node_modules/amqplib/lib/codec.js","../../../../../../node_modules/amqplib/lib/defs.js","../../../../../../node_modules/amqplib/lib/frame.js","../../../../../../node_modules/amqplib/lib/mux.js","../../../../../../node_modules/amqplib/lib/heartbeat.js","../../../../../../node_modules/amqplib/lib/format.js","../../../../../../node_modules/amqplib/lib/bitset.js","../../../../../../node_modules/amqplib/lib/error.js","../../../../../../node_modules/amqplib/lib/connection.js","../../../../../../node_modules/amqplib/lib/credentials.js","../../../../../../node_modules/amqplib/package.json","../../../../../../node_modules/amqplib/lib/connect.js","../../../../../../node_modules/amqplib/lib/channel.js","../../../../../../node_modules/amqplib/lib/api_args.js","../../../../../../node_modules/amqplib/lib/channel_model.js","../../../../../../node_modules/amqplib/channel_api.js"],"sourcesContent":["'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","'use strict';\n\n// JavaScript is numerically challenged\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nvar SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// The maximum contiguous integer that can be held in a IEEE754 double\nvar MAX_INT = 0x1fffffffffffff;\n\nfunction isContiguousInt(val) {\n return val <= MAX_INT && val >= -MAX_INT;\n}\n\nfunction assertContiguousInt(val) {\n if (!isContiguousInt(val)) {\n throw new TypeError(\"number cannot be represented as a contiguous integer\");\n }\n}\n\nmodule.exports.isContiguousInt = isContiguousInt;\nmodule.exports.assertContiguousInt = assertContiguousInt;\n\n// Fill in the regular procedures\n['UInt', 'Int'].forEach(function (sign) {\n var suffix = sign + '8';\n module.exports['read' + suffix] =\n Buffer.prototype['read' + suffix].call;\n module.exports['write' + suffix] =\n Buffer.prototype['write' + suffix].call;\n\n ['16', '32'].forEach(function (size) {\n ['LE', 'BE'].forEach(function (endian) {\n var suffix = sign + size + endian;\n var read = Buffer.prototype['read' + suffix];\n module.exports['read' + suffix] =\n function (buf, offset) {\n return read.call(buf, offset);\n };\n var write = Buffer.prototype['write' + suffix];\n module.exports['write' + suffix] =\n function (buf, val, offset) {\n return write.call(buf, val, offset);\n };\n });\n });\n});\n\n// Check that a value is an integer within the given range\nfunction check_value(val, min, max) {\n val = +val;\n if (typeof(val) != 'number' || val < min || val > max || Math.floor(val) !== val) {\n throw new TypeError(\"\\\"value\\\" argument is out of bounds\");\n }\n return val;\n}\n\n// Check that something is within the Buffer bounds\nfunction check_bounds(buf, offset, len) {\n if (offset < 0 || offset + len > buf.length) {\n throw new RangeError(\"Index out of range\");\n }\n}\n\nfunction readUInt24BE(buf, offset) {\n return buf.readUInt8(offset) << 16 | buf.readUInt16BE(offset + 1);\n}\nmodule.exports.readUInt24BE = readUInt24BE;\n\nfunction writeUInt24BE(buf, val, offset) {\n val = check_value(val, 0, 0xffffff);\n check_bounds(buf, offset, 3);\n buf.writeUInt8(val >>> 16, offset);\n buf.writeUInt16BE(val & 0xffff, offset + 1);\n}\nmodule.exports.writeUInt24BE = writeUInt24BE;\n\nfunction readUInt40BE(buf, offset) {\n return (buf.readUInt8(offset) || 0) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 1);\n}\nmodule.exports.readUInt40BE = readUInt40BE;\n\nfunction writeUInt40BE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffff);\n check_bounds(buf, offset, 5);\n buf.writeUInt8(Math.floor(val * SHIFT_RIGHT_32), offset);\n buf.writeInt32BE(val & -1, offset + 1);\n}\nmodule.exports.writeUInt40BE = writeUInt40BE;\n\nfunction readUInt48BE(buf, offset) {\n return buf.readUInt16BE(offset) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 2);\n}\nmodule.exports.readUInt48BE = readUInt48BE;\n\nfunction writeUInt48BE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffffff);\n check_bounds(buf, offset, 6);\n buf.writeUInt16BE(Math.floor(val * SHIFT_RIGHT_32), offset);\n buf.writeInt32BE(val & -1, offset + 2);\n}\nmodule.exports.writeUInt48BE = writeUInt48BE;\n\nfunction readUInt56BE(buf, offset) {\n return ((buf.readUInt8(offset) || 0) << 16 | buf.readUInt16BE(offset + 1)) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 3);\n}\nmodule.exports.readUInt56BE = readUInt56BE;\n\nfunction writeUInt56BE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffffffff);\n check_bounds(buf, offset, 7);\n\n if (val < 0x100000000000000) {\n var hi = Math.floor(val * SHIFT_RIGHT_32);\n buf.writeUInt8(hi >>> 16, offset);\n buf.writeUInt16BE(hi & 0xffff, offset + 1);\n buf.writeInt32BE(val & -1, offset + 3);\n } else {\n // Special case because 2^56-1 gets rounded up to 2^56\n buf[offset] = 0xff;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n }\n}\nmodule.exports.writeUInt56BE = writeUInt56BE;\n\nfunction readUInt64BE(buf, offset) {\n return buf.readUInt32BE(offset) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 4);\n}\nmodule.exports.readUInt64BE = readUInt64BE;\n\nfunction writeUInt64BE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffffffffff);\n check_bounds(buf, offset, 8);\n\n if (val < 0x10000000000000000) {\n buf.writeUInt32BE(Math.floor(val * SHIFT_RIGHT_32), offset);\n buf.writeInt32BE(val & -1, offset + 4);\n } else {\n // Special case because 2^64-1 gets rounded up to 2^64\n buf[offset] = 0xff;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n buf[offset+7] = 0xff;\n }\n}\nmodule.exports.writeUInt64BE = writeUInt64BE;\n\nfunction readUInt24LE(buf, offset) {\n return buf.readUInt8(offset + 2) << 16 | buf.readUInt16LE(offset);\n}\nmodule.exports.readUInt24LE = readUInt24LE;\n\nfunction writeUInt24LE(buf, val, offset) {\n val = check_value(val, 0, 0xffffff);\n check_bounds(buf, offset, 3);\n\n buf.writeUInt16LE(val & 0xffff, offset);\n buf.writeUInt8(val >>> 16, offset + 2);\n}\nmodule.exports.writeUInt24LE = writeUInt24LE;\n\nfunction readUInt40LE(buf, offset) {\n return (buf.readUInt8(offset + 4) || 0) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readUInt40LE = readUInt40LE;\n\nfunction writeUInt40LE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffff);\n check_bounds(buf, offset, 5);\n buf.writeInt32LE(val & -1, offset);\n buf.writeUInt8(Math.floor(val * SHIFT_RIGHT_32), offset + 4);\n}\nmodule.exports.writeUInt40LE = writeUInt40LE;\n\nfunction readUInt48LE(buf, offset) {\n return buf.readUInt16LE(offset + 4) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readUInt48LE = readUInt48LE;\n\nfunction writeUInt48LE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffffff);\n check_bounds(buf, offset, 6);\n buf.writeInt32LE(val & -1, offset);\n buf.writeUInt16LE(Math.floor(val * SHIFT_RIGHT_32), offset + 4);\n}\nmodule.exports.writeUInt48LE = writeUInt48LE;\n\nfunction readUInt56LE(buf, offset) {\n return ((buf.readUInt8(offset + 6) || 0) << 16 | buf.readUInt16LE(offset + 4)) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readUInt56LE = readUInt56LE;\n\nfunction writeUInt56LE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffffffff);\n check_bounds(buf, offset, 7);\n\n if (val < 0x100000000000000) {\n buf.writeInt32LE(val & -1, offset);\n var hi = Math.floor(val * SHIFT_RIGHT_32);\n buf.writeUInt16LE(hi & 0xffff, offset + 4);\n buf.writeUInt8(hi >>> 16, offset + 6);\n } else {\n // Special case because 2^56-1 gets rounded up to 2^56\n buf[offset] = 0xff;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n }\n}\nmodule.exports.writeUInt56LE = writeUInt56LE;\n\nfunction readUInt64LE(buf, offset) {\n return buf.readUInt32LE(offset + 4) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readUInt64LE = readUInt64LE;\n\nfunction writeUInt64LE(buf, val, offset) {\n val = check_value(val, 0, 0xffffffffffffffff);\n check_bounds(buf, offset, 8);\n\n if (val < 0x10000000000000000) {\n buf.writeInt32LE(val & -1, offset);\n buf.writeUInt32LE(Math.floor(val * SHIFT_RIGHT_32), offset + 4);\n } else {\n // Special case because 2^64-1 gets rounded up to 2^64\n buf[offset] = 0xff;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n buf[offset+7] = 0xff;\n }\n}\nmodule.exports.writeUInt64LE = writeUInt64LE;\n\n\nfunction readInt24BE(buf, offset) {\n return (buf.readInt8(offset) << 16) + buf.readUInt16BE(offset + 1);\n}\nmodule.exports.readInt24BE = readInt24BE;\n\nfunction writeInt24BE(buf, val, offset) {\n val = check_value(val, -0x800000, 0x7fffff);\n check_bounds(buf, offset, 3);\n buf.writeInt8(val >> 16, offset);\n buf.writeUInt16BE(val & 0xffff, offset + 1);\n}\nmodule.exports.writeInt24BE = writeInt24BE;\n\nfunction readInt40BE(buf, offset) {\n return (buf.readInt8(offset) || 0) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 1);\n}\nmodule.exports.readInt40BE = readInt40BE;\n\nfunction writeInt40BE(buf, val, offset) {\n val = check_value(val, -0x8000000000, 0x7fffffffff);\n check_bounds(buf, offset, 5);\n buf.writeInt8(Math.floor(val * SHIFT_RIGHT_32), offset);\n buf.writeInt32BE(val & -1, offset + 1);\n}\nmodule.exports.writeInt40BE = writeInt40BE;\n\nfunction readInt48BE(buf, offset) {\n return buf.readInt16BE(offset) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 2);\n}\nmodule.exports.readInt48BE = readInt48BE;\n\nfunction writeInt48BE(buf, val, offset) {\n val = check_value(val, -0x800000000000, 0x7fffffffffff);\n check_bounds(buf, offset, 6);\n buf.writeInt16BE(Math.floor(val * SHIFT_RIGHT_32), offset);\n buf.writeInt32BE(val & -1, offset + 2);\n}\nmodule.exports.writeInt48BE = writeInt48BE;\n\nfunction readInt56BE(buf, offset) {\n return (((buf.readInt8(offset) || 0) << 16) + buf.readUInt16BE(offset + 1)) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 3);\n}\nmodule.exports.readInt56BE = readInt56BE;\n\nfunction writeInt56BE(buf, val, offset) {\n val = check_value(val, -0x800000000000000, 0x7fffffffffffff);\n check_bounds(buf, offset, 7);\n\n if (val < 0x80000000000000) {\n var hi = Math.floor(val * SHIFT_RIGHT_32);\n buf.writeInt8(hi >> 16, offset);\n buf.writeUInt16BE(hi & 0xffff, offset + 1);\n buf.writeInt32BE(val & -1, offset + 3);\n } else {\n // Special case because 2^55-1 gets rounded up to 2^55\n buf[offset] = 0x7f;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n }\n}\nmodule.exports.writeInt56BE = writeInt56BE;\n\nfunction readInt64BE(buf, offset) {\n return buf.readInt32BE(offset) * SHIFT_LEFT_32 + buf.readUInt32BE(offset + 4);\n}\nmodule.exports.readInt64BE = readInt64BE;\n\nfunction writeInt64BE(buf, val, offset) {\n val = check_value(val, -0x800000000000000000, 0x7fffffffffffffff);\n check_bounds(buf, offset, 8);\n\n if (val < 0x8000000000000000) {\n buf.writeInt32BE(Math.floor(val * SHIFT_RIGHT_32), offset);\n buf.writeInt32BE(val & -1, offset + 4);\n } else {\n // Special case because 2^63-1 gets rounded up to 2^63\n buf[offset] = 0x7f;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n buf[offset+7] = 0xff;\n }\n}\nmodule.exports.writeInt64BE = writeInt64BE;\n\nfunction readInt24LE(buf, offset) {\n return (buf.readInt8(offset + 2) << 16) + buf.readUInt16LE(offset);\n}\nmodule.exports.readInt24LE = readInt24LE;\n\nfunction writeInt24LE(buf, val, offset) {\n val = check_value(val, -0x800000, 0x7fffff);\n check_bounds(buf, offset, 3);\n buf.writeUInt16LE(val & 0xffff, offset);\n buf.writeInt8(val >> 16, offset + 2);\n}\nmodule.exports.writeInt24LE = writeInt24LE;\n\nfunction readInt40LE(buf, offset) {\n return (buf.readInt8(offset + 4) || 0) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readInt40LE = readInt40LE;\n\nfunction writeInt40LE(buf, val, offset) {\n val = check_value(val, -0x8000000000, 0x7fffffffff);\n check_bounds(buf, offset, 5);\n buf.writeInt32LE(val & -1, offset);\n buf.writeInt8(Math.floor(val * SHIFT_RIGHT_32), offset + 4);\n}\nmodule.exports.writeInt40LE = writeInt40LE;\n\nfunction readInt48LE(buf, offset) {\n return buf.readInt16LE(offset + 4) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readInt48LE = readInt48LE;\n\nfunction writeInt48LE(buf, val, offset) {\n val = check_value(val, -0x800000000000, 0x7fffffffffff);\n check_bounds(buf, offset, 6);\n buf.writeInt32LE(val & -1, offset);\n buf.writeInt16LE(Math.floor(val * SHIFT_RIGHT_32), offset + 4);\n}\nmodule.exports.writeInt48LE = writeInt48LE;\n\nfunction readInt56LE(buf, offset) {\n return (((buf.readInt8(offset + 6) || 0) << 16) + buf.readUInt16LE(offset + 4)) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readInt56LE = readInt56LE;\n\nfunction writeInt56LE(buf, val, offset) {\n val = check_value(val, -0x80000000000000, 0x7fffffffffffff);\n check_bounds(buf, offset, 7);\n\n if (val < 0x80000000000000) {\n buf.writeInt32LE(val & -1, offset);\n var hi = Math.floor(val * SHIFT_RIGHT_32);\n buf.writeUInt16LE(hi & 0xffff, offset + 4);\n buf.writeInt8(hi >> 16, offset + 6);\n } else {\n // Special case because 2^55-1 gets rounded up to 2^55\n buf[offset] = 0xff;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0x7f;\n }\n}\nmodule.exports.writeInt56LE = writeInt56LE;\n\nfunction readInt64LE(buf, offset) {\n return buf.readInt32LE(offset + 4) * SHIFT_LEFT_32 + buf.readUInt32LE(offset);\n}\nmodule.exports.readInt64LE = readInt64LE;\n\nfunction writeInt64LE(buf, val, offset) {\n val = check_value(val, -0x8000000000000000, 0x7fffffffffffffff);\n check_bounds(buf, offset, 8);\n\n if (val < 0x8000000000000000) {\n buf.writeInt32LE(val & -1, offset);\n buf.writeInt32LE(Math.floor(val * SHIFT_RIGHT_32), offset + 4);\n } else {\n // Special case because 2^55-1 gets rounded up to 2^55\n buf[offset] = 0xff;\n buf[offset+1] = 0xff;\n buf[offset+2] = 0xff;\n buf[offset+3] = 0xff;\n buf[offset+4] = 0xff;\n buf[offset+5] = 0xff;\n buf[offset+6] = 0xff;\n buf[offset+7] = 0x7f;\n }\n}\nmodule.exports.writeInt64LE = writeInt64LE;\n","//\n//\n//\n\n/*\n\nThe AMQP 0-9-1 is a mess when it comes to the types that can be\nencoded on the wire.\n\nThere are four encoding schemes, and three overlapping sets of types:\nframes, methods, (field-)tables, and properties.\n\nEach *frame type* has a set layout in which values of given types are\nconcatenated along with sections of \"raw binary\" data.\n\nIn frames there are `shortstr`s, that is length-prefixed strings of\nUTF8 chars, 8 bit unsigned integers (called `octet`), unsigned 16 bit\nintegers (called `short` or `short-uint`), unsigned 32 bit integers\n(called `long` or `long-uint`), unsigned 64 bit integers (called\n`longlong` or `longlong-uint`), and flags (called `bit`).\n\nMethods are encoded as a frame giving a method ID and a sequence of\narguments of known types. The encoded method argument values are\nconcatenated (with some fun complications around \"packing\" consecutive\nbit values into bytes).\n\nAlong with the types given in frames, method arguments may be long\nbyte strings (`longstr`, not required to be UTF8) or 64 bit unsigned\nintegers to be interpreted as timestamps (yeah I don't know why\neither), or arbitrary sets of key-value pairs (called `field-table`).\n\nInside a field table the keys are `shortstr` and the values are\nprefixed with a byte tag giving the type. The types are any of the\nabove except for bits (which are replaced by byte-wide `bool`), along\nwith a NULL value `void`, a special fixed-precision number encoding\n(`decimal`), IEEE754 `float`s and `double`s, signed integers,\n`field-array` (a sequence of tagged values), and nested field-tables.\n\nRabbitMQ and QPid use a subset of the field-table types, and different\nvalue tags, established before the AMQP 0-9-1 specification was\npublished. So far as I know, no-one uses the types and tags as\npublished. http://www.rabbitmq.com/amqp-0-9-1-errata.html gives the\nlist of field-table types.\n\nLastly, there are (sets of) properties, only one of which is given in\nAMQP 0-9-1: `BasicProperties`. These are almost the same as methods,\nexcept that they appear in content header frames, which include a\ncontent size, and they carry a set of flags indicating which\nproperties are present. This scheme can save ones of bytes per message\n(messages which take a minimum of three frames each to send).\n\n*/\n\n'use strict';\n\nvar ints = require('buffer-more-ints');\n\n// JavaScript uses only doubles so what I'm testing for is whether\n// it's *better* to encode a number as a float or double. This really\n// just amounts to testing whether there's a fractional part to the\n// number, except that see below. NB I don't use bitwise operations to\n// do this 'efficiently' -- it would mask the number to 32 bits.\n//\n// At 2^50, doubles don't have sufficient precision to distinguish\n// between floating point and integer numbers (`Math.pow(2, 50) + 0.1\n// === Math.pow(2, 50)` (and, above 2^53, doubles cannot represent all\n// integers (`Math.pow(2, 53) + 1 === Math.pow(2, 53)`)). Hence\n// anything with a magnitude at or above 2^50 may as well be encoded\n// as a 64-bit integer. Except that only signed integers are supported\n// by RabbitMQ, so anything above 2^63 - 1 must be a double.\nfunction isFloatingPoint(n) {\n return n >= 0x8000000000000000 ||\n (Math.abs(n) < 0x4000000000000\n && Math.floor(n) !== n);\n}\n\nfunction encodeTable(buffer, val, offset) {\n var start = offset;\n offset += 4; // leave room for the table length\n for (var key in val) {\n if (val[key] !== undefined) {\n var len = Buffer.byteLength(key);\n buffer.writeUInt8(len, offset); offset++;\n buffer.write(key, offset, 'utf8'); offset += len;\n offset += encodeFieldValue(buffer, val[key], offset);\n }\n }\n var size = offset - start;\n buffer.writeUInt32BE(size - 4, start);\n return size;\n}\n\nfunction encodeArray(buffer, val, offset) {\n var start = offset;\n offset += 4;\n for (var i=0, num=val.length; i < num; i++) {\n offset += encodeFieldValue(buffer, val[i], offset);\n }\n var size = offset - start;\n buffer.writeUInt32BE(size - 4, start);\n return size;\n}\n\nfunction encodeFieldValue(buffer, value, offset) {\n var start = offset;\n var type = typeof value, val = value;\n // A trapdoor for specifying a type, e.g., timestamp\n if (value && type === 'object' && value.hasOwnProperty('!')) {\n val = value.value;\n type = value['!'];\n }\n\n // If it's a JS number, we'll have to guess what type to encode it\n // as.\n if (type == 'number') {\n // Making assumptions about the kind of number (floating point\n // v integer, signed, unsigned, size) desired is dangerous in\n // general; however, in practice RabbitMQ uses only\n // longstrings and unsigned integers in its arguments, and\n // other clients generally conflate number types anyway. So\n // the only distinction we care about is floating point vs\n // integers, preferring integers since those can be promoted\n // if necessary. If floating point is required, we may as well\n // use double precision.\n if (isFloatingPoint(val)) {\n type = 'double';\n }\n else { // only signed values are used in tables by\n // RabbitMQ. It *used* to (< v3.3.0) treat the byte 'b'\n // type as unsigned, but most clients (and the spec)\n // think it's signed, and now RabbitMQ does too.\n if (val < 128 && val >= -128) {\n type = 'byte';\n }\n else if (val >= -0x8000 && val < 0x8000) {\n type = 'short'\n }\n else if (val >= -0x80000000 && val < 0x80000000) {\n type = 'int';\n }\n else {\n type = 'long';\n }\n }\n }\n\n function tag(t) { buffer.write(t, offset); offset++; }\n\n switch (type) {\n case 'string': // no shortstr in field tables\n var len = Buffer.byteLength(val, 'utf8');\n tag('S');\n buffer.writeUInt32BE(len, offset); offset += 4;\n buffer.write(val, offset, 'utf8'); offset += len;\n break;\n case 'object':\n if (val === null) {\n tag('V');\n }\n else if (Array.isArray(val)) {\n tag('A');\n offset += encodeArray(buffer, val, offset);\n }\n else if (Buffer.isBuffer(val)) {\n tag('x');\n buffer.writeUInt32BE(val.length, offset); offset += 4;\n val.copy(buffer, offset); offset += val.length;\n }\n else {\n tag('F');\n offset += encodeTable(buffer, val, offset);\n }\n break;\n case 'boolean':\n tag('t');\n buffer.writeUInt8((val) ? 1 : 0, offset); offset++;\n break;\n // These are the types that are either guessed above, or\n // explicitly given using the {'!': type} notation.\n case 'double':\n case 'float64':\n tag('d');\n buffer.writeDoubleBE(val, offset);\n offset += 8;\n break;\n case 'byte':\n case 'int8':\n tag('b');\n buffer.writeInt8(val, offset); offset++;\n break;\n case 'unsignedbyte':\n case 'uint8':\n tag('B');\n buffer.writeUInt8(val, offset); offset++;\n break;\n case 'short':\n case 'int16':\n tag('s');\n buffer.writeInt16BE(val, offset); offset += 2;\n break;\n case 'unsignedshort':\n case 'uint16':\n tag('u');\n buffer.writeUInt16BE(val, offset); offset += 2;\n break;\n case 'int':\n case 'int32':\n tag('I');\n buffer.writeInt32BE(val, offset); offset += 4;\n break;\n case 'unsignedint':\n case 'uint32':\n tag('i');\n buffer.writeUInt32BE(val, offset); offset += 4;\n break;\n case 'long':\n case 'int64':\n tag('l');\n ints.writeInt64BE(buffer, val, offset); offset += 8;\n break;\n\n // Now for exotic types, those can _only_ be denoted by using\n // `{'!': type, value: val}\n case 'timestamp':\n tag('T');\n ints.writeUInt64BE(buffer, val, offset); offset += 8;\n break;\n case 'float':\n tag('f');\n buffer.writeFloatBE(val, offset); offset += 4;\n break;\n case 'decimal':\n tag('D');\n if (val.hasOwnProperty('places') && val.hasOwnProperty('digits')\n && val.places >= 0 && val.places < 256) {\n buffer[offset] = val.places; offset++;\n buffer.writeUInt32BE(val.digits, offset); offset += 4;\n }\n else throw new TypeError(\n \"Decimal value must be {'places': 0..255, 'digits': uint32}, \" +\n \"got \" + JSON.stringify(val));\n break;\n default:\n throw new TypeError('Unknown type to encode: ' + type);\n }\n return offset - start;\n}\n\n// Assume we're given a slice of the buffer that contains just the\n// fields.\nfunction decodeFields(slice) {\n var fields = {}, offset = 0, size = slice.length;\n var len, key, val;\n\n function decodeFieldValue() {\n var tag = String.fromCharCode(slice[offset]); offset++;\n switch (tag) {\n case 'b':\n val = slice.readInt8(offset); offset++;\n break;\n case 'B':\n val = slice.readUInt8(offset); offset++;\n break;\n case 'S':\n len = slice.readUInt32BE(offset); offset += 4;\n val = slice.toString('utf8', offset, offset + len);\n offset += len;\n break;\n case 'I':\n val = slice.readInt32BE(offset); offset += 4;\n break;\n case 'i':\n val = slice.readUInt32BE(offset); offset += 4;\n break;\n case 'D': // only positive decimals, apparently.\n var places = slice[offset]; offset++;\n var digits = slice.readUInt32BE(offset); offset += 4;\n val = {'!': 'decimal', value: {places: places, digits: digits}};\n break;\n case 'T':\n val = ints.readUInt64BE(slice, offset); offset += 8;\n val = {'!': 'timestamp', value: val};\n break;\n case 'F':\n len = slice.readUInt32BE(offset); offset += 4;\n val = decodeFields(slice.subarray(offset, offset + len));\n offset += len;\n break;\n case 'A':\n len = slice.readUInt32BE(offset); offset += 4;\n decodeArray(offset + len);\n // NB decodeArray will itself update offset and val\n break;\n case 'd':\n val = slice.readDoubleBE(offset); offset += 8;\n break;\n case 'f':\n val = slice.readFloatBE(offset); offset += 4;\n break;\n case 'l':\n val = ints.readInt64BE(slice, offset); offset += 8;\n break;\n case 's':\n val = slice.readInt16BE(offset); offset += 2;\n break;\n case 'u':\n val = slice.readUInt16BE(offset); offset += 2;\n break;\n case 't':\n val = slice[offset] != 0; offset++;\n break;\n case 'V':\n val = null;\n break;\n case 'x':\n len = slice.readUInt32BE(offset); offset += 4;\n val = slice.subarray(offset, offset + len);\n offset += len;\n break;\n default:\n throw new TypeError('Unexpected type tag \"' + tag +'\"');\n }\n }\n\n function decodeArray(until) {\n var vals = [];\n while (offset < until) {\n decodeFieldValue();\n vals.push(val);\n }\n val = vals;\n }\n\n while (offset < size) {\n len = slice.readUInt8(offset); offset++;\n key = slice.toString('utf8', offset, offset + len);\n offset += len;\n decodeFieldValue();\n fields[key] = val;\n }\n return fields;\n}\n\nmodule.exports.encodeTable = encodeTable;\nmodule.exports.decodeFields = decodeFields;\n","/** @preserve This file is generated by the script\n * ../bin/generate-defs.js, which is not in general included in a\n * distribution, but is available in the source repository e.g. at\n * https://github.com/squaremo/amqp.node/\n */\n\"use strict\";\n\nfunction decodeBasicQos(buffer) {\n var val, offset = 0, fields = {\n prefetchSize: void 0,\n prefetchCount: void 0,\n global: void 0\n };\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.prefetchSize = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.prefetchCount = val;\n val = !!(1 & buffer[offset]);\n fields.global = val;\n return fields;\n}\n\nfunction encodeBasicQos(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(19);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932170, 7);\n offset = 11;\n val = fields.prefetchSize;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'prefetchSize' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n val = fields.prefetchCount;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'prefetchCount' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.global;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicQosOk(buffer) {\n return {};\n}\n\nfunction encodeBasicQosOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932171, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicConsume(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n consumerTag: void 0,\n noLocal: void 0,\n noAck: void 0,\n exclusive: void 0,\n nowait: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.consumerTag = val;\n val = !!(1 & buffer[offset]);\n fields.noLocal = val;\n val = !!(2 & buffer[offset]);\n fields.noAck = val;\n val = !!(4 & buffer[offset]);\n fields.exclusive = val;\n val = !!(8 & buffer[offset]);\n fields.nowait = val;\n offset++;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeBasicConsume(channel, fields) {\n var len, offset = 0, val = null, bits = 0, varyingSize = 0, scratchOffset = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n val = fields.consumerTag;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'consumerTag' is the wrong type; must be a string (up to 255 chars)\");\n var consumerTag_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += consumerTag_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(17 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932180, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.consumerTag;\n void 0 === val && (val = \"\");\n buffer[offset] = consumerTag_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += consumerTag_len;\n val = fields.noLocal;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.noAck;\n void 0 === val && (val = !1);\n val && (bits += 2);\n val = fields.exclusive;\n void 0 === val && (val = !1);\n val && (bits += 4);\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 8);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicConsumeOk(buffer) {\n var val, len, offset = 0, fields = {\n consumerTag: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.consumerTag = val;\n return fields;\n}\n\nfunction encodeBasicConsumeOk(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.consumerTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'consumerTag'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'consumerTag' is the wrong type; must be a string (up to 255 chars)\");\n var consumerTag_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += consumerTag_len;\n var buffer = Buffer.alloc(13 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932181, 7);\n offset = 11;\n val = fields.consumerTag;\n void 0 === val && (val = void 0);\n buffer[offset] = consumerTag_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += consumerTag_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicCancel(buffer) {\n var val, len, offset = 0, fields = {\n consumerTag: void 0,\n nowait: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.consumerTag = val;\n val = !!(1 & buffer[offset]);\n fields.nowait = val;\n return fields;\n}\n\nfunction encodeBasicCancel(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.consumerTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'consumerTag'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'consumerTag' is the wrong type; must be a string (up to 255 chars)\");\n var consumerTag_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += consumerTag_len;\n var buffer = Buffer.alloc(14 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932190, 7);\n offset = 11;\n val = fields.consumerTag;\n void 0 === val && (val = void 0);\n buffer[offset] = consumerTag_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += consumerTag_len;\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicCancelOk(buffer) {\n var val, len, offset = 0, fields = {\n consumerTag: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.consumerTag = val;\n return fields;\n}\n\nfunction encodeBasicCancelOk(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.consumerTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'consumerTag'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'consumerTag' is the wrong type; must be a string (up to 255 chars)\");\n var consumerTag_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += consumerTag_len;\n var buffer = Buffer.alloc(13 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932191, 7);\n offset = 11;\n val = fields.consumerTag;\n void 0 === val && (val = void 0);\n buffer[offset] = consumerTag_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += consumerTag_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicPublish(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n exchange: void 0,\n routingKey: void 0,\n mandatory: void 0,\n immediate: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n val = !!(1 & buffer[offset]);\n fields.mandatory = val;\n val = !!(2 & buffer[offset]);\n fields.immediate = val;\n return fields;\n}\n\nfunction encodeBasicPublish(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.exchange;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.routingKey;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n var buffer = Buffer.alloc(17 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932200, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.exchange;\n void 0 === val && (val = \"\");\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.routingKey;\n void 0 === val && (val = \"\");\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n val = fields.mandatory;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.immediate;\n void 0 === val && (val = !1);\n val && (bits += 2);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicReturn(buffer) {\n var val, len, offset = 0, fields = {\n replyCode: void 0,\n replyText: void 0,\n exchange: void 0,\n routingKey: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.replyCode = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.replyText = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n return fields;\n}\n\nfunction encodeBasicReturn(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.replyText;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'replyText' is the wrong type; must be a string (up to 255 chars)\");\n var replyText_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += replyText_len;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.routingKey;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'routingKey'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n var buffer = Buffer.alloc(17 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932210, 7);\n offset = 11;\n val = fields.replyCode;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'replyCode'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'replyCode' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.replyText;\n void 0 === val && (val = \"\");\n buffer[offset] = replyText_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += replyText_len;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.routingKey;\n void 0 === val && (val = void 0);\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicDeliver(buffer) {\n var val, len, offset = 0, fields = {\n consumerTag: void 0,\n deliveryTag: void 0,\n redelivered: void 0,\n exchange: void 0,\n routingKey: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.consumerTag = val;\n val = ints.readUInt64BE(buffer, offset);\n offset += 8;\n fields.deliveryTag = val;\n val = !!(1 & buffer[offset]);\n fields.redelivered = val;\n offset++;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n return fields;\n}\n\nfunction encodeBasicDeliver(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.consumerTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'consumerTag'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'consumerTag' is the wrong type; must be a string (up to 255 chars)\");\n var consumerTag_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += consumerTag_len;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.routingKey;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'routingKey'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n var buffer = Buffer.alloc(24 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932220, 7);\n offset = 11;\n val = fields.consumerTag;\n void 0 === val && (val = void 0);\n buffer[offset] = consumerTag_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += consumerTag_len;\n val = fields.deliveryTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'deliveryTag'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'deliveryTag' is the wrong type; must be a number (but not NaN)\");\n ints.writeUInt64BE(buffer, val, offset);\n offset += 8;\n val = fields.redelivered;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.routingKey;\n void 0 === val && (val = void 0);\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicGet(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n noAck: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n val = !!(1 & buffer[offset]);\n fields.noAck = val;\n return fields;\n}\n\nfunction encodeBasicGet(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932230, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.noAck;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicGetOk(buffer) {\n var val, len, offset = 0, fields = {\n deliveryTag: void 0,\n redelivered: void 0,\n exchange: void 0,\n routingKey: void 0,\n messageCount: void 0\n };\n val = ints.readUInt64BE(buffer, offset);\n offset += 8;\n fields.deliveryTag = val;\n val = !!(1 & buffer[offset]);\n fields.redelivered = val;\n offset++;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.messageCount = val;\n return fields;\n}\n\nfunction encodeBasicGetOk(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.routingKey;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'routingKey'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n var buffer = Buffer.alloc(27 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932231, 7);\n offset = 11;\n val = fields.deliveryTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'deliveryTag'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'deliveryTag' is the wrong type; must be a number (but not NaN)\");\n ints.writeUInt64BE(buffer, val, offset);\n offset += 8;\n val = fields.redelivered;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.routingKey;\n void 0 === val && (val = void 0);\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n val = fields.messageCount;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'messageCount'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'messageCount' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicGetEmpty(buffer) {\n var val, len, offset = 0, fields = {\n clusterId: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.clusterId = val;\n return fields;\n}\n\nfunction encodeBasicGetEmpty(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.clusterId;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'clusterId' is the wrong type; must be a string (up to 255 chars)\");\n var clusterId_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += clusterId_len;\n var buffer = Buffer.alloc(13 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932232, 7);\n offset = 11;\n val = fields.clusterId;\n void 0 === val && (val = \"\");\n buffer[offset] = clusterId_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += clusterId_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicAck(buffer) {\n var val, offset = 0, fields = {\n deliveryTag: void 0,\n multiple: void 0\n };\n val = ints.readUInt64BE(buffer, offset);\n offset += 8;\n fields.deliveryTag = val;\n val = !!(1 & buffer[offset]);\n fields.multiple = val;\n return fields;\n}\n\nfunction encodeBasicAck(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(21);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932240, 7);\n offset = 11;\n val = fields.deliveryTag;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'deliveryTag' is the wrong type; must be a number (but not NaN)\");\n ints.writeUInt64BE(buffer, val, offset);\n offset += 8;\n val = fields.multiple;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicReject(buffer) {\n var val, offset = 0, fields = {\n deliveryTag: void 0,\n requeue: void 0\n };\n val = ints.readUInt64BE(buffer, offset);\n offset += 8;\n fields.deliveryTag = val;\n val = !!(1 & buffer[offset]);\n fields.requeue = val;\n return fields;\n}\n\nfunction encodeBasicReject(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(21);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932250, 7);\n offset = 11;\n val = fields.deliveryTag;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'deliveryTag'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'deliveryTag' is the wrong type; must be a number (but not NaN)\");\n ints.writeUInt64BE(buffer, val, offset);\n offset += 8;\n val = fields.requeue;\n void 0 === val && (val = !0);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicRecoverAsync(buffer) {\n var val, fields = {\n requeue: void 0\n };\n val = !!(1 & buffer[0]);\n fields.requeue = val;\n return fields;\n}\n\nfunction encodeBasicRecoverAsync(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(13);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932260, 7);\n offset = 11;\n val = fields.requeue;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicRecover(buffer) {\n var val, fields = {\n requeue: void 0\n };\n val = !!(1 & buffer[0]);\n fields.requeue = val;\n return fields;\n}\n\nfunction encodeBasicRecover(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(13);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932270, 7);\n offset = 11;\n val = fields.requeue;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicRecoverOk(buffer) {\n return {};\n}\n\nfunction encodeBasicRecoverOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932271, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeBasicNack(buffer) {\n var val, offset = 0, fields = {\n deliveryTag: void 0,\n multiple: void 0,\n requeue: void 0\n };\n val = ints.readUInt64BE(buffer, offset);\n offset += 8;\n fields.deliveryTag = val;\n val = !!(1 & buffer[offset]);\n fields.multiple = val;\n val = !!(2 & buffer[offset]);\n fields.requeue = val;\n return fields;\n}\n\nfunction encodeBasicNack(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(21);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932280, 7);\n offset = 11;\n val = fields.deliveryTag;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'deliveryTag' is the wrong type; must be a number (but not NaN)\");\n ints.writeUInt64BE(buffer, val, offset);\n offset += 8;\n val = fields.multiple;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.requeue;\n void 0 === val && (val = !0);\n val && (bits += 2);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionStart(buffer) {\n var val, len, offset = 0, fields = {\n versionMajor: void 0,\n versionMinor: void 0,\n serverProperties: void 0,\n mechanisms: void 0,\n locales: void 0\n };\n val = buffer[offset];\n offset++;\n fields.versionMajor = val;\n val = buffer[offset];\n offset++;\n fields.versionMinor = val;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.serverProperties = val;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.mechanisms = val;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.locales = val;\n return fields;\n}\n\nfunction encodeConnectionStart(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0, scratchOffset = 0;\n val = fields.serverProperties;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'serverProperties'\");\n if (\"object\" != typeof val) throw new TypeError(\"Field 'serverProperties' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var serverProperties_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += serverProperties_encoded.length;\n val = fields.mechanisms;\n if (void 0 === val) val = Buffer.from(\"PLAIN\"); else if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'mechanisms' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n val = fields.locales;\n if (void 0 === val) val = Buffer.from(\"en_US\"); else if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'locales' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n var buffer = Buffer.alloc(22 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655370, 7);\n offset = 11;\n val = fields.versionMajor;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'versionMajor' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt8(val, offset);\n offset++;\n val = fields.versionMinor;\n if (void 0 === val) val = 9; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'versionMinor' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt8(val, offset);\n offset++;\n offset += serverProperties_encoded.copy(buffer, offset);\n val = fields.mechanisms;\n void 0 === val && (val = Buffer.from(\"PLAIN\"));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n val = fields.locales;\n void 0 === val && (val = Buffer.from(\"en_US\"));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionStartOk(buffer) {\n var val, len, offset = 0, fields = {\n clientProperties: void 0,\n mechanism: void 0,\n response: void 0,\n locale: void 0\n };\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.clientProperties = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.mechanism = val;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.response = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.locale = val;\n return fields;\n}\n\nfunction encodeConnectionStartOk(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0, scratchOffset = 0;\n val = fields.clientProperties;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'clientProperties'\");\n if (\"object\" != typeof val) throw new TypeError(\"Field 'clientProperties' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var clientProperties_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += clientProperties_encoded.length;\n val = fields.mechanism;\n if (void 0 === val) val = \"PLAIN\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'mechanism' is the wrong type; must be a string (up to 255 chars)\");\n var mechanism_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += mechanism_len;\n val = fields.response;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'response'\");\n if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'response' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n val = fields.locale;\n if (void 0 === val) val = \"en_US\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'locale' is the wrong type; must be a string (up to 255 chars)\");\n var locale_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += locale_len;\n var buffer = Buffer.alloc(18 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655371, 7);\n offset = 11;\n offset += clientProperties_encoded.copy(buffer, offset);\n val = fields.mechanism;\n void 0 === val && (val = \"PLAIN\");\n buffer[offset] = mechanism_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += mechanism_len;\n val = fields.response;\n void 0 === val && (val = Buffer.from(void 0));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n val = fields.locale;\n void 0 === val && (val = \"en_US\");\n buffer[offset] = locale_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += locale_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionSecure(buffer) {\n var val, len, offset = 0, fields = {\n challenge: void 0\n };\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.challenge = val;\n return fields;\n}\n\nfunction encodeConnectionSecure(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0;\n val = fields.challenge;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'challenge'\");\n if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'challenge' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655380, 7);\n offset = 11;\n val = fields.challenge;\n void 0 === val && (val = Buffer.from(void 0));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionSecureOk(buffer) {\n var val, len, offset = 0, fields = {\n response: void 0\n };\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.response = val;\n return fields;\n}\n\nfunction encodeConnectionSecureOk(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0;\n val = fields.response;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'response'\");\n if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'response' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655381, 7);\n offset = 11;\n val = fields.response;\n void 0 === val && (val = Buffer.from(void 0));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionTune(buffer) {\n var val, offset = 0, fields = {\n channelMax: void 0,\n frameMax: void 0,\n heartbeat: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.channelMax = val;\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.frameMax = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.heartbeat = val;\n return fields;\n}\n\nfunction encodeConnectionTune(channel, fields) {\n var offset = 0, val = null, buffer = Buffer.alloc(20);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655390, 7);\n offset = 11;\n val = fields.channelMax;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'channelMax' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.frameMax;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'frameMax' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n val = fields.heartbeat;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'heartbeat' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionTuneOk(buffer) {\n var val, offset = 0, fields = {\n channelMax: void 0,\n frameMax: void 0,\n heartbeat: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.channelMax = val;\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.frameMax = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.heartbeat = val;\n return fields;\n}\n\nfunction encodeConnectionTuneOk(channel, fields) {\n var offset = 0, val = null, buffer = Buffer.alloc(20);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655391, 7);\n offset = 11;\n val = fields.channelMax;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'channelMax' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.frameMax;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'frameMax' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n val = fields.heartbeat;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'heartbeat' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionOpen(buffer) {\n var val, len, offset = 0, fields = {\n virtualHost: void 0,\n capabilities: void 0,\n insist: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.virtualHost = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.capabilities = val;\n val = !!(1 & buffer[offset]);\n fields.insist = val;\n return fields;\n}\n\nfunction encodeConnectionOpen(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.virtualHost;\n if (void 0 === val) val = \"/\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'virtualHost' is the wrong type; must be a string (up to 255 chars)\");\n var virtualHost_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += virtualHost_len;\n val = fields.capabilities;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'capabilities' is the wrong type; must be a string (up to 255 chars)\");\n var capabilities_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += capabilities_len;\n var buffer = Buffer.alloc(15 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655400, 7);\n offset = 11;\n val = fields.virtualHost;\n void 0 === val && (val = \"/\");\n buffer[offset] = virtualHost_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += virtualHost_len;\n val = fields.capabilities;\n void 0 === val && (val = \"\");\n buffer[offset] = capabilities_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += capabilities_len;\n val = fields.insist;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionOpenOk(buffer) {\n var val, len, offset = 0, fields = {\n knownHosts: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.knownHosts = val;\n return fields;\n}\n\nfunction encodeConnectionOpenOk(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.knownHosts;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'knownHosts' is the wrong type; must be a string (up to 255 chars)\");\n var knownHosts_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += knownHosts_len;\n var buffer = Buffer.alloc(13 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655401, 7);\n offset = 11;\n val = fields.knownHosts;\n void 0 === val && (val = \"\");\n buffer[offset] = knownHosts_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += knownHosts_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionClose(buffer) {\n var val, len, offset = 0, fields = {\n replyCode: void 0,\n replyText: void 0,\n classId: void 0,\n methodId: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.replyCode = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.replyText = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.classId = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.methodId = val;\n return fields;\n}\n\nfunction encodeConnectionClose(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.replyText;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'replyText' is the wrong type; must be a string (up to 255 chars)\");\n var replyText_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += replyText_len;\n var buffer = Buffer.alloc(19 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655410, 7);\n offset = 11;\n val = fields.replyCode;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'replyCode'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'replyCode' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.replyText;\n void 0 === val && (val = \"\");\n buffer[offset] = replyText_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += replyText_len;\n val = fields.classId;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'classId'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'classId' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.methodId;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'methodId'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'methodId' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionCloseOk(buffer) {\n return {};\n}\n\nfunction encodeConnectionCloseOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655411, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionBlocked(buffer) {\n var val, len, offset = 0, fields = {\n reason: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.reason = val;\n return fields;\n}\n\nfunction encodeConnectionBlocked(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.reason;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'reason' is the wrong type; must be a string (up to 255 chars)\");\n var reason_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += reason_len;\n var buffer = Buffer.alloc(13 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655420, 7);\n offset = 11;\n val = fields.reason;\n void 0 === val && (val = \"\");\n buffer[offset] = reason_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += reason_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionUnblocked(buffer) {\n return {};\n}\n\nfunction encodeConnectionUnblocked(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655421, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionUpdateSecret(buffer) {\n var val, len, offset = 0, fields = {\n newSecret: void 0,\n reason: void 0\n };\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.newSecret = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.reason = val;\n return fields;\n}\n\nfunction encodeConnectionUpdateSecret(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0;\n val = fields.newSecret;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'newSecret'\");\n if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'newSecret' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n val = fields.reason;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'reason'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'reason' is the wrong type; must be a string (up to 255 chars)\");\n var reason_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += reason_len;\n var buffer = Buffer.alloc(17 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655430, 7);\n offset = 11;\n val = fields.newSecret;\n void 0 === val && (val = Buffer.from(void 0));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n val = fields.reason;\n void 0 === val && (val = void 0);\n buffer[offset] = reason_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += reason_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConnectionUpdateSecretOk(buffer) {\n return {};\n}\n\nfunction encodeConnectionUpdateSecretOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(655431, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeChannelOpen(buffer) {\n var val, len, offset = 0, fields = {\n outOfBand: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.outOfBand = val;\n return fields;\n}\n\nfunction encodeChannelOpen(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.outOfBand;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'outOfBand' is the wrong type; must be a string (up to 255 chars)\");\n var outOfBand_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += outOfBand_len;\n var buffer = Buffer.alloc(13 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1310730, 7);\n offset = 11;\n val = fields.outOfBand;\n void 0 === val && (val = \"\");\n buffer[offset] = outOfBand_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += outOfBand_len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeChannelOpenOk(buffer) {\n var val, len, offset = 0, fields = {\n channelId: void 0\n };\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = buffer.subarray(offset, offset + len);\n offset += len;\n fields.channelId = val;\n return fields;\n}\n\nfunction encodeChannelOpenOk(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0;\n val = fields.channelId;\n if (void 0 === val) val = Buffer.from(\"\"); else if (!Buffer.isBuffer(val)) throw new TypeError(\"Field 'channelId' is the wrong type; must be a Buffer\");\n varyingSize += val.length;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1310731, 7);\n offset = 11;\n val = fields.channelId;\n void 0 === val && (val = Buffer.from(\"\"));\n len = val.length;\n buffer.writeUInt32BE(len, offset);\n offset += 4;\n val.copy(buffer, offset);\n offset += len;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeChannelFlow(buffer) {\n var val, fields = {\n active: void 0\n };\n val = !!(1 & buffer[0]);\n fields.active = val;\n return fields;\n}\n\nfunction encodeChannelFlow(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(13);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1310740, 7);\n offset = 11;\n val = fields.active;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'active'\");\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeChannelFlowOk(buffer) {\n var val, fields = {\n active: void 0\n };\n val = !!(1 & buffer[0]);\n fields.active = val;\n return fields;\n}\n\nfunction encodeChannelFlowOk(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(13);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1310741, 7);\n offset = 11;\n val = fields.active;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'active'\");\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeChannelClose(buffer) {\n var val, len, offset = 0, fields = {\n replyCode: void 0,\n replyText: void 0,\n classId: void 0,\n methodId: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.replyCode = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.replyText = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.classId = val;\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.methodId = val;\n return fields;\n}\n\nfunction encodeChannelClose(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.replyText;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'replyText' is the wrong type; must be a string (up to 255 chars)\");\n var replyText_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += replyText_len;\n var buffer = Buffer.alloc(19 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1310760, 7);\n offset = 11;\n val = fields.replyCode;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'replyCode'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'replyCode' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.replyText;\n void 0 === val && (val = \"\");\n buffer[offset] = replyText_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += replyText_len;\n val = fields.classId;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'classId'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'classId' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.methodId;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'methodId'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'methodId' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeChannelCloseOk(buffer) {\n return {};\n}\n\nfunction encodeChannelCloseOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1310761, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeAccessRequest(buffer) {\n var val, len, offset = 0, fields = {\n realm: void 0,\n exclusive: void 0,\n passive: void 0,\n active: void 0,\n write: void 0,\n read: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.realm = val;\n val = !!(1 & buffer[offset]);\n fields.exclusive = val;\n val = !!(2 & buffer[offset]);\n fields.passive = val;\n val = !!(4 & buffer[offset]);\n fields.active = val;\n val = !!(8 & buffer[offset]);\n fields.write = val;\n val = !!(16 & buffer[offset]);\n fields.read = val;\n return fields;\n}\n\nfunction encodeAccessRequest(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.realm;\n if (void 0 === val) val = \"/data\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'realm' is the wrong type; must be a string (up to 255 chars)\");\n var realm_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += realm_len;\n var buffer = Buffer.alloc(14 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1966090, 7);\n offset = 11;\n val = fields.realm;\n void 0 === val && (val = \"/data\");\n buffer[offset] = realm_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += realm_len;\n val = fields.exclusive;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.passive;\n void 0 === val && (val = !0);\n val && (bits += 2);\n val = fields.active;\n void 0 === val && (val = !0);\n val && (bits += 4);\n val = fields.write;\n void 0 === val && (val = !0);\n val && (bits += 8);\n val = fields.read;\n void 0 === val && (val = !0);\n val && (bits += 16);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeAccessRequestOk(buffer) {\n var val, offset = 0, fields = {\n ticket: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n return fields;\n}\n\nfunction encodeAccessRequestOk(channel, fields) {\n var offset = 0, val = null, buffer = Buffer.alloc(14);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(1966091, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 1; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeDeclare(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n exchange: void 0,\n type: void 0,\n passive: void 0,\n durable: void 0,\n autoDelete: void 0,\n internal: void 0,\n nowait: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.type = val;\n val = !!(1 & buffer[offset]);\n fields.passive = val;\n val = !!(2 & buffer[offset]);\n fields.durable = val;\n val = !!(4 & buffer[offset]);\n fields.autoDelete = val;\n val = !!(8 & buffer[offset]);\n fields.internal = val;\n val = !!(16 & buffer[offset]);\n fields.nowait = val;\n offset++;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeExchangeDeclare(channel, fields) {\n var len, offset = 0, val = null, bits = 0, varyingSize = 0, scratchOffset = 0;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.type;\n if (void 0 === val) val = \"direct\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'type' is the wrong type; must be a string (up to 255 chars)\");\n var type_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += type_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(17 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621450, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.type;\n void 0 === val && (val = \"direct\");\n buffer[offset] = type_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += type_len;\n val = fields.passive;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.durable;\n void 0 === val && (val = !1);\n val && (bits += 2);\n val = fields.autoDelete;\n void 0 === val && (val = !1);\n val && (bits += 4);\n val = fields.internal;\n void 0 === val && (val = !1);\n val && (bits += 8);\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 16);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeDeclareOk(buffer) {\n return {};\n}\n\nfunction encodeExchangeDeclareOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621451, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeDelete(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n exchange: void 0,\n ifUnused: void 0,\n nowait: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n val = !!(1 & buffer[offset]);\n fields.ifUnused = val;\n val = !!(2 & buffer[offset]);\n fields.nowait = val;\n return fields;\n}\n\nfunction encodeExchangeDelete(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621460, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.ifUnused;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 2);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeDeleteOk(buffer) {\n return {};\n}\n\nfunction encodeExchangeDeleteOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621461, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeBind(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n destination: void 0,\n source: void 0,\n routingKey: void 0,\n nowait: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.destination = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.source = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n val = !!(1 & buffer[offset]);\n fields.nowait = val;\n offset++;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeExchangeBind(channel, fields) {\n var len, offset = 0, val = null, bits = 0, varyingSize = 0, scratchOffset = 0;\n val = fields.destination;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'destination'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'destination' is the wrong type; must be a string (up to 255 chars)\");\n var destination_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += destination_len;\n val = fields.source;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'source'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'source' is the wrong type; must be a string (up to 255 chars)\");\n var source_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += source_len;\n val = fields.routingKey;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(18 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621470, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.destination;\n void 0 === val && (val = void 0);\n buffer[offset] = destination_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += destination_len;\n val = fields.source;\n void 0 === val && (val = void 0);\n buffer[offset] = source_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += source_len;\n val = fields.routingKey;\n void 0 === val && (val = \"\");\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeBindOk(buffer) {\n return {};\n}\n\nfunction encodeExchangeBindOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621471, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeUnbind(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n destination: void 0,\n source: void 0,\n routingKey: void 0,\n nowait: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.destination = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.source = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n val = !!(1 & buffer[offset]);\n fields.nowait = val;\n offset++;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeExchangeUnbind(channel, fields) {\n var len, offset = 0, val = null, bits = 0, varyingSize = 0, scratchOffset = 0;\n val = fields.destination;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'destination'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'destination' is the wrong type; must be a string (up to 255 chars)\");\n var destination_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += destination_len;\n val = fields.source;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'source'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'source' is the wrong type; must be a string (up to 255 chars)\");\n var source_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += source_len;\n val = fields.routingKey;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(18 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621480, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.destination;\n void 0 === val && (val = void 0);\n buffer[offset] = destination_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += destination_len;\n val = fields.source;\n void 0 === val && (val = void 0);\n buffer[offset] = source_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += source_len;\n val = fields.routingKey;\n void 0 === val && (val = \"\");\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeExchangeUnbindOk(buffer) {\n return {};\n}\n\nfunction encodeExchangeUnbindOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(2621491, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueDeclare(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n passive: void 0,\n durable: void 0,\n exclusive: void 0,\n autoDelete: void 0,\n nowait: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n val = !!(1 & buffer[offset]);\n fields.passive = val;\n val = !!(2 & buffer[offset]);\n fields.durable = val;\n val = !!(4 & buffer[offset]);\n fields.exclusive = val;\n val = !!(8 & buffer[offset]);\n fields.autoDelete = val;\n val = !!(16 & buffer[offset]);\n fields.nowait = val;\n offset++;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeQueueDeclare(channel, fields) {\n var len, offset = 0, val = null, bits = 0, varyingSize = 0, scratchOffset = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276810, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.passive;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.durable;\n void 0 === val && (val = !1);\n val && (bits += 2);\n val = fields.exclusive;\n void 0 === val && (val = !1);\n val && (bits += 4);\n val = fields.autoDelete;\n void 0 === val && (val = !1);\n val && (bits += 8);\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 16);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueDeclareOk(buffer) {\n var val, len, offset = 0, fields = {\n queue: void 0,\n messageCount: void 0,\n consumerCount: void 0\n };\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.messageCount = val;\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.consumerCount = val;\n return fields;\n}\n\nfunction encodeQueueDeclareOk(channel, fields) {\n var offset = 0, val = null, varyingSize = 0;\n val = fields.queue;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'queue'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n var buffer = Buffer.alloc(21 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276811, 7);\n offset = 11;\n val = fields.queue;\n void 0 === val && (val = void 0);\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.messageCount;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'messageCount'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'messageCount' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n val = fields.consumerCount;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'consumerCount'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'consumerCount' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueBind(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n exchange: void 0,\n routingKey: void 0,\n nowait: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n val = !!(1 & buffer[offset]);\n fields.nowait = val;\n offset++;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeQueueBind(channel, fields) {\n var len, offset = 0, val = null, bits = 0, varyingSize = 0, scratchOffset = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.routingKey;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(18 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276820, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.routingKey;\n void 0 === val && (val = \"\");\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n bits = 0;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueBindOk(buffer) {\n return {};\n}\n\nfunction encodeQueueBindOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276821, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueuePurge(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n nowait: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n val = !!(1 & buffer[offset]);\n fields.nowait = val;\n return fields;\n}\n\nfunction encodeQueuePurge(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276830, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueuePurgeOk(buffer) {\n var val, offset = 0, fields = {\n messageCount: void 0\n };\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.messageCount = val;\n return fields;\n}\n\nfunction encodeQueuePurgeOk(channel, fields) {\n var offset = 0, val = null, buffer = Buffer.alloc(16);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276831, 7);\n offset = 11;\n val = fields.messageCount;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'messageCount'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'messageCount' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueDelete(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n ifUnused: void 0,\n ifEmpty: void 0,\n nowait: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n val = !!(1 & buffer[offset]);\n fields.ifUnused = val;\n val = !!(2 & buffer[offset]);\n fields.ifEmpty = val;\n val = !!(4 & buffer[offset]);\n fields.nowait = val;\n return fields;\n}\n\nfunction encodeQueueDelete(channel, fields) {\n var offset = 0, val = null, bits = 0, varyingSize = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n var buffer = Buffer.alloc(16 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276840, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.ifUnused;\n void 0 === val && (val = !1);\n val && (bits += 1);\n val = fields.ifEmpty;\n void 0 === val && (val = !1);\n val && (bits += 2);\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 4);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueDeleteOk(buffer) {\n var val, offset = 0, fields = {\n messageCount: void 0\n };\n val = buffer.readUInt32BE(offset);\n offset += 4;\n fields.messageCount = val;\n return fields;\n}\n\nfunction encodeQueueDeleteOk(channel, fields) {\n var offset = 0, val = null, buffer = Buffer.alloc(16);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276841, 7);\n offset = 11;\n val = fields.messageCount;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'messageCount'\");\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'messageCount' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt32BE(val, offset);\n offset += 4;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueUnbind(buffer) {\n var val, len, offset = 0, fields = {\n ticket: void 0,\n queue: void 0,\n exchange: void 0,\n routingKey: void 0,\n arguments: void 0\n };\n val = buffer.readUInt16BE(offset);\n offset += 2;\n fields.ticket = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.queue = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.exchange = val;\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.routingKey = val;\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.arguments = val;\n return fields;\n}\n\nfunction encodeQueueUnbind(channel, fields) {\n var len, offset = 0, val = null, varyingSize = 0, scratchOffset = 0;\n val = fields.queue;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'queue' is the wrong type; must be a string (up to 255 chars)\");\n var queue_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += queue_len;\n val = fields.exchange;\n if (void 0 === val) throw new Error(\"Missing value for mandatory field 'exchange'\");\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'exchange' is the wrong type; must be a string (up to 255 chars)\");\n var exchange_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += exchange_len;\n val = fields.routingKey;\n if (void 0 === val) val = \"\"; else if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'routingKey' is the wrong type; must be a string (up to 255 chars)\");\n var routingKey_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += routingKey_len;\n val = fields.arguments;\n if (void 0 === val) val = {}; else if (\"object\" != typeof val) throw new TypeError(\"Field 'arguments' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var arguments_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += arguments_encoded.length;\n var buffer = Buffer.alloc(17 + varyingSize);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276850, 7);\n offset = 11;\n val = fields.ticket;\n if (void 0 === val) val = 0; else if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'ticket' is the wrong type; must be a number (but not NaN)\");\n buffer.writeUInt16BE(val, offset);\n offset += 2;\n val = fields.queue;\n void 0 === val && (val = \"\");\n buffer[offset] = queue_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += queue_len;\n val = fields.exchange;\n void 0 === val && (val = void 0);\n buffer[offset] = exchange_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += exchange_len;\n val = fields.routingKey;\n void 0 === val && (val = \"\");\n buffer[offset] = routingKey_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += routingKey_len;\n offset += arguments_encoded.copy(buffer, offset);\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeQueueUnbindOk(buffer) {\n return {};\n}\n\nfunction encodeQueueUnbindOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3276851, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeTxSelect(buffer) {\n return {};\n}\n\nfunction encodeTxSelect(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5898250, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeTxSelectOk(buffer) {\n return {};\n}\n\nfunction encodeTxSelectOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5898251, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeTxCommit(buffer) {\n return {};\n}\n\nfunction encodeTxCommit(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5898260, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeTxCommitOk(buffer) {\n return {};\n}\n\nfunction encodeTxCommitOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5898261, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeTxRollback(buffer) {\n return {};\n}\n\nfunction encodeTxRollback(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5898270, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeTxRollbackOk(buffer) {\n return {};\n}\n\nfunction encodeTxRollbackOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5898271, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConfirmSelect(buffer) {\n var val, fields = {\n nowait: void 0\n };\n val = !!(1 & buffer[0]);\n fields.nowait = val;\n return fields;\n}\n\nfunction encodeConfirmSelect(channel, fields) {\n var offset = 0, val = null, bits = 0, buffer = Buffer.alloc(13);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5570570, 7);\n offset = 11;\n val = fields.nowait;\n void 0 === val && (val = !1);\n val && (bits += 1);\n buffer[offset] = bits;\n offset++;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction decodeConfirmSelectOk(buffer) {\n return {};\n}\n\nfunction encodeConfirmSelectOk(channel, fields) {\n var offset = 0, buffer = Buffer.alloc(12);\n buffer[0] = 1;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(5570571, 7);\n offset = 11;\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n return buffer;\n}\n\nfunction encodeBasicProperties(channel, size, fields) {\n var val, len, offset = 0, flags = 0, scratchOffset = 0, varyingSize = 0;\n val = fields.contentType;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'contentType' is the wrong type; must be a string (up to 255 chars)\");\n var contentType_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += contentType_len;\n }\n val = fields.contentEncoding;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'contentEncoding' is the wrong type; must be a string (up to 255 chars)\");\n var contentEncoding_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += contentEncoding_len;\n }\n val = fields.headers;\n if (void 0 != val) {\n if (\"object\" != typeof val) throw new TypeError(\"Field 'headers' is the wrong type; must be an object\");\n len = encodeTable(SCRATCH, val, scratchOffset);\n var headers_encoded = SCRATCH.slice(scratchOffset, scratchOffset + len);\n scratchOffset += len;\n varyingSize += headers_encoded.length;\n }\n val = fields.deliveryMode;\n if (void 0 != val) {\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'deliveryMode' is the wrong type; must be a number (but not NaN)\");\n varyingSize += 1;\n }\n val = fields.priority;\n if (void 0 != val) {\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'priority' is the wrong type; must be a number (but not NaN)\");\n varyingSize += 1;\n }\n val = fields.correlationId;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'correlationId' is the wrong type; must be a string (up to 255 chars)\");\n var correlationId_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += correlationId_len;\n }\n val = fields.replyTo;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'replyTo' is the wrong type; must be a string (up to 255 chars)\");\n var replyTo_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += replyTo_len;\n }\n val = fields.expiration;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'expiration' is the wrong type; must be a string (up to 255 chars)\");\n var expiration_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += expiration_len;\n }\n val = fields.messageId;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'messageId' is the wrong type; must be a string (up to 255 chars)\");\n var messageId_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += messageId_len;\n }\n val = fields.timestamp;\n if (void 0 != val) {\n if (\"number\" != typeof val || isNaN(val)) throw new TypeError(\"Field 'timestamp' is the wrong type; must be a number (but not NaN)\");\n varyingSize += 8;\n }\n val = fields.type;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'type' is the wrong type; must be a string (up to 255 chars)\");\n var type_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += type_len;\n }\n val = fields.userId;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'userId' is the wrong type; must be a string (up to 255 chars)\");\n var userId_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += userId_len;\n }\n val = fields.appId;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'appId' is the wrong type; must be a string (up to 255 chars)\");\n var appId_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += appId_len;\n }\n val = fields.clusterId;\n if (void 0 != val) {\n if (!(\"string\" == typeof val && Buffer.byteLength(val) < 256)) throw new TypeError(\"Field 'clusterId' is the wrong type; must be a string (up to 255 chars)\");\n var clusterId_len = Buffer.byteLength(val, \"utf8\");\n varyingSize += 1;\n varyingSize += clusterId_len;\n }\n var buffer = Buffer.alloc(22 + varyingSize);\n buffer[0] = 2;\n buffer.writeUInt16BE(channel, 1);\n buffer.writeUInt32BE(3932160, 7);\n ints.writeUInt64BE(buffer, size, 11);\n flags = 0;\n offset = 21;\n val = fields.contentType;\n if (void 0 != val) {\n flags += 32768;\n buffer[offset] = contentType_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += contentType_len;\n }\n val = fields.contentEncoding;\n if (void 0 != val) {\n flags += 16384;\n buffer[offset] = contentEncoding_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += contentEncoding_len;\n }\n val = fields.headers;\n if (void 0 != val) {\n flags += 8192;\n offset += headers_encoded.copy(buffer, offset);\n }\n val = fields.deliveryMode;\n if (void 0 != val) {\n flags += 4096;\n buffer.writeUInt8(val, offset);\n offset++;\n }\n val = fields.priority;\n if (void 0 != val) {\n flags += 2048;\n buffer.writeUInt8(val, offset);\n offset++;\n }\n val = fields.correlationId;\n if (void 0 != val) {\n flags += 1024;\n buffer[offset] = correlationId_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += correlationId_len;\n }\n val = fields.replyTo;\n if (void 0 != val) {\n flags += 512;\n buffer[offset] = replyTo_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += replyTo_len;\n }\n val = fields.expiration;\n if (void 0 != val) {\n flags += 256;\n buffer[offset] = expiration_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += expiration_len;\n }\n val = fields.messageId;\n if (void 0 != val) {\n flags += 128;\n buffer[offset] = messageId_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += messageId_len;\n }\n val = fields.timestamp;\n if (void 0 != val) {\n flags += 64;\n ints.writeUInt64BE(buffer, val, offset);\n offset += 8;\n }\n val = fields.type;\n if (void 0 != val) {\n flags += 32;\n buffer[offset] = type_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += type_len;\n }\n val = fields.userId;\n if (void 0 != val) {\n flags += 16;\n buffer[offset] = userId_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += userId_len;\n }\n val = fields.appId;\n if (void 0 != val) {\n flags += 8;\n buffer[offset] = appId_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += appId_len;\n }\n val = fields.clusterId;\n if (void 0 != val) {\n flags += 4;\n buffer[offset] = clusterId_len;\n offset++;\n buffer.write(val, offset, \"utf8\");\n offset += clusterId_len;\n }\n buffer[offset] = 206;\n buffer.writeUInt32BE(offset - 7, 3);\n buffer.writeUInt16BE(flags, 19);\n return buffer.subarray(0, offset + 1);\n}\n\nfunction decodeBasicProperties(buffer) {\n var flags, val, len, offset = 2;\n flags = buffer.readUInt16BE(0);\n if (0 === flags) return {};\n var fields = {\n contentType: void 0,\n contentEncoding: void 0,\n headers: void 0,\n deliveryMode: void 0,\n priority: void 0,\n correlationId: void 0,\n replyTo: void 0,\n expiration: void 0,\n messageId: void 0,\n timestamp: void 0,\n type: void 0,\n userId: void 0,\n appId: void 0,\n clusterId: void 0\n };\n if (32768 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.contentType = val;\n }\n if (16384 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.contentEncoding = val;\n }\n if (8192 & flags) {\n len = buffer.readUInt32BE(offset);\n offset += 4;\n val = decodeFields(buffer.subarray(offset, offset + len));\n offset += len;\n fields.headers = val;\n }\n if (4096 & flags) {\n val = buffer[offset];\n offset++;\n fields.deliveryMode = val;\n }\n if (2048 & flags) {\n val = buffer[offset];\n offset++;\n fields.priority = val;\n }\n if (1024 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.correlationId = val;\n }\n if (512 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.replyTo = val;\n }\n if (256 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.expiration = val;\n }\n if (128 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.messageId = val;\n }\n if (64 & flags) {\n val = ints.readUInt64BE(buffer, offset);\n offset += 8;\n fields.timestamp = val;\n }\n if (32 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.type = val;\n }\n if (16 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.userId = val;\n }\n if (8 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.appId = val;\n }\n if (4 & flags) {\n len = buffer.readUInt8(offset);\n offset++;\n val = buffer.toString(\"utf8\", offset, offset + len);\n offset += len;\n fields.clusterId = val;\n }\n return fields;\n}\n\nvar codec = require(\"./codec\"), ints = require(\"buffer-more-ints\"), encodeTable = codec.encodeTable, decodeFields = codec.decodeFields, SCRATCH = Buffer.alloc(65536), EMPTY_OBJECT = Object.freeze({});\n\nmodule.exports.constants = {\n FRAME_METHOD: 1,\n FRAME_HEADER: 2,\n FRAME_BODY: 3,\n FRAME_HEARTBEAT: 8,\n FRAME_MIN_SIZE: 4096,\n FRAME_END: 206,\n REPLY_SUCCESS: 200,\n CONTENT_TOO_LARGE: 311,\n NO_ROUTE: 312,\n NO_CONSUMERS: 313,\n ACCESS_REFUSED: 403,\n NOT_FOUND: 404,\n RESOURCE_LOCKED: 405,\n PRECONDITION_FAILED: 406,\n CONNECTION_FORCED: 320,\n INVALID_PATH: 402,\n FRAME_ERROR: 501,\n SYNTAX_ERROR: 502,\n COMMAND_INVALID: 503,\n CHANNEL_ERROR: 504,\n UNEXPECTED_FRAME: 505,\n RESOURCE_ERROR: 506,\n NOT_ALLOWED: 530,\n NOT_IMPLEMENTED: 540,\n INTERNAL_ERROR: 541\n};\n\nmodule.exports.constant_strs = {\n \"1\": \"FRAME-METHOD\",\n \"2\": \"FRAME-HEADER\",\n \"3\": \"FRAME-BODY\",\n \"8\": \"FRAME-HEARTBEAT\",\n \"200\": \"REPLY-SUCCESS\",\n \"206\": \"FRAME-END\",\n \"311\": \"CONTENT-TOO-LARGE\",\n \"312\": \"NO-ROUTE\",\n \"313\": \"NO-CONSUMERS\",\n \"320\": \"CONNECTION-FORCED\",\n \"402\": \"INVALID-PATH\",\n \"403\": \"ACCESS-REFUSED\",\n \"404\": \"NOT-FOUND\",\n \"405\": \"RESOURCE-LOCKED\",\n \"406\": \"PRECONDITION-FAILED\",\n \"501\": \"FRAME-ERROR\",\n \"502\": \"SYNTAX-ERROR\",\n \"503\": \"COMMAND-INVALID\",\n \"504\": \"CHANNEL-ERROR\",\n \"505\": \"UNEXPECTED-FRAME\",\n \"506\": \"RESOURCE-ERROR\",\n \"530\": \"NOT-ALLOWED\",\n \"540\": \"NOT-IMPLEMENTED\",\n \"541\": \"INTERNAL-ERROR\",\n \"4096\": \"FRAME-MIN-SIZE\"\n};\n\nmodule.exports.FRAME_OVERHEAD = 8;\n\nmodule.exports.decode = function(id, buf) {\n switch (id) {\n case 3932170:\n return decodeBasicQos(buf);\n\n case 3932171:\n return decodeBasicQosOk(buf);\n\n case 3932180:\n return decodeBasicConsume(buf);\n\n case 3932181:\n return decodeBasicConsumeOk(buf);\n\n case 3932190:\n return decodeBasicCancel(buf);\n\n case 3932191:\n return decodeBasicCancelOk(buf);\n\n case 3932200:\n return decodeBasicPublish(buf);\n\n case 3932210:\n return decodeBasicReturn(buf);\n\n case 3932220:\n return decodeBasicDeliver(buf);\n\n case 3932230:\n return decodeBasicGet(buf);\n\n case 3932231:\n return decodeBasicGetOk(buf);\n\n case 3932232:\n return decodeBasicGetEmpty(buf);\n\n case 3932240:\n return decodeBasicAck(buf);\n\n case 3932250:\n return decodeBasicReject(buf);\n\n case 3932260:\n return decodeBasicRecoverAsync(buf);\n\n case 3932270:\n return decodeBasicRecover(buf);\n\n case 3932271:\n return decodeBasicRecoverOk(buf);\n\n case 3932280:\n return decodeBasicNack(buf);\n\n case 655370:\n return decodeConnectionStart(buf);\n\n case 655371:\n return decodeConnectionStartOk(buf);\n\n case 655380:\n return decodeConnectionSecure(buf);\n\n case 655381:\n return decodeConnectionSecureOk(buf);\n\n case 655390:\n return decodeConnectionTune(buf);\n\n case 655391:\n return decodeConnectionTuneOk(buf);\n\n case 655400:\n return decodeConnectionOpen(buf);\n\n case 655401:\n return decodeConnectionOpenOk(buf);\n\n case 655410:\n return decodeConnectionClose(buf);\n\n case 655411:\n return decodeConnectionCloseOk(buf);\n\n case 655420:\n return decodeConnectionBlocked(buf);\n\n case 655421:\n return decodeConnectionUnblocked(buf);\n\n case 655430:\n return decodeConnectionUpdateSecret(buf);\n\n case 655431:\n return decodeConnectionUpdateSecretOk(buf);\n\n case 1310730:\n return decodeChannelOpen(buf);\n\n case 1310731:\n return decodeChannelOpenOk(buf);\n\n case 1310740:\n return decodeChannelFlow(buf);\n\n case 1310741:\n return decodeChannelFlowOk(buf);\n\n case 1310760:\n return decodeChannelClose(buf);\n\n case 1310761:\n return decodeChannelCloseOk(buf);\n\n case 1966090:\n return decodeAccessRequest(buf);\n\n case 1966091:\n return decodeAccessRequestOk(buf);\n\n case 2621450:\n return decodeExchangeDeclare(buf);\n\n case 2621451:\n return decodeExchangeDeclareOk(buf);\n\n case 2621460:\n return decodeExchangeDelete(buf);\n\n case 2621461:\n return decodeExchangeDeleteOk(buf);\n\n case 2621470:\n return decodeExchangeBind(buf);\n\n case 2621471:\n return decodeExchangeBindOk(buf);\n\n case 2621480:\n return decodeExchangeUnbind(buf);\n\n case 2621491:\n return decodeExchangeUnbindOk(buf);\n\n case 3276810:\n return decodeQueueDeclare(buf);\n\n case 3276811:\n return decodeQueueDeclareOk(buf);\n\n case 3276820:\n return decodeQueueBind(buf);\n\n case 3276821:\n return decodeQueueBindOk(buf);\n\n case 3276830:\n return decodeQueuePurge(buf);\n\n case 3276831:\n return decodeQueuePurgeOk(buf);\n\n case 3276840:\n return decodeQueueDelete(buf);\n\n case 3276841:\n return decodeQueueDeleteOk(buf);\n\n case 3276850:\n return decodeQueueUnbind(buf);\n\n case 3276851:\n return decodeQueueUnbindOk(buf);\n\n case 5898250:\n return decodeTxSelect(buf);\n\n case 5898251:\n return decodeTxSelectOk(buf);\n\n case 5898260:\n return decodeTxCommit(buf);\n\n case 5898261:\n return decodeTxCommitOk(buf);\n\n case 5898270:\n return decodeTxRollback(buf);\n\n case 5898271:\n return decodeTxRollbackOk(buf);\n\n case 5570570:\n return decodeConfirmSelect(buf);\n\n case 5570571:\n return decodeConfirmSelectOk(buf);\n\n case 60:\n return decodeBasicProperties(buf);\n\n default:\n throw new Error(\"Unknown class/method ID\");\n }\n};\n\nmodule.exports.encodeMethod = function(id, channel, fields) {\n switch (id) {\n case 3932170:\n return encodeBasicQos(channel, fields);\n\n case 3932171:\n return encodeBasicQosOk(channel, fields);\n\n case 3932180:\n return encodeBasicConsume(channel, fields);\n\n case 3932181:\n return encodeBasicConsumeOk(channel, fields);\n\n case 3932190:\n return encodeBasicCancel(channel, fields);\n\n case 3932191:\n return encodeBasicCancelOk(channel, fields);\n\n case 3932200:\n return encodeBasicPublish(channel, fields);\n\n case 3932210:\n return encodeBasicReturn(channel, fields);\n\n case 3932220:\n return encodeBasicDeliver(channel, fields);\n\n case 3932230:\n return encodeBasicGet(channel, fields);\n\n case 3932231:\n return encodeBasicGetOk(channel, fields);\n\n case 3932232:\n return encodeBasicGetEmpty(channel, fields);\n\n case 3932240:\n return encodeBasicAck(channel, fields);\n\n case 3932250:\n return encodeBasicReject(channel, fields);\n\n case 3932260:\n return encodeBasicRecoverAsync(channel, fields);\n\n case 3932270:\n return encodeBasicRecover(channel, fields);\n\n case 3932271:\n return encodeBasicRecoverOk(channel, fields);\n\n case 3932280:\n return encodeBasicNack(channel, fields);\n\n case 655370:\n return encodeConnectionStart(channel, fields);\n\n case 655371:\n return encodeConnectionStartOk(channel, fields);\n\n case 655380:\n return encodeConnectionSecure(channel, fields);\n\n case 655381:\n return encodeConnectionSecureOk(channel, fields);\n\n case 655390:\n return encodeConnectionTune(channel, fields);\n\n case 655391:\n return encodeConnectionTuneOk(channel, fields);\n\n case 655400:\n return encodeConnectionOpen(channel, fields);\n\n case 655401:\n return encodeConnectionOpenOk(channel, fields);\n\n case 655410:\n return encodeConnectionClose(channel, fields);\n\n case 655411:\n return encodeConnectionCloseOk(channel, fields);\n\n case 655420:\n return encodeConnectionBlocked(channel, fields);\n\n case 655421:\n return encodeConnectionUnblocked(channel, fields);\n\n case 655430:\n return encodeConnectionUpdateSecret(channel, fields);\n\n case 655431:\n return encodeConnectionUpdateSecretOk(channel, fields);\n\n case 1310730:\n return encodeChannelOpen(channel, fields);\n\n case 1310731:\n return encodeChannelOpenOk(channel, fields);\n\n case 1310740:\n return encodeChannelFlow(channel, fields);\n\n case 1310741:\n return encodeChannelFlowOk(channel, fields);\n\n case 1310760:\n return encodeChannelClose(channel, fields);\n\n case 1310761:\n return encodeChannelCloseOk(channel, fields);\n\n case 1966090:\n return encodeAccessRequest(channel, fields);\n\n case 1966091:\n return encodeAccessRequestOk(channel, fields);\n\n case 2621450:\n return encodeExchangeDeclare(channel, fields);\n\n case 2621451:\n return encodeExchangeDeclareOk(channel, fields);\n\n case 2621460:\n return encodeExchangeDelete(channel, fields);\n\n case 2621461:\n return encodeExchangeDeleteOk(channel, fields);\n\n case 2621470:\n return encodeExchangeBind(channel, fields);\n\n case 2621471:\n return encodeExchangeBindOk(channel, fields);\n\n case 2621480:\n return encodeExchangeUnbind(channel, fields);\n\n case 2621491:\n return encodeExchangeUnbindOk(channel, fields);\n\n case 3276810:\n return encodeQueueDeclare(channel, fields);\n\n case 3276811:\n return encodeQueueDeclareOk(channel, fields);\n\n case 3276820:\n return encodeQueueBind(channel, fields);\n\n case 3276821:\n return encodeQueueBindOk(channel, fields);\n\n case 3276830:\n return encodeQueuePurge(channel, fields);\n\n case 3276831:\n return encodeQueuePurgeOk(channel, fields);\n\n case 3276840:\n return encodeQueueDelete(channel, fields);\n\n case 3276841:\n return encodeQueueDeleteOk(channel, fields);\n\n case 3276850:\n return encodeQueueUnbind(channel, fields);\n\n case 3276851:\n return encodeQueueUnbindOk(channel, fields);\n\n case 5898250:\n return encodeTxSelect(channel, fields);\n\n case 5898251:\n return encodeTxSelectOk(channel, fields);\n\n case 5898260:\n return encodeTxCommit(channel, fields);\n\n case 5898261:\n return encodeTxCommitOk(channel, fields);\n\n case 5898270:\n return encodeTxRollback(channel, fields);\n\n case 5898271:\n return encodeTxRollbackOk(channel, fields);\n\n case 5570570:\n return encodeConfirmSelect(channel, fields);\n\n case 5570571:\n return encodeConfirmSelectOk(channel, fields);\n\n default:\n throw new Error(\"Unknown class/method ID\");\n }\n};\n\nmodule.exports.encodeProperties = function(id, channel, size, fields) {\n switch (id) {\n case 60:\n return encodeBasicProperties(channel, size, fields);\n\n default:\n throw new Error(\"Unknown class/properties ID\");\n }\n};\n\nmodule.exports.info = function(id) {\n switch (id) {\n case 3932170:\n return methodInfoBasicQos;\n\n case 3932171:\n return methodInfoBasicQosOk;\n\n case 3932180:\n return methodInfoBasicConsume;\n\n case 3932181:\n return methodInfoBasicConsumeOk;\n\n case 3932190:\n return methodInfoBasicCancel;\n\n case 3932191:\n return methodInfoBasicCancelOk;\n\n case 3932200:\n return methodInfoBasicPublish;\n\n case 3932210:\n return methodInfoBasicReturn;\n\n case 3932220:\n return methodInfoBasicDeliver;\n\n case 3932230:\n return methodInfoBasicGet;\n\n case 3932231:\n return methodInfoBasicGetOk;\n\n case 3932232:\n return methodInfoBasicGetEmpty;\n\n case 3932240:\n return methodInfoBasicAck;\n\n case 3932250:\n return methodInfoBasicReject;\n\n case 3932260:\n return methodInfoBasicRecoverAsync;\n\n case 3932270:\n return methodInfoBasicRecover;\n\n case 3932271:\n return methodInfoBasicRecoverOk;\n\n case 3932280:\n return methodInfoBasicNack;\n\n case 655370:\n return methodInfoConnectionStart;\n\n case 655371:\n return methodInfoConnectionStartOk;\n\n case 655380:\n return methodInfoConnectionSecure;\n\n case 655381:\n return methodInfoConnectionSecureOk;\n\n case 655390:\n return methodInfoConnectionTune;\n\n case 655391:\n return methodInfoConnectionTuneOk;\n\n case 655400:\n return methodInfoConnectionOpen;\n\n case 655401:\n return methodInfoConnectionOpenOk;\n\n case 655410:\n return methodInfoConnectionClose;\n\n case 655411:\n return methodInfoConnectionCloseOk;\n\n case 655420:\n return methodInfoConnectionBlocked;\n\n case 655421:\n return methodInfoConnectionUnblocked;\n\n case 655430:\n return methodInfoConnectionUpdateSecret;\n\n case 655431:\n return methodInfoConnectionUpdateSecretOk;\n\n case 1310730:\n return methodInfoChannelOpen;\n\n case 1310731:\n return methodInfoChannelOpenOk;\n\n case 1310740:\n return methodInfoChannelFlow;\n\n case 1310741:\n return methodInfoChannelFlowOk;\n\n case 1310760:\n return methodInfoChannelClose;\n\n case 1310761:\n return methodInfoChannelCloseOk;\n\n case 1966090:\n return methodInfoAccessRequest;\n\n case 1966091:\n return methodInfoAccessRequestOk;\n\n case 2621450:\n return methodInfoExchangeDeclare;\n\n case 2621451:\n return methodInfoExchangeDeclareOk;\n\n case 2621460:\n return methodInfoExchangeDelete;\n\n case 2621461:\n return methodInfoExchangeDeleteOk;\n\n case 2621470:\n return methodInfoExchangeBind;\n\n case 2621471:\n return methodInfoExchangeBindOk;\n\n case 2621480:\n return methodInfoExchangeUnbind;\n\n case 2621491:\n return methodInfoExchangeUnbindOk;\n\n case 3276810:\n return methodInfoQueueDeclare;\n\n case 3276811:\n return methodInfoQueueDeclareOk;\n\n case 3276820:\n return methodInfoQueueBind;\n\n case 3276821:\n return methodInfoQueueBindOk;\n\n case 3276830:\n return methodInfoQueuePurge;\n\n case 3276831:\n return methodInfoQueuePurgeOk;\n\n case 3276840:\n return methodInfoQueueDelete;\n\n case 3276841:\n return methodInfoQueueDeleteOk;\n\n case 3276850:\n return methodInfoQueueUnbind;\n\n case 3276851:\n return methodInfoQueueUnbindOk;\n\n case 5898250:\n return methodInfoTxSelect;\n\n case 5898251:\n return methodInfoTxSelectOk;\n\n case 5898260:\n return methodInfoTxCommit;\n\n case 5898261:\n return methodInfoTxCommitOk;\n\n case 5898270:\n return methodInfoTxRollback;\n\n case 5898271:\n return methodInfoTxRollbackOk;\n\n case 5570570:\n return methodInfoConfirmSelect;\n\n case 5570571:\n return methodInfoConfirmSelectOk;\n\n case 60:\n return propertiesInfoBasicProperties;\n\n default:\n throw new Error(\"Unknown class/method ID\");\n }\n};\n\nmodule.exports.BasicQos = 3932170;\n\nvar methodInfoBasicQos = module.exports.methodInfoBasicQos = {\n id: 3932170,\n classId: 60,\n methodId: 10,\n name: \"BasicQos\",\n args: [ {\n type: \"long\",\n name: \"prefetchSize\",\n default: 0\n }, {\n type: \"short\",\n name: \"prefetchCount\",\n default: 0\n }, {\n type: \"bit\",\n name: \"global\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicQosOk = 3932171;\n\nvar methodInfoBasicQosOk = module.exports.methodInfoBasicQosOk = {\n id: 3932171,\n classId: 60,\n methodId: 11,\n name: \"BasicQosOk\",\n args: []\n};\n\nmodule.exports.BasicConsume = 3932180;\n\nvar methodInfoBasicConsume = module.exports.methodInfoBasicConsume = {\n id: 3932180,\n classId: 60,\n methodId: 20,\n name: \"BasicConsume\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"shortstr\",\n name: \"consumerTag\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"noLocal\",\n default: !1\n }, {\n type: \"bit\",\n name: \"noAck\",\n default: !1\n }, {\n type: \"bit\",\n name: \"exclusive\",\n default: !1\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.BasicConsumeOk = 3932181;\n\nvar methodInfoBasicConsumeOk = module.exports.methodInfoBasicConsumeOk = {\n id: 3932181,\n classId: 60,\n methodId: 21,\n name: \"BasicConsumeOk\",\n args: [ {\n type: \"shortstr\",\n name: \"consumerTag\"\n } ]\n};\n\nmodule.exports.BasicCancel = 3932190;\n\nvar methodInfoBasicCancel = module.exports.methodInfoBasicCancel = {\n id: 3932190,\n classId: 60,\n methodId: 30,\n name: \"BasicCancel\",\n args: [ {\n type: \"shortstr\",\n name: \"consumerTag\"\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicCancelOk = 3932191;\n\nvar methodInfoBasicCancelOk = module.exports.methodInfoBasicCancelOk = {\n id: 3932191,\n classId: 60,\n methodId: 31,\n name: \"BasicCancelOk\",\n args: [ {\n type: \"shortstr\",\n name: \"consumerTag\"\n } ]\n};\n\nmodule.exports.BasicPublish = 3932200;\n\nvar methodInfoBasicPublish = module.exports.methodInfoBasicPublish = {\n id: 3932200,\n classId: 60,\n methodId: 40,\n name: \"BasicPublish\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"exchange\",\n default: \"\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"mandatory\",\n default: !1\n }, {\n type: \"bit\",\n name: \"immediate\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicReturn = 3932210;\n\nvar methodInfoBasicReturn = module.exports.methodInfoBasicReturn = {\n id: 3932210,\n classId: 60,\n methodId: 50,\n name: \"BasicReturn\",\n args: [ {\n type: \"short\",\n name: \"replyCode\"\n }, {\n type: \"shortstr\",\n name: \"replyText\",\n default: \"\"\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\"\n } ]\n};\n\nmodule.exports.BasicDeliver = 3932220;\n\nvar methodInfoBasicDeliver = module.exports.methodInfoBasicDeliver = {\n id: 3932220,\n classId: 60,\n methodId: 60,\n name: \"BasicDeliver\",\n args: [ {\n type: \"shortstr\",\n name: \"consumerTag\"\n }, {\n type: \"longlong\",\n name: \"deliveryTag\"\n }, {\n type: \"bit\",\n name: \"redelivered\",\n default: !1\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\"\n } ]\n};\n\nmodule.exports.BasicGet = 3932230;\n\nvar methodInfoBasicGet = module.exports.methodInfoBasicGet = {\n id: 3932230,\n classId: 60,\n methodId: 70,\n name: \"BasicGet\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"noAck\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicGetOk = 3932231;\n\nvar methodInfoBasicGetOk = module.exports.methodInfoBasicGetOk = {\n id: 3932231,\n classId: 60,\n methodId: 71,\n name: \"BasicGetOk\",\n args: [ {\n type: \"longlong\",\n name: \"deliveryTag\"\n }, {\n type: \"bit\",\n name: \"redelivered\",\n default: !1\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\"\n }, {\n type: \"long\",\n name: \"messageCount\"\n } ]\n};\n\nmodule.exports.BasicGetEmpty = 3932232;\n\nvar methodInfoBasicGetEmpty = module.exports.methodInfoBasicGetEmpty = {\n id: 3932232,\n classId: 60,\n methodId: 72,\n name: \"BasicGetEmpty\",\n args: [ {\n type: \"shortstr\",\n name: \"clusterId\",\n default: \"\"\n } ]\n};\n\nmodule.exports.BasicAck = 3932240;\n\nvar methodInfoBasicAck = module.exports.methodInfoBasicAck = {\n id: 3932240,\n classId: 60,\n methodId: 80,\n name: \"BasicAck\",\n args: [ {\n type: \"longlong\",\n name: \"deliveryTag\",\n default: 0\n }, {\n type: \"bit\",\n name: \"multiple\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicReject = 3932250;\n\nvar methodInfoBasicReject = module.exports.methodInfoBasicReject = {\n id: 3932250,\n classId: 60,\n methodId: 90,\n name: \"BasicReject\",\n args: [ {\n type: \"longlong\",\n name: \"deliveryTag\"\n }, {\n type: \"bit\",\n name: \"requeue\",\n default: !0\n } ]\n};\n\nmodule.exports.BasicRecoverAsync = 3932260;\n\nvar methodInfoBasicRecoverAsync = module.exports.methodInfoBasicRecoverAsync = {\n id: 3932260,\n classId: 60,\n methodId: 100,\n name: \"BasicRecoverAsync\",\n args: [ {\n type: \"bit\",\n name: \"requeue\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicRecover = 3932270;\n\nvar methodInfoBasicRecover = module.exports.methodInfoBasicRecover = {\n id: 3932270,\n classId: 60,\n methodId: 110,\n name: \"BasicRecover\",\n args: [ {\n type: \"bit\",\n name: \"requeue\",\n default: !1\n } ]\n};\n\nmodule.exports.BasicRecoverOk = 3932271;\n\nvar methodInfoBasicRecoverOk = module.exports.methodInfoBasicRecoverOk = {\n id: 3932271,\n classId: 60,\n methodId: 111,\n name: \"BasicRecoverOk\",\n args: []\n};\n\nmodule.exports.BasicNack = 3932280;\n\nvar methodInfoBasicNack = module.exports.methodInfoBasicNack = {\n id: 3932280,\n classId: 60,\n methodId: 120,\n name: \"BasicNack\",\n args: [ {\n type: \"longlong\",\n name: \"deliveryTag\",\n default: 0\n }, {\n type: \"bit\",\n name: \"multiple\",\n default: !1\n }, {\n type: \"bit\",\n name: \"requeue\",\n default: !0\n } ]\n};\n\nmodule.exports.ConnectionStart = 655370;\n\nvar methodInfoConnectionStart = module.exports.methodInfoConnectionStart = {\n id: 655370,\n classId: 10,\n methodId: 10,\n name: \"ConnectionStart\",\n args: [ {\n type: \"octet\",\n name: \"versionMajor\",\n default: 0\n }, {\n type: \"octet\",\n name: \"versionMinor\",\n default: 9\n }, {\n type: \"table\",\n name: \"serverProperties\"\n }, {\n type: \"longstr\",\n name: \"mechanisms\",\n default: \"PLAIN\"\n }, {\n type: \"longstr\",\n name: \"locales\",\n default: \"en_US\"\n } ]\n};\n\nmodule.exports.ConnectionStartOk = 655371;\n\nvar methodInfoConnectionStartOk = module.exports.methodInfoConnectionStartOk = {\n id: 655371,\n classId: 10,\n methodId: 11,\n name: \"ConnectionStartOk\",\n args: [ {\n type: \"table\",\n name: \"clientProperties\"\n }, {\n type: \"shortstr\",\n name: \"mechanism\",\n default: \"PLAIN\"\n }, {\n type: \"longstr\",\n name: \"response\"\n }, {\n type: \"shortstr\",\n name: \"locale\",\n default: \"en_US\"\n } ]\n};\n\nmodule.exports.ConnectionSecure = 655380;\n\nvar methodInfoConnectionSecure = module.exports.methodInfoConnectionSecure = {\n id: 655380,\n classId: 10,\n methodId: 20,\n name: \"ConnectionSecure\",\n args: [ {\n type: \"longstr\",\n name: \"challenge\"\n } ]\n};\n\nmodule.exports.ConnectionSecureOk = 655381;\n\nvar methodInfoConnectionSecureOk = module.exports.methodInfoConnectionSecureOk = {\n id: 655381,\n classId: 10,\n methodId: 21,\n name: \"ConnectionSecureOk\",\n args: [ {\n type: \"longstr\",\n name: \"response\"\n } ]\n};\n\nmodule.exports.ConnectionTune = 655390;\n\nvar methodInfoConnectionTune = module.exports.methodInfoConnectionTune = {\n id: 655390,\n classId: 10,\n methodId: 30,\n name: \"ConnectionTune\",\n args: [ {\n type: \"short\",\n name: \"channelMax\",\n default: 0\n }, {\n type: \"long\",\n name: \"frameMax\",\n default: 0\n }, {\n type: \"short\",\n name: \"heartbeat\",\n default: 0\n } ]\n};\n\nmodule.exports.ConnectionTuneOk = 655391;\n\nvar methodInfoConnectionTuneOk = module.exports.methodInfoConnectionTuneOk = {\n id: 655391,\n classId: 10,\n methodId: 31,\n name: \"ConnectionTuneOk\",\n args: [ {\n type: \"short\",\n name: \"channelMax\",\n default: 0\n }, {\n type: \"long\",\n name: \"frameMax\",\n default: 0\n }, {\n type: \"short\",\n name: \"heartbeat\",\n default: 0\n } ]\n};\n\nmodule.exports.ConnectionOpen = 655400;\n\nvar methodInfoConnectionOpen = module.exports.methodInfoConnectionOpen = {\n id: 655400,\n classId: 10,\n methodId: 40,\n name: \"ConnectionOpen\",\n args: [ {\n type: \"shortstr\",\n name: \"virtualHost\",\n default: \"/\"\n }, {\n type: \"shortstr\",\n name: \"capabilities\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"insist\",\n default: !1\n } ]\n};\n\nmodule.exports.ConnectionOpenOk = 655401;\n\nvar methodInfoConnectionOpenOk = module.exports.methodInfoConnectionOpenOk = {\n id: 655401,\n classId: 10,\n methodId: 41,\n name: \"ConnectionOpenOk\",\n args: [ {\n type: \"shortstr\",\n name: \"knownHosts\",\n default: \"\"\n } ]\n};\n\nmodule.exports.ConnectionClose = 655410;\n\nvar methodInfoConnectionClose = module.exports.methodInfoConnectionClose = {\n id: 655410,\n classId: 10,\n methodId: 50,\n name: \"ConnectionClose\",\n args: [ {\n type: \"short\",\n name: \"replyCode\"\n }, {\n type: \"shortstr\",\n name: \"replyText\",\n default: \"\"\n }, {\n type: \"short\",\n name: \"classId\"\n }, {\n type: \"short\",\n name: \"methodId\"\n } ]\n};\n\nmodule.exports.ConnectionCloseOk = 655411;\n\nvar methodInfoConnectionCloseOk = module.exports.methodInfoConnectionCloseOk = {\n id: 655411,\n classId: 10,\n methodId: 51,\n name: \"ConnectionCloseOk\",\n args: []\n};\n\nmodule.exports.ConnectionBlocked = 655420;\n\nvar methodInfoConnectionBlocked = module.exports.methodInfoConnectionBlocked = {\n id: 655420,\n classId: 10,\n methodId: 60,\n name: \"ConnectionBlocked\",\n args: [ {\n type: \"shortstr\",\n name: \"reason\",\n default: \"\"\n } ]\n};\n\nmodule.exports.ConnectionUnblocked = 655421;\n\nvar methodInfoConnectionUnblocked = module.exports.methodInfoConnectionUnblocked = {\n id: 655421,\n classId: 10,\n methodId: 61,\n name: \"ConnectionUnblocked\",\n args: []\n};\n\nmodule.exports.ConnectionUpdateSecret = 655430;\n\nvar methodInfoConnectionUpdateSecret = module.exports.methodInfoConnectionUpdateSecret = {\n id: 655430,\n classId: 10,\n methodId: 70,\n name: \"ConnectionUpdateSecret\",\n args: [ {\n type: \"longstr\",\n name: \"newSecret\"\n }, {\n type: \"shortstr\",\n name: \"reason\"\n } ]\n};\n\nmodule.exports.ConnectionUpdateSecretOk = 655431;\n\nvar methodInfoConnectionUpdateSecretOk = module.exports.methodInfoConnectionUpdateSecretOk = {\n id: 655431,\n classId: 10,\n methodId: 71,\n name: \"ConnectionUpdateSecretOk\",\n args: []\n};\n\nmodule.exports.ChannelOpen = 1310730;\n\nvar methodInfoChannelOpen = module.exports.methodInfoChannelOpen = {\n id: 1310730,\n classId: 20,\n methodId: 10,\n name: \"ChannelOpen\",\n args: [ {\n type: \"shortstr\",\n name: \"outOfBand\",\n default: \"\"\n } ]\n};\n\nmodule.exports.ChannelOpenOk = 1310731;\n\nvar methodInfoChannelOpenOk = module.exports.methodInfoChannelOpenOk = {\n id: 1310731,\n classId: 20,\n methodId: 11,\n name: \"ChannelOpenOk\",\n args: [ {\n type: \"longstr\",\n name: \"channelId\",\n default: \"\"\n } ]\n};\n\nmodule.exports.ChannelFlow = 1310740;\n\nvar methodInfoChannelFlow = module.exports.methodInfoChannelFlow = {\n id: 1310740,\n classId: 20,\n methodId: 20,\n name: \"ChannelFlow\",\n args: [ {\n type: \"bit\",\n name: \"active\"\n } ]\n};\n\nmodule.exports.ChannelFlowOk = 1310741;\n\nvar methodInfoChannelFlowOk = module.exports.methodInfoChannelFlowOk = {\n id: 1310741,\n classId: 20,\n methodId: 21,\n name: \"ChannelFlowOk\",\n args: [ {\n type: \"bit\",\n name: \"active\"\n } ]\n};\n\nmodule.exports.ChannelClose = 1310760;\n\nvar methodInfoChannelClose = module.exports.methodInfoChannelClose = {\n id: 1310760,\n classId: 20,\n methodId: 40,\n name: \"ChannelClose\",\n args: [ {\n type: \"short\",\n name: \"replyCode\"\n }, {\n type: \"shortstr\",\n name: \"replyText\",\n default: \"\"\n }, {\n type: \"short\",\n name: \"classId\"\n }, {\n type: \"short\",\n name: \"methodId\"\n } ]\n};\n\nmodule.exports.ChannelCloseOk = 1310761;\n\nvar methodInfoChannelCloseOk = module.exports.methodInfoChannelCloseOk = {\n id: 1310761,\n classId: 20,\n methodId: 41,\n name: \"ChannelCloseOk\",\n args: []\n};\n\nmodule.exports.AccessRequest = 1966090;\n\nvar methodInfoAccessRequest = module.exports.methodInfoAccessRequest = {\n id: 1966090,\n classId: 30,\n methodId: 10,\n name: \"AccessRequest\",\n args: [ {\n type: \"shortstr\",\n name: \"realm\",\n default: \"/data\"\n }, {\n type: \"bit\",\n name: \"exclusive\",\n default: !1\n }, {\n type: \"bit\",\n name: \"passive\",\n default: !0\n }, {\n type: \"bit\",\n name: \"active\",\n default: !0\n }, {\n type: \"bit\",\n name: \"write\",\n default: !0\n }, {\n type: \"bit\",\n name: \"read\",\n default: !0\n } ]\n};\n\nmodule.exports.AccessRequestOk = 1966091;\n\nvar methodInfoAccessRequestOk = module.exports.methodInfoAccessRequestOk = {\n id: 1966091,\n classId: 30,\n methodId: 11,\n name: \"AccessRequestOk\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 1\n } ]\n};\n\nmodule.exports.ExchangeDeclare = 2621450;\n\nvar methodInfoExchangeDeclare = module.exports.methodInfoExchangeDeclare = {\n id: 2621450,\n classId: 40,\n methodId: 10,\n name: \"ExchangeDeclare\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"shortstr\",\n name: \"type\",\n default: \"direct\"\n }, {\n type: \"bit\",\n name: \"passive\",\n default: !1\n }, {\n type: \"bit\",\n name: \"durable\",\n default: !1\n }, {\n type: \"bit\",\n name: \"autoDelete\",\n default: !1\n }, {\n type: \"bit\",\n name: \"internal\",\n default: !1\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.ExchangeDeclareOk = 2621451;\n\nvar methodInfoExchangeDeclareOk = module.exports.methodInfoExchangeDeclareOk = {\n id: 2621451,\n classId: 40,\n methodId: 11,\n name: \"ExchangeDeclareOk\",\n args: []\n};\n\nmodule.exports.ExchangeDelete = 2621460;\n\nvar methodInfoExchangeDelete = module.exports.methodInfoExchangeDelete = {\n id: 2621460,\n classId: 40,\n methodId: 20,\n name: \"ExchangeDelete\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"bit\",\n name: \"ifUnused\",\n default: !1\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n } ]\n};\n\nmodule.exports.ExchangeDeleteOk = 2621461;\n\nvar methodInfoExchangeDeleteOk = module.exports.methodInfoExchangeDeleteOk = {\n id: 2621461,\n classId: 40,\n methodId: 21,\n name: \"ExchangeDeleteOk\",\n args: []\n};\n\nmodule.exports.ExchangeBind = 2621470;\n\nvar methodInfoExchangeBind = module.exports.methodInfoExchangeBind = {\n id: 2621470,\n classId: 40,\n methodId: 30,\n name: \"ExchangeBind\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"destination\"\n }, {\n type: \"shortstr\",\n name: \"source\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.ExchangeBindOk = 2621471;\n\nvar methodInfoExchangeBindOk = module.exports.methodInfoExchangeBindOk = {\n id: 2621471,\n classId: 40,\n methodId: 31,\n name: \"ExchangeBindOk\",\n args: []\n};\n\nmodule.exports.ExchangeUnbind = 2621480;\n\nvar methodInfoExchangeUnbind = module.exports.methodInfoExchangeUnbind = {\n id: 2621480,\n classId: 40,\n methodId: 40,\n name: \"ExchangeUnbind\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"destination\"\n }, {\n type: \"shortstr\",\n name: \"source\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.ExchangeUnbindOk = 2621491;\n\nvar methodInfoExchangeUnbindOk = module.exports.methodInfoExchangeUnbindOk = {\n id: 2621491,\n classId: 40,\n methodId: 51,\n name: \"ExchangeUnbindOk\",\n args: []\n};\n\nmodule.exports.QueueDeclare = 3276810;\n\nvar methodInfoQueueDeclare = module.exports.methodInfoQueueDeclare = {\n id: 3276810,\n classId: 50,\n methodId: 10,\n name: \"QueueDeclare\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"passive\",\n default: !1\n }, {\n type: \"bit\",\n name: \"durable\",\n default: !1\n }, {\n type: \"bit\",\n name: \"exclusive\",\n default: !1\n }, {\n type: \"bit\",\n name: \"autoDelete\",\n default: !1\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.QueueDeclareOk = 3276811;\n\nvar methodInfoQueueDeclareOk = module.exports.methodInfoQueueDeclareOk = {\n id: 3276811,\n classId: 50,\n methodId: 11,\n name: \"QueueDeclareOk\",\n args: [ {\n type: \"shortstr\",\n name: \"queue\"\n }, {\n type: \"long\",\n name: \"messageCount\"\n }, {\n type: \"long\",\n name: \"consumerCount\"\n } ]\n};\n\nmodule.exports.QueueBind = 3276820;\n\nvar methodInfoQueueBind = module.exports.methodInfoQueueBind = {\n id: 3276820,\n classId: 50,\n methodId: 20,\n name: \"QueueBind\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.QueueBindOk = 3276821;\n\nvar methodInfoQueueBindOk = module.exports.methodInfoQueueBindOk = {\n id: 3276821,\n classId: 50,\n methodId: 21,\n name: \"QueueBindOk\",\n args: []\n};\n\nmodule.exports.QueuePurge = 3276830;\n\nvar methodInfoQueuePurge = module.exports.methodInfoQueuePurge = {\n id: 3276830,\n classId: 50,\n methodId: 30,\n name: \"QueuePurge\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n } ]\n};\n\nmodule.exports.QueuePurgeOk = 3276831;\n\nvar methodInfoQueuePurgeOk = module.exports.methodInfoQueuePurgeOk = {\n id: 3276831,\n classId: 50,\n methodId: 31,\n name: \"QueuePurgeOk\",\n args: [ {\n type: \"long\",\n name: \"messageCount\"\n } ]\n};\n\nmodule.exports.QueueDelete = 3276840;\n\nvar methodInfoQueueDelete = module.exports.methodInfoQueueDelete = {\n id: 3276840,\n classId: 50,\n methodId: 40,\n name: \"QueueDelete\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"bit\",\n name: \"ifUnused\",\n default: !1\n }, {\n type: \"bit\",\n name: \"ifEmpty\",\n default: !1\n }, {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n } ]\n};\n\nmodule.exports.QueueDeleteOk = 3276841;\n\nvar methodInfoQueueDeleteOk = module.exports.methodInfoQueueDeleteOk = {\n id: 3276841,\n classId: 50,\n methodId: 41,\n name: \"QueueDeleteOk\",\n args: [ {\n type: \"long\",\n name: \"messageCount\"\n } ]\n};\n\nmodule.exports.QueueUnbind = 3276850;\n\nvar methodInfoQueueUnbind = module.exports.methodInfoQueueUnbind = {\n id: 3276850,\n classId: 50,\n methodId: 50,\n name: \"QueueUnbind\",\n args: [ {\n type: \"short\",\n name: \"ticket\",\n default: 0\n }, {\n type: \"shortstr\",\n name: \"queue\",\n default: \"\"\n }, {\n type: \"shortstr\",\n name: \"exchange\"\n }, {\n type: \"shortstr\",\n name: \"routingKey\",\n default: \"\"\n }, {\n type: \"table\",\n name: \"arguments\",\n default: {}\n } ]\n};\n\nmodule.exports.QueueUnbindOk = 3276851;\n\nvar methodInfoQueueUnbindOk = module.exports.methodInfoQueueUnbindOk = {\n id: 3276851,\n classId: 50,\n methodId: 51,\n name: \"QueueUnbindOk\",\n args: []\n};\n\nmodule.exports.TxSelect = 5898250;\n\nvar methodInfoTxSelect = module.exports.methodInfoTxSelect = {\n id: 5898250,\n classId: 90,\n methodId: 10,\n name: \"TxSelect\",\n args: []\n};\n\nmodule.exports.TxSelectOk = 5898251;\n\nvar methodInfoTxSelectOk = module.exports.methodInfoTxSelectOk = {\n id: 5898251,\n classId: 90,\n methodId: 11,\n name: \"TxSelectOk\",\n args: []\n};\n\nmodule.exports.TxCommit = 5898260;\n\nvar methodInfoTxCommit = module.exports.methodInfoTxCommit = {\n id: 5898260,\n classId: 90,\n methodId: 20,\n name: \"TxCommit\",\n args: []\n};\n\nmodule.exports.TxCommitOk = 5898261;\n\nvar methodInfoTxCommitOk = module.exports.methodInfoTxCommitOk = {\n id: 5898261,\n classId: 90,\n methodId: 21,\n name: \"TxCommitOk\",\n args: []\n};\n\nmodule.exports.TxRollback = 5898270;\n\nvar methodInfoTxRollback = module.exports.methodInfoTxRollback = {\n id: 5898270,\n classId: 90,\n methodId: 30,\n name: \"TxRollback\",\n args: []\n};\n\nmodule.exports.TxRollbackOk = 5898271;\n\nvar methodInfoTxRollbackOk = module.exports.methodInfoTxRollbackOk = {\n id: 5898271,\n classId: 90,\n methodId: 31,\n name: \"TxRollbackOk\",\n args: []\n};\n\nmodule.exports.ConfirmSelect = 5570570;\n\nvar methodInfoConfirmSelect = module.exports.methodInfoConfirmSelect = {\n id: 5570570,\n classId: 85,\n methodId: 10,\n name: \"ConfirmSelect\",\n args: [ {\n type: \"bit\",\n name: \"nowait\",\n default: !1\n } ]\n};\n\nmodule.exports.ConfirmSelectOk = 5570571;\n\nvar methodInfoConfirmSelectOk = module.exports.methodInfoConfirmSelectOk = {\n id: 5570571,\n classId: 85,\n methodId: 11,\n name: \"ConfirmSelectOk\",\n args: []\n};\n\nmodule.exports.BasicProperties = 60;\n\nvar propertiesInfoBasicProperties = module.exports.propertiesInfoBasicProperties = {\n id: 60,\n name: \"BasicProperties\",\n args: [ {\n type: \"shortstr\",\n name: \"contentType\"\n }, {\n type: \"shortstr\",\n name: \"contentEncoding\"\n }, {\n type: \"table\",\n name: \"headers\"\n }, {\n type: \"octet\",\n name: \"deliveryMode\"\n }, {\n type: \"octet\",\n name: \"priority\"\n }, {\n type: \"shortstr\",\n name: \"correlationId\"\n }, {\n type: \"shortstr\",\n name: \"replyTo\"\n }, {\n type: \"shortstr\",\n name: \"expiration\"\n }, {\n type: \"shortstr\",\n name: \"messageId\"\n }, {\n type: \"timestamp\",\n name: \"timestamp\"\n }, {\n type: \"shortstr\",\n name: \"type\"\n }, {\n type: \"shortstr\",\n name: \"userId\"\n }, {\n type: \"shortstr\",\n name: \"appId\"\n }, {\n type: \"shortstr\",\n name: \"clusterId\"\n } ]\n};","// The river sweeps through\n// Silt and twigs, gravel and leaves\n// Driving the wheel on\n\n'use strict';\n\nconst ints = require('buffer-more-ints')\nvar defs = require('./defs');\nvar constants = defs.constants;\nvar decode = defs.decode;\n\nmodule.exports.PROTOCOL_HEADER = \"AMQP\" + String.fromCharCode(0, 0, 9, 1);\n\n/*\n Frame format:\n\n 0 1 3 7 size+7 size+8\n +------+---------+-------------+ +------------+ +-----------+\n | type | channel | size | | payload | | frame-end |\n +------+---------+-------------+ +------------+ +-----------+\n octet short long size octets octet\n\n In general I want to know those first three things straight away, so I\n can discard frames early.\n\n*/\n\n// framing constants\nvar FRAME_METHOD = constants.FRAME_METHOD,\nFRAME_HEARTBEAT = constants.FRAME_HEARTBEAT,\nFRAME_HEADER = constants.FRAME_HEADER,\nFRAME_BODY = constants.FRAME_BODY,\nFRAME_END = constants.FRAME_END;\n\n// expected byte sizes for frame parts\nconst TYPE_BYTES = 1\nconst CHANNEL_BYTES = 2\nconst SIZE_BYTES = 4\nconst FRAME_HEADER_BYTES = TYPE_BYTES + CHANNEL_BYTES + SIZE_BYTES\nconst FRAME_END_BYTES = 1\n\n/**\n * @typedef {{\n * type: number,\n * channel: number,\n * size: number,\n * payload: Buffer,\n * rest: Buffer\n * }} FrameStructure\n */\n\n/**\n * This is a polyfill which will read a big int 64 bit as a number.\n * @arg { Buffer } buffer\n * @arg { number } offset\n * @returns { number }\n */\nfunction readInt64BE(buffer, offset) {\n /**\n * We try to use native implementation if available here because\n * buffer-more-ints does not\n */\n if (typeof Buffer.prototype.readBigInt64BE === 'function') {\n return Number(buffer.readBigInt64BE(offset))\n }\n\n return ints.readInt64BE(buffer, offset)\n}\n\n// %%% TESTME possibly better to cons the first bit and write the\n// second directly, in the absence of IO lists\n/**\n * Make a frame header\n * @arg { number } channel\n * @arg { Buffer } payload\n */\nmodule.exports.makeBodyFrame = function (channel, payload) {\n const frameSize = FRAME_HEADER_BYTES + payload.length + FRAME_END_BYTES\n\n const frame = Buffer.alloc(frameSize)\n\n let offset = 0\n\n offset = frame.writeUInt8(FRAME_BODY, offset)\n offset = frame.writeUInt16BE(channel, offset)\n offset = frame.writeInt32BE(payload.length, offset)\n\n payload.copy(frame, offset)\n offset += payload.length\n\n frame.writeUInt8(FRAME_END, offset)\n\n return frame\n};\n\n/**\n * Parse an AMQP frame\n * @arg { Buffer } bin\n * @arg { number } max\n * @returns { FrameStructure | boolean }\n */\nfunction parseFrame(bin) {\n if (bin.length < FRAME_HEADER_BYTES) {\n return false\n }\n\n const type = bin.readUInt8(0)\n const channel = bin.readUInt16BE(1)\n const size = bin.readUInt32BE(3)\n\n const totalSize = FRAME_HEADER_BYTES + size + FRAME_END_BYTES\n\n if (bin.length < totalSize) {\n return false\n }\n\n const frameEnd = bin.readUInt8(FRAME_HEADER_BYTES + size)\n\n if (frameEnd !== FRAME_END) {\n throw new Error('Invalid frame')\n }\n\n return {\n type,\n channel,\n size,\n payload: bin.subarray(FRAME_HEADER_BYTES, FRAME_HEADER_BYTES + size),\n rest: bin.subarray(totalSize)\n }\n}\n\nmodule.exports.parseFrame = parseFrame;\n\nvar HEARTBEAT = {channel: 0};\n\n/**\n * Decode AMQP frame into JS object\n * @param { FrameStructure } frame\n * @returns\n */\nmodule.exports.decodeFrame = (frame) => {\n const payload = frame.payload\n const channel = frame.channel\n\n switch (frame.type) {\n case FRAME_METHOD: {\n const id = payload.readUInt32BE(0)\n const args = payload.subarray(4)\n const fields = decode(id, args)\n return { id, channel, fields }\n }\n case FRAME_HEADER: {\n const id = payload.readUInt16BE(0)\n // const weight = payload.readUInt16BE(2)\n const size = readInt64BE(payload, 4)\n const flagsAndfields = payload.subarray(12)\n const fields = decode(id, flagsAndfields)\n return { id, channel, size, fields }\n }\n case FRAME_BODY:\n return { channel, content: payload }\n case FRAME_HEARTBEAT:\n return HEARTBEAT\n default:\n throw new Error('Unknown frame type ' + frame.type)\n }\n}\n\n// encoded heartbeat\nmodule.exports.HEARTBEAT_BUF = Buffer.from([constants.FRAME_HEARTBEAT,\n 0, 0, 0, 0, // size = 0\n 0, 0, // channel = 0\n constants.FRAME_END]);\n\nmodule.exports.HEARTBEAT = HEARTBEAT;","//\n//\n//\n\n'use strict';\n\n// A Mux is an object into which other readable streams may be piped;\n// it then writes 'packets' from the upstreams to the given\n// downstream.\n\nvar assert = require('assert');\n\nvar schedule = (typeof setImmediate === 'function') ?\n setImmediate : process.nextTick;\n\nclass Mux {\n constructor (downstream) {\n this.newStreams = [];\n this.oldStreams = [];\n this.blocked = false;\n this.scheduledRead = false;\n\n this.out = downstream;\n var self = this;\n downstream.on('drain', function () {\n self.blocked = false;\n self._readIncoming();\n });\n }\n\n // There are 2 states we can be in:\n // - waiting for outbound capacity, which will be signalled by a\n // - 'drain' event on the downstream; or,\n // - no packets to send, waiting for an inbound buffer to have\n // packets, which will be signalled by a 'readable' event\n // If we write all packets available whenever there is outbound\n // capacity, we will either run out of outbound capacity (`#write`\n // returns false), or run out of packets (all calls to an\n // `inbound.read()` have returned null).\n _readIncoming () {\n\n // We may be sent here speculatively, if an incoming stream has\n // become readable\n if (this.blocked) return;\n\n var accepting = true;\n var out = this.out;\n\n // Try to read a chunk from each stream in turn, until all streams\n // are empty, or we exhaust our ability to accept chunks.\n function roundrobin (streams) {\n var s;\n while (accepting && (s = streams.shift())) {\n var chunk = s.read();\n if (chunk !== null) {\n accepting = out.write(chunk);\n streams.push(s);\n }\n }\n }\n\n roundrobin(this.newStreams);\n\n // Either we exhausted the new queues, or we ran out of capacity. If\n // we ran out of capacity, all the remaining new streams (i.e.,\n // those with packets left) become old streams. This effectively\n // prioritises streams that keep their buffers close to empty over\n // those that are constantly near full.\n if (accepting) { // all new queues are exhausted, write as many as\n // we can from the old streams\n assert.equal(0, this.newStreams.length);\n roundrobin(this.oldStreams);\n }\n else { // ran out of room\n assert(this.newStreams.length > 0, \"Expect some new streams to remain\");\n Array.prototype.push.apply(this.oldStreams, this.newStreams);\n this.newStreams = [];\n }\n // We may have exhausted all the old queues, or run out of room;\n // either way, all we need to do is record whether we have capacity\n // or not, so any speculative reads will know\n this.blocked = !accepting;\n }\n\n _scheduleRead () {\n var self = this;\n\n if (!self.scheduledRead) {\n schedule(function () {\n self.scheduledRead = false;\n self._readIncoming();\n });\n self.scheduledRead = true;\n }\n }\n\n pipeFrom (readable) {\n var self = this;\n\n function enqueue () {\n self.newStreams.push(readable);\n self._scheduleRead();\n }\n\n function cleanup () {\n readable.removeListener('readable', enqueue);\n readable.removeListener('error', cleanup);\n readable.removeListener('end', cleanup);\n readable.removeListener('unpipeFrom', cleanupIfMe);\n }\n function cleanupIfMe (dest) {\n if (dest === self) cleanup();\n }\n\n readable.on('unpipeFrom', cleanupIfMe);\n readable.on('end', cleanup);\n readable.on('error', cleanup);\n readable.on('readable', enqueue);\n }\n\n unpipeFrom (readable) {\n readable.emit('unpipeFrom', this);\n }\n}\n\nmodule.exports.Mux = Mux;\n","//\n//\n//\n\n// Heartbeats. In AMQP both clients and servers may expect a heartbeat\n// frame if there is no activity on the connection for a negotiated\n// period of time. If there's no activity for two such intervals, the\n// server or client is allowed to close the connection on the\n// presumption that the other party is dead.\n//\n// The client has two jobs here: the first is to send a heartbeat\n// frame if it's not sent any frames for a while, so that the server\n// doesn't think it's dead; the second is to check periodically that\n// it's seen activity from the server, and to advise if there doesn't\n// appear to have been any for over two intervals.\n//\n// Node.JS timers are a bit unreliable, in that they endeavour only to\n// fire at some indeterminate point *after* the given time (rather\n// gives the lie to 'realtime', dunnit). Because the scheduler is just\n// an event loop, it's quite easy to delay timers indefinitely by\n// reacting to some I/O with a lot of computation.\n//\n// To mitigate this I need a bit of creative interpretation:\n//\n// - I'll schedule a server activity check for every `interval`, and\n// check just how much time has passed. It will overshoot by at\n// least a small margin; modulo missing timer deadlines, it'll\n// notice between two and three intervals after activity actually\n// stops (otherwise, at some point after two intervals).\n//\n// - Every `interval / 2` I'll check that we've sent something since\n// the last check, and if not, send a heartbeat frame. If we're\n// really too busy to even run the check for two whole heartbeat\n// intervals, there must be a lot of I (but not O, at least not on\n// the connection), or computation, in which case perhaps it's best\n// the server cuts us off anyway. Why `interval / 2`? Because the\n// edge case is that the client sent a frame just after a\n// heartbeat, which would mean I only send one after almost two\n// intervals. (NB a heartbeat counts as a send, so it'll be checked\n// at least twice before sending another)\n//\n// This design is based largely on RabbitMQ's heartbeating:\n// https://github.com/rabbitmq/rabbitmq-common/blob/master/src/rabbit_heartbeat.erl\n\n// %% Yes, I could apply the same 'actually passage of time' thing to\n// %% send as well as to recv.\n\n'use strict';\n\nvar EventEmitter = require('events');\n\n// Exported so that we can mess with it in tests\nmodule.exports.UNITS_TO_MS = 1000;\n\nclass Heart extends EventEmitter {\n constructor (interval, checkSend, checkRecv) {\n super();\n\n this.interval = interval;\n\n var intervalMs = interval * module.exports.UNITS_TO_MS;\n // Function#bind is my new best friend\n var beat = this.emit.bind(this, 'beat');\n var timeout = this.emit.bind(this, 'timeout');\n\n this.sendTimer = setInterval(\n this.runHeartbeat.bind(this, checkSend, beat), intervalMs / 2);\n\n // A timeout occurs if I see nothing for *two consecutive* intervals\n var recvMissed = 0;\n function missedTwo () {\n if (!checkRecv())\n return (++recvMissed < 2);\n else { recvMissed = 0; return true; }\n }\n this.recvTimer = setInterval(\n this.runHeartbeat.bind(this, missedTwo, timeout), intervalMs);\n }\n\n clear () {\n clearInterval(this.sendTimer);\n clearInterval(this.recvTimer);\n }\n\n runHeartbeat (check, fail) {\n // Have we seen activity?\n if (!check())\n fail();\n }\n}\n\nmodule.exports.Heart = Heart;\n","//\n//\n//\n\n// Stringifying various things\n\n'use strict';\n\nvar defs = require('./defs');\nvar format = require('util').format;\nvar HEARTBEAT = require('./frame').HEARTBEAT;\n\nmodule.exports.closeMessage = function(close) {\n var code = close.fields.replyCode;\n return format('%d (%s) with message \"%s\"',\n code, defs.constant_strs[code],\n close.fields.replyText);\n}\n\nmodule.exports.methodName = function(id) {\n return defs.info(id).name;\n};\n\nmodule.exports.inspect = function(frame, showFields) {\n if (frame === HEARTBEAT) {\n return '<Heartbeat>';\n }\n else if (!frame.id) {\n return format('<Content channel:%d size:%d>',\n frame.channel, frame.size);\n }\n else {\n var info = defs.info(frame.id);\n return format('<%s channel:%d%s>', info.name, frame.channel,\n (showFields)\n ? ' ' + JSON.stringify(frame.fields, undefined, 2)\n : '');\n }\n}\n","//\n//\n//\n\n'use strict';\n\n/**\n * A bitset implementation, after that in java.util. Yes there\n * already exist such things, but none implement next{Clear|Set}Bit or\n * equivalent, and none involved me tooling about for an evening.\n */\nclass BitSet {\n /**\n * @param {number} [size]\n */\n constructor(size) {\n if (size) {\n const numWords = Math.ceil(size / 32);\n this.words = new Array(numWords);\n }\n else {\n this.words = [];\n }\n this.wordsInUse = 0; // = number, not index\n }\n\n /**\n * @param {number} numWords\n */\n ensureSize(numWords) {\n const wordsPresent = this.words.length;\n if (wordsPresent < numWords) {\n this.words = this.words.concat(new Array(numWords - wordsPresent));\n }\n }\n\n /**\n * @param {number} bitIndex\n */\n set(bitIndex) {\n const w = wordIndex(bitIndex);\n if (w >= this.wordsInUse) {\n this.ensureSize(w + 1);\n this.wordsInUse = w + 1;\n }\n const bit = 1 << bitIndex;\n this.words[w] |= bit;\n }\n\n /**\n * @param {number} bitIndex\n */\n clear(bitIndex) {\n const w = wordIndex(bitIndex);\n if (w >= this.wordsInUse) return;\n const mask = ~(1 << bitIndex);\n this.words[w] &= mask;\n }\n\n /**\n * @param {number} bitIndex\n */\n get(bitIndex) {\n const w = wordIndex(bitIndex);\n if (w >= this.wordsInUse) return false; // >= since index vs size\n const bit = 1 << bitIndex;\n return !!(this.words[w] & bit);\n }\n\n /**\n * Give the next bit that is set on or after fromIndex, or -1 if no such bit\n *\n * @param {number} fromIndex\n */\n nextSetBit(fromIndex) {\n let w = wordIndex(fromIndex);\n if (w >= this.wordsInUse) return -1;\n\n // the right-hand side is shifted to only test the bits of the first\n // word that are > fromIndex\n let word = this.words[w] & (0xffffffff << fromIndex);\n while (true) {\n if (word) return (w * 32) + trailingZeros(word);\n w++;\n if (w === this.wordsInUse) return -1;\n word = this.words[w];\n }\n }\n\n /**\n * @param {number} fromIndex\n */\n nextClearBit(fromIndex) {\n let w = wordIndex(fromIndex);\n if (w >= this.wordsInUse) return fromIndex;\n\n let word = ~(this.words[w]) & (0xffffffff << fromIndex);\n while (true) {\n if (word) return (w * 32) + trailingZeros(word);\n w++;\n if (w == this.wordsInUse) return w * 32;\n word = ~(this.words[w]);\n }\n }\n}\n\n/**\n * @param {number} bitIndex\n */\nfunction wordIndex(bitIndex) {\n return Math.floor(bitIndex / 32);\n}\n\n/**\n * @param {number} i\n */\nfunction trailingZeros(i) {\n // From Hacker's Delight, via JDK. Probably far less effective here,\n // since bit ops are not necessarily the quick way to do things in\n // JS.\n if (i === 0) return 32;\n let y, n = 31;\n y = i << 16; if (y != 0) { n = n -16; i = y; }\n y = i << 8; if (y != 0) { n = n - 8; i = y; }\n y = i << 4; if (y != 0) { n = n - 4; i = y; }\n y = i << 2; if (y != 0) { n = n - 2; i = y; }\n return n - ((i << 1) >>> 31);\n}\n\nmodule.exports.BitSet = BitSet;\n","var inherits = require('util').inherits;\n\nfunction trimStack(stack, num) {\n return stack && stack.split('\\n').slice(num).join('\\n');\n}\n\nfunction IllegalOperationError(msg, stack) {\n var tmp = new Error();\n this.message = msg;\n this.stack = this.toString() + '\\n' + trimStack(tmp.stack, 2);\n this.stackAtStateChange = stack;\n}\ninherits(IllegalOperationError, Error);\n\nIllegalOperationError.prototype.name = 'IllegalOperationError';\n\nfunction stackCapture(reason) {\n var e = new Error();\n return 'Stack capture: ' + reason + '\\n' +\n trimStack(e.stack, 2);\n}\n\nmodule.exports.IllegalOperationError = IllegalOperationError;\nmodule.exports.stackCapture = stackCapture;\n","//\n//\n//\n\n'use strict';\n\nvar defs = require('./defs');\nvar constants = defs.constants;\nvar frame = require('./frame');\nvar HEARTBEAT = frame.HEARTBEAT;\nvar Mux = require('./mux').Mux;\n\nvar Duplex = require('stream').Duplex;\nvar EventEmitter = require('events');\nvar Heart = require('./heartbeat').Heart;\n\nvar methodName = require('./format').methodName;\nvar closeMsg = require('./format').closeMessage;\nvar inspect = require('./format').inspect;\n\nvar BitSet = require('./bitset').BitSet;\nvar fmt = require('util').format;\nvar PassThrough = require('stream').PassThrough;\nvar IllegalOperationError = require('./error').IllegalOperationError;\nvar stackCapture = require('./error').stackCapture;\n\n// High-water mark for channel write buffers, in 'objects' (which are\n// encoded frames as buffers).\nvar DEFAULT_WRITE_HWM = 1024;\n// If all the frames of a message (method, properties, content) total\n// to less than this, copy them into a single buffer and write it all\n// at once. Note that this is less than the minimum frame size: if it\n// was greater, we might have to fragment the content.\nvar SINGLE_CHUNK_THRESHOLD = 2048;\n\nclass Connection extends EventEmitter {\n constructor (underlying) {\n super();\n\n var stream = this.stream = wrapStream(underlying);\n this.muxer = new Mux(stream);\n\n // frames\n this.rest = Buffer.alloc(0);\n this.frameMax = constants.FRAME_MIN_SIZE;\n this.sentSinceLastCheck = false;\n this.recvSinceLastCheck = false;\n\n this.expectSocketClose = false;\n this.freeChannels = new BitSet();\n this.channels = [{\n channel: { accept: channel0(this) },\n buffer: underlying\n }];\n }\n\n // This changed between versions, as did the codec, methods, etc. AMQP\n // 0-9-1 is fairly similar to 0.8, but better, and nothing implements\n // 0.8 that doesn't implement 0-9-1. In other words, it doesn't make\n // much sense to generalise here.\n sendProtocolHeader () {\n this.sendBytes(frame.PROTOCOL_HEADER);\n }\n\n /*\n The frighteningly complicated opening protocol (spec section 2.2.4):\n\n Client -> Server\n\n protocol header ->\n <- start\n start-ok ->\n .. next two zero or more times ..\n <- secure\n secure-ok ->\n <- tune\n tune-ok ->\n open ->\n <- open-ok\n\n If I'm only supporting SASL's PLAIN mechanism (which I am for the time\n being), it gets a bit easier since the server won't in general send\n back a `secure`, it'll just send `tune` after the `start-ok`.\n (SASL PLAIN: http://tools.ietf.org/html/rfc4616)\n\n */\n open (allFields, openCallback0) {\n var self = this;\n var openCallback = openCallback0 || function () { };\n\n // This is where we'll put our negotiated values\n var tunedOptions = Object.create(allFields);\n\n function wait (k) {\n self.step(function (err, frame) {\n if (err !== null)\n bail(err);\n else if (frame.channel !== 0) {\n bail(new Error(\n fmt(\"Frame on channel != 0 during handshake: %s\",\n inspect(frame, false))));\n }\n else\n k(frame);\n });\n }\n\n function expect (Method, k) {\n wait(function (frame) {\n if (frame.id === Method)\n k(frame);\n else {\n bail(new Error(\n fmt(\"Expected %s; got %s\",\n methodName(Method), inspect(frame, false))));\n }\n });\n }\n\n function bail (err) {\n openCallback(err);\n }\n\n function send (Method) {\n // This can throw an exception if there's some problem with the\n // options; e.g., something is a string instead of a number.\n self.sendMethod(0, Method, tunedOptions);\n }\n\n function negotiate (server, desired) {\n // We get sent values for channelMax, frameMax and heartbeat,\n // which we may accept or lower (subject to a minimum for\n // frameMax, but we'll leave that to the server to enforce). In\n // all cases, `0` really means \"no limit\", or rather the highest\n // value in the encoding, e.g., unsigned short for channelMax.\n if (server === 0 || desired === 0) {\n // i.e., whichever places a limit, if either\n return Math.max(server, desired);\n }\n else {\n return Math.min(server, desired);\n }\n }\n\n function onStart (start) {\n var mechanisms = start.fields.mechanisms.toString().split(' ');\n if (mechanisms.indexOf(allFields.mechanism) < 0) {\n bail(new Error(fmt('SASL mechanism %s is not provided by the server',\n allFields.mechanism)));\n return;\n }\n self.serverProperties = start.fields.serverProperties;\n try {\n send(defs.ConnectionStartOk);\n } catch (err) {\n bail(err);\n return;\n }\n wait(afterStartOk);\n }\n\n function afterStartOk (reply) {\n switch (reply.id) {\n case defs.ConnectionSecure:\n bail(new Error(\n \"Wasn't expecting to have to go through secure\"));\n break;\n case defs.ConnectionClose:\n bail(new Error(fmt(\"Handshake terminated by server: %s\",\n closeMsg(reply))));\n break;\n case defs.ConnectionTune:\n var fields = reply.fields;\n tunedOptions.frameMax =\n negotiate(fields.frameMax, allFields.frameMax);\n tunedOptions.channelMax =\n negotiate(fields.channelMax, allFields.channelMax);\n tunedOptions.heartbeat =\n negotiate(fields.heartbeat, allFields.heartbeat);\n try {\n send(defs.ConnectionTuneOk);\n send(defs.ConnectionOpen);\n } catch (err) {\n bail(err);\n return;\n }\n expect(defs.ConnectionOpenOk, onOpenOk);\n break;\n default:\n bail(new Error(\n fmt(\"Expected connection.secure, connection.close, \" +\n \"or connection.tune during handshake; got %s\",\n inspect(reply, false))));\n break;\n }\n }\n\n function onOpenOk (openOk) {\n // Impose the maximum of the encoded value, if the negotiated\n // value is zero, meaning \"no, no limits\"\n self.channelMax = tunedOptions.channelMax || 0xffff;\n self.frameMax = tunedOptions.frameMax || 0xffffffff;\n // 0 means \"no heartbeat\", rather than \"maximum period of\n // heartbeating\"\n self.heartbeat = tunedOptions.heartbeat;\n self.heartbeater = self.startHeartbeater();\n self.accept = mainAccept;\n succeed(openOk);\n }\n\n // If the server closes the connection, it's probably because of\n // something we did\n function endWhileOpening (err) {\n bail(err || new Error('Socket closed abruptly ' +\n 'during opening handshake'));\n }\n\n this.stream.on('end', endWhileOpening);\n this.stream.on('error', endWhileOpening);\n\n function succeed (ok) {\n self.stream.removeListener('end', endWhileOpening);\n self.stream.removeListener('error', endWhileOpening);\n self.stream.on('error', self.onSocketError.bind(self));\n self.stream.on('end', self.onSocketError.bind(\n self, new Error('Unexpected close')));\n self.on('frameError', self.onSocketError.bind(self));\n self.acceptLoop();\n openCallback(null, ok);\n }\n\n // Now kick off the handshake by prompting the server\n this.sendProtocolHeader();\n expect(defs.ConnectionStart, onStart);\n }\n\n // Closing things: AMQP has a closing handshake that applies to\n // closing both connects and channels. As the initiating party, I send\n // Close, then ignore all frames until I see either CloseOK --\n // which signifies that the other party has seen the Close and shut\n // the connection or channel down, so it's fine to free resources; or\n // Close, which means the other party also wanted to close the\n // whatever, and I should send CloseOk so it can free resources,\n // then go back to waiting for the CloseOk. If I receive a Close\n // out of the blue, I should throw away any unsent frames (they will\n // be ignored anyway) and send CloseOk, then clean up resources. In\n // general, Close out of the blue signals an error (or a forced\n // closure, which may as well be an error).\n //\n // RUNNING [1] --- send Close ---> Closing [2] ---> recv Close --+\n // | | [3]\n // | +------ send CloseOk ------+\n // recv Close recv CloseOk\n // | |\n // V V\n // Ended [4] ---- send CloseOk ---> Closed [5]\n //\n // [1] All frames accepted; getting a Close frame from the server\n // moves to Ended; client may initiate a close by sending Close\n // itself.\n // [2] Client has initiated a close; only CloseOk or (simulataneously\n // sent) Close is accepted.\n // [3] Simultaneous close\n // [4] Server won't send any more frames; accept no more frames, send\n // CloseOk.\n // [5] Fully closed, client will send no more, server will send no\n // more. Signal 'close' or 'error'.\n //\n // There are two signalling mechanisms used in the API. The first is\n // that calling `close` will return a promise, that will either\n // resolve once the connection or channel is cleanly shut down, or\n // will reject if the shutdown times out.\n //\n // The second is the 'close' and 'error' events. These are\n // emitted as above. The events will fire *before* promises are\n // resolved.\n // Close the connection without even giving a reason. Typical.\n close (closeCallback) {\n var k = closeCallback && function () { closeCallback(null); };\n this.closeBecause(\"Cheers, thanks\", constants.REPLY_SUCCESS, k);\n }\n\n // Close with a reason and a 'code'. I'm pretty sure RabbitMQ totally\n // ignores these; maybe it logs them. The continuation will be invoked\n // when the CloseOk has been received, and before the 'close' event.\n closeBecause (reason, code, k) {\n this.sendMethod(0, defs.ConnectionClose, {\n replyText: reason,\n replyCode: code,\n methodId: 0, classId: 0\n });\n var s = stackCapture('closeBecause called: ' + reason);\n this.toClosing(s, k);\n }\n\n closeWithError (reason, code, error) {\n this.emit('error', error);\n this.closeBecause(reason, code);\n }\n\n onSocketError (err) {\n if (!this.expectSocketClose) {\n // forestall any more calls to onSocketError, since we're signed\n // up for `'error'` *and* `'end'`\n this.expectSocketClose = true;\n this.emit('error', err);\n var s = stackCapture('Socket error');\n this.toClosed(s, err);\n }\n }\n\n // A close has been initiated. Repeat: a close has been initiated.\n // This means we should not send more frames, anyway they will be\n // ignored. We also have to shut down all the channels.\n toClosing (capturedStack, k) {\n var send = this.sendMethod.bind(this);\n\n this.accept = function (f) {\n if (f.id === defs.ConnectionCloseOk) {\n if (k)\n k();\n var s = stackCapture('ConnectionCloseOk received');\n this.toClosed(s, undefined);\n }\n else if (f.id === defs.ConnectionClose) {\n send(0, defs.ConnectionCloseOk, {});\n }\n // else ignore frame\n };\n invalidateSend(this, 'Connection closing', capturedStack);\n }\n\n _closeChannels (capturedStack) {\n for (var i = 1; i < this.channels.length; i++) {\n var ch = this.channels[i];\n if (ch !== null) {\n ch.channel.toClosed(capturedStack); // %%% or with an error? not clear\n }\n }\n }\n\n // A close has been confirmed. Cease all communication.\n toClosed (capturedStack, maybeErr) {\n this._closeChannels(capturedStack);\n var info = fmt('Connection closed (%s)',\n (maybeErr) ? maybeErr.toString() : 'by client');\n // Tidy up, invalidate enverything, dynamite the bridges.\n invalidateSend(this, info, capturedStack);\n this.accept = invalidOp(info, capturedStack);\n this.close = function (cb) {\n cb && cb(new IllegalOperationError(info, capturedStack));\n };\n if (this.heartbeater)\n this.heartbeater.clear();\n // This is certainly true now, if it wasn't before\n this.expectSocketClose = true;\n this.stream.end();\n this.emit('close', maybeErr);\n }\n\n _updateSecret(newSecret, reason, cb) {\n this.sendMethod(0, defs.ConnectionUpdateSecret, {\n newSecret,\n reason\n });\n this.once('update-secret-ok', cb);\n }\n\n // ===\n startHeartbeater () {\n if (this.heartbeat === 0)\n return null;\n else {\n var self = this;\n var hb = new Heart(this.heartbeat,\n this.checkSend.bind(this),\n this.checkRecv.bind(this));\n hb.on('timeout', function () {\n var hberr = new Error(\"Heartbeat timeout\");\n self.emit('error', hberr);\n var s = stackCapture('Heartbeat timeout');\n self.toClosed(s, hberr);\n });\n hb.on('beat', function () {\n self.sendHeartbeat();\n });\n return hb;\n }\n }\n\n // I use an array to keep track of the channels, rather than an\n // object. The channel identifiers are numbers, and allocated by the\n // connection. If I try to allocate low numbers when they are\n // available (which I do, by looking from the start of the bitset),\n // this ought to keep the array small, and out of 'sparse array\n // storage'. I also set entries to null, rather than deleting them, in\n // the expectation that the next channel allocation will fill the slot\n // again rather than growing the array. See\n // http://www.html5rocks.com/en/tutorials/speed/v8/\n freshChannel (channel, options) {\n var next = this.freeChannels.nextClearBit(1);\n if (next < 0 || next > this.channelMax)\n throw new Error(\"No channels left to allocate\");\n this.freeChannels.set(next);\n\n var hwm = (options && options.highWaterMark) || DEFAULT_WRITE_HWM;\n var writeBuffer = new PassThrough({\n objectMode: true, highWaterMark: hwm\n });\n this.channels[next] = { channel: channel, buffer: writeBuffer };\n writeBuffer.on('drain', function () {\n channel.onBufferDrain();\n });\n this.muxer.pipeFrom(writeBuffer);\n return next;\n }\n\n releaseChannel (channel) {\n this.freeChannels.clear(channel);\n var buffer = this.channels[channel].buffer;\n buffer.end(); // will also cause it to be unpiped\n this.channels[channel] = null;\n }\n\n acceptLoop () {\n var self = this;\n\n function go () {\n try {\n var f; while (f = self.recvFrame())\n self.accept(f);\n }\n catch (e) {\n self.emit('frameError', e);\n }\n }\n self.stream.on('readable', go);\n go();\n }\n\n step (cb) {\n var self = this;\n function recv () {\n var f;\n try {\n f = self.recvFrame();\n }\n catch (e) {\n cb(e, null);\n return;\n }\n if (f)\n cb(null, f);\n else\n self.stream.once('readable', recv);\n }\n recv();\n }\n\n checkSend () {\n var check = this.sentSinceLastCheck;\n this.sentSinceLastCheck = false;\n return check;\n }\n\n checkRecv () {\n var check = this.recvSinceLastCheck;\n this.recvSinceLastCheck = false;\n return check;\n }\n\n sendBytes (bytes) {\n this.sentSinceLastCheck = true;\n this.stream.write(bytes);\n }\n\n sendHeartbeat () {\n return this.sendBytes(frame.HEARTBEAT_BUF);\n }\n\n sendMethod (channel, Method, fields) {\n var frame = encodeMethod(Method, channel, fields);\n this.sentSinceLastCheck = true;\n var buffer = this.channels[channel].buffer;\n return buffer.write(frame);\n }\n\n sendMessage (channel, Method, fields, Properties, props, content) {\n if (!Buffer.isBuffer(content))\n throw new TypeError('content is not a buffer');\n\n var mframe = encodeMethod(Method, channel, fields);\n var pframe = encodeProperties(Properties, channel,\n content.length, props);\n var buffer = this.channels[channel].buffer;\n this.sentSinceLastCheck = true;\n\n var methodHeaderLen = mframe.length + pframe.length;\n var bodyLen = (content.length > 0) ?\n content.length + FRAME_OVERHEAD : 0;\n var allLen = methodHeaderLen + bodyLen;\n\n if (allLen < SINGLE_CHUNK_THRESHOLD) {\n // Use `allocUnsafe` to avoid excessive allocations and CPU usage\n // from zeroing. The returned Buffer is not zeroed and so must be\n // completely filled to be used safely.\n // See https://github.com/amqp-node/amqplib/pull/695\n var all = Buffer.allocUnsafe(allLen);\n var offset = mframe.copy(all, 0);\n offset += pframe.copy(all, offset);\n\n if (bodyLen > 0)\n makeBodyFrame(channel, content).copy(all, offset);\n return buffer.write(all);\n }\n else {\n if (methodHeaderLen < SINGLE_CHUNK_THRESHOLD) {\n // Use `allocUnsafe` to avoid excessive allocations and CPU usage\n // from zeroing. The returned Buffer is not zeroed and so must be\n // completely filled to be used safely.\n // See https://github.com/amqp-node/amqplib/pull/695\n var both = Buffer.allocUnsafe(methodHeaderLen);\n var offset = mframe.copy(both, 0);\n pframe.copy(both, offset);\n buffer.write(both);\n }\n else {\n buffer.write(mframe);\n buffer.write(pframe);\n }\n return this.sendContent(channel, content);\n }\n }\n\n sendContent (channel, body) {\n if (!Buffer.isBuffer(body)) {\n throw new TypeError(fmt(\"Expected buffer; got %s\", body));\n }\n var writeResult = true;\n var buffer = this.channels[channel].buffer;\n\n var maxBody = this.frameMax - FRAME_OVERHEAD;\n\n for (var offset = 0; offset < body.length; offset += maxBody) {\n var end = offset + maxBody;\n var slice = (end > body.length) ? body.subarray(offset) : body.subarray(offset, end);\n var bodyFrame = makeBodyFrame(channel, slice);\n writeResult = buffer.write(bodyFrame);\n }\n this.sentSinceLastCheck = true;\n return writeResult;\n }\n\n recvFrame () {\n // %%% identifying invariants might help here?\n var frame = parseFrame(this.rest);\n\n if (!frame) {\n var incoming = this.stream.read();\n if (incoming === null) {\n return false;\n }\n else {\n this.recvSinceLastCheck = true;\n this.rest = Buffer.concat([this.rest, incoming]);\n return this.recvFrame();\n }\n }\n else {\n this.rest = frame.rest;\n return decodeFrame(frame);\n }\n }\n}\n\n// Usual frame accept mode\nfunction mainAccept(frame) {\n var rec = this.channels[frame.channel];\n if (rec) { return rec.channel.accept(frame); }\n // NB CHANNEL_ERROR may not be right, but I don't know what is ..\n else\n this.closeWithError(\n fmt('Frame on unknown channel %d', frame.channel),\n constants.CHANNEL_ERROR,\n new Error(fmt(\"Frame on unknown channel: %s\",\n inspect(frame, false))));\n}\n\n// Handle anything that comes through on channel 0, that's the\n// connection control channel. This is only used once mainAccept is\n// installed as the frame handler, after the opening handshake.\nfunction channel0(connection) {\n return function(f) {\n // Once we get a 'close', we know 1. we'll get no more frames, and\n // 2. anything we send except close, or close-ok, will be\n // ignored. If we already sent 'close', this won't be invoked since\n // we're already in closing mode; if we didn't well we're not going\n // to send it now are we.\n if (f === HEARTBEAT); // ignore; it's already counted as activity\n // on the socket, which is its purpose\n else if (f.id === defs.ConnectionClose) {\n // Oh. OK. I guess we're done here then.\n connection.sendMethod(0, defs.ConnectionCloseOk, {});\n var emsg = fmt('Connection closed: %s', closeMsg(f));\n var s = stackCapture(emsg);\n var e = new Error(emsg);\n e.code = f.fields.replyCode;\n if (isFatalError(e)) {\n connection.emit('error', e);\n }\n connection.toClosed(s, e);\n }\n else if (f.id === defs.ConnectionBlocked) {\n connection.emit('blocked', f.fields.reason);\n }\n else if (f.id === defs.ConnectionUnblocked) {\n connection.emit('unblocked');\n }\n else if (f.id === defs.ConnectionUpdateSecretOk) {\n connection.emit('update-secret-ok');\n }\n else {\n connection.closeWithError(\n fmt(\"Unexpected frame on channel 0\"),\n constants.UNEXPECTED_FRAME,\n new Error(fmt(\"Unexpected frame on channel 0: %s\",\n inspect(f, false))));\n }\n };\n}\n\nfunction invalidOp(msg, stack) {\n return function() {\n throw new IllegalOperationError(msg, stack);\n };\n}\n\nfunction invalidateSend(conn, msg, stack) {\n conn.sendMethod = conn.sendContent = conn.sendMessage =\n invalidOp(msg, stack);\n}\n\nvar encodeMethod = defs.encodeMethod;\nvar encodeProperties = defs.encodeProperties;\n\nvar FRAME_OVERHEAD = defs.FRAME_OVERHEAD;\nvar makeBodyFrame = frame.makeBodyFrame;\n\nvar parseFrame = frame.parseFrame;\nvar decodeFrame = frame.decodeFrame;\n\nfunction wrapStream(s) {\n if (s instanceof Duplex) return s;\n else {\n var ws = new Duplex();\n ws.wrap(s); //wraps the readable side of things\n ws._write = function(chunk, encoding, callback) {\n return s.write(chunk, encoding, callback);\n };\n return ws;\n }\n}\n\nfunction isFatalError(error) {\n switch (error && error.code) {\n case defs.constants.CONNECTION_FORCED:\n case defs.constants.REPLY_SUCCESS:\n return false;\n default:\n return true;\n }\n}\n\nmodule.exports.Connection = Connection;\nmodule.exports.isFatalError = isFatalError;\n","//\n//\n//\n\n// Different kind of credentials that can be supplied when opening a\n// connection, corresponding to SASL mechanisms There's only two\n// useful mechanisms that RabbitMQ implements:\n// * PLAIN (send username and password in the plain)\n// * EXTERNAL (assume the server will figure out who you are from\n// context, i.e., your SSL certificate)\nvar codec = require('./codec')\n\nmodule.exports.plain = function(user, passwd) {\n return {\n mechanism: 'PLAIN',\n response: function() {\n return Buffer.from(['', user, passwd].join(String.fromCharCode(0)))\n },\n username: user,\n password: passwd\n }\n}\n\nmodule.exports.amqplain = function(user, passwd) {\n return {\n mechanism: 'AMQPLAIN',\n response: function() {\n const buffer = Buffer.alloc(16384);\n const size = codec.encodeTable(buffer, { LOGIN: user, PASSWORD: passwd}, 0);\n return buffer.subarray(4, size);\n },\n username: user,\n password: passwd\n }\n}\n\nmodule.exports.external = function() {\n return {\n mechanism: 'EXTERNAL',\n response: function() { return Buffer.from(''); }\n }\n}\n","","//\n//\n//\n\n// General-purpose API for glueing everything together.\n\n'use strict';\n\nvar URL = require('url-parse');\nvar QS = require('querystring');\nvar Connection = require('./connection').Connection;\nvar fmt = require('util').format;\nvar credentials = require('./credentials');\n\nfunction copyInto(obj, target) {\n var keys = Object.keys(obj);\n var i = keys.length;\n while (i--) {\n var k = keys[i];\n target[k] = obj[k];\n }\n return target;\n}\n\n// Adapted from util._extend, which is too fringe to use.\nfunction clone(obj) {\n return copyInto(obj, {});\n}\n\nvar CLIENT_PROPERTIES = {\n \"product\": \"amqplib\",\n \"version\": require('../package.json').version,\n \"platform\": fmt('Node.JS %s', process.version),\n \"information\": \"https://amqp-node.github.io/amqplib/\",\n \"capabilities\": {\n \"publisher_confirms\": true,\n \"exchange_exchange_bindings\": true,\n \"basic.nack\": true,\n \"consumer_cancel_notify\": true,\n \"connection.blocked\": true,\n \"authentication_failure_close\": true\n }\n};\n\n// Construct the main frames used in the opening handshake\nfunction openFrames(vhost, query, credentials, extraClientProperties) {\n if (!vhost)\n vhost = '/';\n else\n vhost = QS.unescape(vhost);\n\n var query = query || {};\n\n function intOrDefault(val, def) {\n return (val === undefined) ? def : parseInt(val);\n }\n\n var clientProperties = Object.create(CLIENT_PROPERTIES);\n\n return {\n // start-ok\n 'clientProperties': copyInto(extraClientProperties, clientProperties),\n 'mechanism': credentials.mechanism,\n 'response': credentials.response(),\n 'locale': query.locale || 'en_US',\n\n // tune-ok\n 'channelMax': intOrDefault(query.channelMax, 0),\n 'frameMax': intOrDefault(query.frameMax, 131072),\n 'heartbeat': intOrDefault(query.heartbeat, 0),\n\n // open\n 'virtualHost': vhost,\n 'capabilities': '',\n 'insist': 0\n };\n}\n\n// Decide on credentials based on what we're supplied.\nfunction credentialsFromUrl(parts) {\n var user = 'guest', passwd = 'guest';\n if (parts.username != '' || parts.password != '') {\n user = (parts.username) ? unescape(parts.username) : '';\n passwd = (parts.password) ? unescape(parts.password) : '';\n }\n return credentials.plain(user, passwd);\n}\n\nfunction connect(url, socketOptions, openCallback) {\n // tls.connect uses `util._extend()` on the options given it, which\n // copies only properties mentioned in `Object.keys()`, when\n // processing the options. So I have to make copies too, rather\n // than using `Object.create()`.\n var sockopts = clone(socketOptions || {});\n url = url || 'amqp://localhost';\n\n var noDelay = !!sockopts.noDelay;\n var timeout = sockopts.timeout;\n var keepAlive = !!sockopts.keepAlive;\n // 0 is default for node\n var keepAliveDelay = sockopts.keepAliveDelay || 0;\n\n var extraClientProperties = sockopts.clientProperties || {};\n\n var protocol, fields;\n if (typeof url === 'object') {\n protocol = (url.protocol || 'amqp') + ':';\n sockopts.host = url.hostname;\n sockopts.servername = sockopts.servername || url.hostname;\n sockopts.port = url.port || ((protocol === 'amqp:') ? 5672 : 5671);\n\n var user, pass;\n // Only default if both are missing, to have the same behaviour as\n // the stringly URL.\n if (url.username == undefined && url.password == undefined) {\n user = 'guest'; pass = 'guest';\n } else {\n user = url.username || '';\n pass = url.password || '';\n }\n\n var config = {\n locale: url.locale,\n channelMax: url.channelMax,\n frameMax: url.frameMax,\n heartbeat: url.heartbeat,\n };\n\n fields = openFrames(url.vhost, config, sockopts.credentials || credentials.plain(user, pass), extraClientProperties);\n } else {\n var parts = URL(url, true); // yes, parse the query string\n var host = parts.hostname.replace(/^\\[|\\]$/g, '');\n protocol = parts.protocol;\n sockopts.host = host;\n sockopts.servername = sockopts.servername || host;\n sockopts.port = parseInt(parts.port) || ((protocol === 'amqp:') ? 5672 : 5671);\n var vhost = parts.pathname ? parts.pathname.substr(1) : null;\n fields = openFrames(vhost, parts.query, sockopts.credentials || credentialsFromUrl(parts), extraClientProperties);\n }\n\n var sockok = false;\n var sock;\n\n function onConnect() {\n sockok = true;\n sock.setNoDelay(noDelay);\n if (keepAlive) sock.setKeepAlive(keepAlive, keepAliveDelay);\n\n var c = new Connection(sock);\n c.open(fields, function(err, ok) {\n // disable timeout once the connection is open, we don't want\n // it fouling things\n if (timeout) sock.setTimeout(0);\n if (err === null) {\n openCallback(null, c);\n } else {\n // The connection isn't closed by the server on e.g. wrong password\n sock.end();\n sock.destroy();\n openCallback(err);\n }\n });\n }\n\n if (protocol === 'amqp:') {\n sock = require('net').connect(sockopts, onConnect);\n }\n else if (protocol === 'amqps:') {\n sock = require('tls').connect(sockopts, onConnect);\n }\n else {\n throw new Error(\"Expected amqp: or amqps: as the protocol; got \" + protocol);\n }\n\n if (timeout) {\n sock.setTimeout(timeout, function() {\n sock.end();\n sock.destroy();\n openCallback(new Error('connect ETIMEDOUT'));\n });\n }\n\n sock.once('error', function(err) {\n if (!sockok) openCallback(err);\n });\n\n}\n\nmodule.exports.connect = connect;\nmodule.exports.credentialsFromUrl = credentialsFromUrl;\n","//\n//\n//\n\n// Channel machinery.\n\n'use strict';\n\nvar defs = require('./defs');\nvar closeMsg = require('./format').closeMessage;\nvar inspect = require('./format').inspect;\nvar methodName = require('./format').methodName;\nvar assert = require('assert');\nvar EventEmitter = require('events');\nvar fmt = require('util').format;\nvar IllegalOperationError = require('./error').IllegalOperationError;\nvar stackCapture = require('./error').stackCapture;\n\nclass Channel extends EventEmitter {\n constructor (connection) {\n super();\n\n this.connection = connection;\n // for the presently outstanding RPC\n this.reply = null;\n // for the RPCs awaiting action\n this.pending = [];\n // for unconfirmed messages\n this.lwm = 1; // the least, unconfirmed deliveryTag\n this.unconfirmed = []; // rolling window of delivery callbacks\n this.on('ack', this.handleConfirm.bind(this, function (cb) {\n if (cb)\n cb(null);\n }));\n this.on('nack', this.handleConfirm.bind(this, function (cb) {\n if (cb)\n cb(new Error('message nacked'));\n }));\n this.on('close', function () {\n var cb;\n while (cb = this.unconfirmed.shift()) {\n if (cb)\n cb(new Error('channel closed'));\n }\n });\n // message frame state machine\n this.handleMessage = acceptDeliveryOrReturn;\n }\n\n setOptions(options) {\n this.options = options;\n }\n\n allocate () {\n this.ch = this.connection.freshChannel(this, this.options);\n return this;\n }\n\n // Incoming frames are either notifications of e.g., message delivery,\n // or replies to something we've sent. In general I deal with the\n // former by emitting an event, and with the latter by keeping a track\n // of what's expecting a reply.\n //\n // The AMQP specification implies that RPCs can't be pipelined; that\n // is, you can have only one outstanding RPC on a channel at a\n // time. Certainly that's what RabbitMQ and its clients assume. For\n // this reason, I buffer RPCs if the channel is already waiting for a\n // reply.\n // Just send the damn frame.\n sendImmediately (method, fields) {\n return this.connection.sendMethod(this.ch, method, fields);\n }\n\n // Invariant: !this.reply -> pending.length == 0. That is, whenever we\n // clear a reply, we must send another RPC (and thereby fill\n // this.reply) if there is one waiting. The invariant relevant here\n // and in `accept`.\n sendOrEnqueue (method, fields, reply) {\n if (!this.reply) { // if no reply waiting, we can go\n assert(this.pending.length === 0);\n this.reply = reply;\n this.sendImmediately(method, fields);\n }\n else {\n this.pending.push({\n method: method,\n fields: fields,\n reply: reply\n });\n }\n }\n\n sendMessage (fields, properties, content) {\n return this.connection.sendMessage(\n this.ch,\n defs.BasicPublish, fields,\n defs.BasicProperties, properties,\n content);\n }\n\n // Internal, synchronously resolved RPC; the return value is resolved\n // with the whole frame.\n _rpc (method, fields, expect, cb) {\n var self = this;\n\n function reply (err, f) {\n if (err === null) {\n if (f.id === expect) {\n return cb(null, f);\n }\n else {\n // We have detected a problem, so it's up to us to close the\n // channel\n var expectedName = methodName(expect);\n\n var e = new Error(fmt(\"Expected %s; got %s\",\n expectedName, inspect(f, false)));\n self.closeWithError(f.id, fmt('Expected %s; got %s',\n expectedName, methodName(f.id)),\n defs.constants.UNEXPECTED_FRAME, e);\n return cb(e);\n }\n }\n\n\n // An error will be given if, for example, this is waiting to be\n // sent and the connection closes\n else if (err instanceof Error)\n return cb(err);\n\n\n // A close frame will be given if this is the RPC awaiting reply\n // and the channel is closed by the server\n else {\n // otherwise, it's a close frame\n var closeReason = (err.fields.classId << 16) + err.fields.methodId;\n var e = (method === closeReason)\n ? fmt(\"Operation failed: %s; %s\",\n methodName(method), closeMsg(err))\n : fmt(\"Channel closed by server: %s\", closeMsg(err));\n var closeFrameError = new Error(e);\n closeFrameError.code = err.fields.replyCode;\n closeFrameError.classId = err.fields.classId;\n closeFrameError.methodId = err.fields.methodId;\n return cb(closeFrameError);\n }\n }\n\n this.sendOrEnqueue(method, fields, reply);\n }\n\n // Move to entirely closed state.\n toClosed (capturedStack) {\n this._rejectPending();\n invalidateSend(this, 'Channel closed', capturedStack);\n this.accept = invalidOp('Channel closed', capturedStack);\n this.connection.releaseChannel(this.ch);\n this.emit('close');\n }\n\n // Stop being able to send and receive methods and content. Used when\n // we close the channel. Invokes the continuation once the server has\n // acknowledged the close, but before the channel is moved to the\n // closed state.\n toClosing (capturedStack, k) {\n var send = this.sendImmediately.bind(this);\n invalidateSend(this, 'Channel closing', capturedStack);\n\n this.accept = function (f) {\n if (f.id === defs.ChannelCloseOk) {\n if (k)\n k();\n var s = stackCapture('ChannelCloseOk frame received');\n this.toClosed(s);\n }\n else if (f.id === defs.ChannelClose) {\n send(defs.ChannelCloseOk, {});\n }\n // else ignore frame\n };\n }\n\n _rejectPending () {\n function rej (r) {\n r(new Error(\"Channel ended, no reply will be forthcoming\"));\n }\n if (this.reply !== null)\n rej(this.reply);\n this.reply = null;\n\n var discard;\n while (discard = this.pending.shift())\n rej(discard.reply);\n this.pending = null; // so pushes will break\n }\n\n closeBecause (reason, code, k) {\n this.sendImmediately(defs.ChannelClose, {\n replyText: reason,\n replyCode: code,\n methodId: 0, classId: 0\n });\n var s = stackCapture('closeBecause called: ' + reason);\n this.toClosing(s, k);\n }\n\n // If we close because there's been an error, we need to distinguish\n // between what we tell the server (`reason`) and what we report as\n // the cause in the client (`error`).\n closeWithError (id, reason, code, error) {\n var self = this;\n this.closeBecause(reason, code, function () {\n error.code = code;\n // content frames and consumer errors do not provide a method a class/method ID\n if (id) {\n error.classId = defs.info(id).classId;\n error.methodId = defs.info(id).methodId;\n }\n self.emit('error', error);\n });\n }\n\n // A trampolining state machine for message frames on a channel. A\n // message arrives in at least two frames: first, a method announcing\n // the message (either a BasicDeliver or BasicGetOk); then, a message\n // header with the message properties; then, zero or more content\n // frames.\n // Keep the try/catch localised, in an attempt to avoid disabling\n // optimisation\n acceptMessageFrame (f) {\n try {\n this.handleMessage = this.handleMessage(f);\n }\n catch (msg) {\n if (typeof msg === 'string') {\n this.closeWithError(f.id, msg, defs.constants.UNEXPECTED_FRAME,\n new Error(msg));\n }\n else if (msg instanceof Error) {\n this.closeWithError(f.id, 'Error while processing message',\n defs.constants.INTERNAL_ERROR, msg);\n }\n else {\n this.closeWithError(f.id, 'Internal error while processing message',\n defs.constants.INTERNAL_ERROR,\n new Error(msg.toString()));\n }\n }\n }\n\n handleConfirm (handle, f) {\n var tag = f.deliveryTag;\n var multi = f.multiple;\n\n if (multi) {\n var confirmed = this.unconfirmed.splice(0, tag - this.lwm + 1);\n this.lwm = tag + 1;\n confirmed.forEach(handle);\n }\n else {\n var c;\n if (tag === this.lwm) {\n c = this.unconfirmed.shift();\n this.lwm++;\n // Advance the LWM and the window to the next non-gap, or\n // possibly to the end\n while (this.unconfirmed[0] === null) {\n this.unconfirmed.shift();\n this.lwm++;\n }\n }\n else {\n c = this.unconfirmed[tag - this.lwm];\n this.unconfirmed[tag - this.lwm] = null;\n }\n // Technically, in the single-deliveryTag case, I should report a\n // protocol breach if it's already been confirmed.\n handle(c);\n }\n }\n\n pushConfirmCallback (cb) {\n // `null` is used specifically for marking already confirmed slots,\n // so I coerce `undefined` and `null` to false; functions are never\n // falsey.\n this.unconfirmed.push(cb || false);\n }\n\n onBufferDrain () {\n this.emit('drain');\n }\n\n accept(f) {\n\n switch (f.id) {\n\n // Message frames\n case undefined: // content frame!\n case defs.BasicDeliver:\n case defs.BasicReturn:\n case defs.BasicProperties:\n return this.acceptMessageFrame(f);\n\n // confirmations, need to do confirm.select first\n case defs.BasicAck:\n return this.emit('ack', f.fields);\n case defs.BasicNack:\n return this.emit('nack', f.fields);\n case defs.BasicCancel:\n // The broker can send this if e.g., the queue is deleted.\n return this.emit('cancel', f.fields);\n\n case defs.ChannelClose:\n // Any remote closure is an error to us. Reject the pending reply\n // with the close frame, so it can see whether it was that\n // operation that caused it to close.\n if (this.reply) {\n var reply = this.reply; this.reply = null;\n reply(f);\n }\n var emsg = \"Channel closed by server: \" + closeMsg(f);\n this.sendImmediately(defs.ChannelCloseOk, {});\n\n var error = new Error(emsg);\n error.code = f.fields.replyCode;\n error.classId = f.fields.classId;\n error.methodId = f.fields.methodId;\n this.emit('error', error);\n\n var s = stackCapture(emsg);\n this.toClosed(s);\n return;\n\n case defs.BasicFlow:\n // RabbitMQ doesn't send this, it just blocks the TCP socket\n return this.closeWithError(f.id, \"Flow not implemented\",\n defs.constants.NOT_IMPLEMENTED,\n new Error('Flow not implemented'));\n\n default: // assume all other things are replies\n // Resolving the reply may lead to another RPC; to make sure we\n // don't hold that up, clear this.reply\n var reply = this.reply; this.reply = null;\n // however, maybe there's an RPC waiting to go? If so, that'll\n // fill this.reply again, restoring the invariant. This does rely\n // on any response being recv'ed after resolving the promise,\n // below; hence, I use synchronous defer.\n if (this.pending.length > 0) {\n var send = this.pending.shift();\n this.reply = send.reply;\n this.sendImmediately(send.method, send.fields);\n }\n return reply(null, f);\n }\n }\n}\n\n// Shutdown protocol. There's three scenarios:\n//\n// 1. The application decides to shut the channel\n// 2. The server decides to shut the channel, possibly because of\n// something the application did\n// 3. The connection is closing, so there won't be any more frames\n// going back and forth.\n//\n// 1 and 2 involve an exchange of method frames (Close and CloseOk),\n// while 3 doesn't; the connection simply says \"shutdown\" to the\n// channel, which then acts as if it's closing, without going through\n// the exchange.\n\nfunction invalidOp(msg, stack) {\n return function() {\n throw new IllegalOperationError(msg, stack);\n };\n}\n\nfunction invalidateSend(ch, msg, stack) {\n ch.sendImmediately = ch.sendOrEnqueue = ch.sendMessage =\n invalidOp(msg, stack);\n}\n\n// Kick off a message delivery given a BasicDeliver or BasicReturn\n// frame (BasicGet uses the RPC mechanism)\nfunction acceptDeliveryOrReturn(f) {\n var event;\n if (f.id === defs.BasicDeliver) event = 'delivery';\n else if (f.id === defs.BasicReturn) event = 'return';\n else throw fmt(\"Expected BasicDeliver or BasicReturn; got %s\",\n inspect(f));\n\n var self = this;\n var fields = f.fields;\n return acceptMessage(function(message) {\n message.fields = fields;\n self.emit(event, message);\n });\n}\n\n// Move to the state of waiting for message frames (headers, then\n// one or more content frames)\nfunction acceptMessage(continuation) {\n var totalSize = 0, remaining = 0;\n var buffers = null;\n\n var message = {\n fields: null,\n properties: null,\n content: null\n };\n\n return headers;\n\n // expect a headers frame\n function headers(f) {\n if (f.id === defs.BasicProperties) {\n message.properties = f.fields;\n totalSize = remaining = f.size;\n\n // for zero-length messages, content frames aren't required.\n if (totalSize === 0) {\n message.content = Buffer.alloc(0);\n continuation(message);\n return acceptDeliveryOrReturn;\n }\n else {\n return content;\n }\n }\n else {\n throw \"Expected headers frame after delivery\";\n }\n }\n\n // expect a content frame\n // %%% TODO cancelled messages (sent as zero-length content frame)\n function content(f) {\n if (f.content) {\n var size = f.content.length;\n remaining -= size;\n if (remaining === 0) {\n if (buffers !== null) {\n buffers.push(f.content);\n message.content = Buffer.concat(buffers);\n }\n else {\n message.content = f.content;\n }\n continuation(message);\n return acceptDeliveryOrReturn;\n }\n else if (remaining < 0) {\n throw fmt(\"Too much content sent! Expected %d bytes\",\n totalSize);\n }\n else {\n if (buffers !== null)\n buffers.push(f.content);\n else\n buffers = [f.content];\n return content;\n }\n }\n else throw \"Expected content frame after headers\"\n }\n}\n\n// This adds just a bit more stuff useful for the APIs, but not\n// low-level machinery.\nclass BaseChannel extends Channel {\n constructor (connection) {\n super(connection);\n this.consumers = new Map();\n }\n\n // Not sure I like the ff, it's going to be changing hidden classes\n // all over the place. On the other hand, whaddya do.\n registerConsumer (tag, callback) {\n this.consumers.set(tag, callback);\n }\n\n unregisterConsumer (tag) {\n this.consumers.delete(tag);\n }\n\n dispatchMessage (fields, message) {\n var consumerTag = fields.consumerTag;\n var consumer = this.consumers.get(consumerTag);\n if (consumer) {\n return consumer(message);\n }\n else {\n // %%% Surely a race here\n throw new Error(\"Unknown consumer: \" + consumerTag);\n }\n }\n\n handleDelivery (message) {\n return this.dispatchMessage(message.fields, message);\n }\n\n handleCancel (fields) {\n var result = this.dispatchMessage(fields, null);\n this.unregisterConsumer(fields.consumerTag);\n return result;\n }\n}\n\nmodule.exports.acceptMessage = acceptMessage;\nmodule.exports.BaseChannel = BaseChannel;\nmodule.exports.Channel = Channel;\n","//\n//\n//\n\n'use strict';\n\n/*\nThe channel (promise) and callback APIs have similar signatures, and\nin particular, both need AMQP fields prepared from the same arguments\nand options. The arguments marshalling is done here. Each of the\nprocedures below takes arguments and options (the latter in an object)\nparticular to the operation it represents, and returns an object with\nfields for handing to the encoder.\n*/\n\n// A number of AMQP methods have a table-typed field called\n// `arguments`, that is intended to carry extension-specific\n// values. RabbitMQ uses this in a number of places; e.g., to specify\n// an 'alternate exchange'.\n//\n// Many of the methods in this API have an `options` argument, from\n// which I take both values that have a default in AMQP (e.g.,\n// autoDelete in QueueDeclare) *and* values that are specific to\n// RabbitMQ (e.g., 'alternate-exchange'), which would normally be\n// supplied in `arguments`. So that extensions I don't support yet can\n// be used, I include `arguments` itself among the options.\n//\n// The upshot of this is that I often need to prepare an `arguments`\n// value that has any values passed in `options.arguments` as well as\n// any I've promoted to being options themselves. Since I don't want\n// to mutate anything passed in, the general pattern is to create a\n// fresh object with the `arguments` value given as its prototype; all\n// fields in the supplied value will be serialised, as well as any I\n// set on the fresh object. What I don't want to do, however, is set a\n// field to undefined by copying possibly missing field values,\n// because that will mask a value in the prototype.\n//\n// NB the `arguments` field already has a default value of `{}`, so\n// there's no need to explicitly default it unless I'm setting values.\nfunction setIfDefined(obj, prop, value) {\n if (value != undefined) obj[prop] = value;\n}\n\nvar EMPTY_OPTIONS = Object.freeze({});\n\nvar Args = {};\n\nArgs.assertQueue = function(queue, options) {\n queue = queue || '';\n options = options || EMPTY_OPTIONS;\n\n var argt = Object.create(options.arguments || null);\n setIfDefined(argt, 'x-expires', options.expires);\n setIfDefined(argt, 'x-message-ttl', options.messageTtl);\n setIfDefined(argt, 'x-dead-letter-exchange',\n options.deadLetterExchange);\n setIfDefined(argt, 'x-dead-letter-routing-key',\n options.deadLetterRoutingKey);\n setIfDefined(argt, 'x-max-length', options.maxLength);\n setIfDefined(argt, 'x-max-priority', options.maxPriority);\n setIfDefined(argt, 'x-overflow', options.overflow);\n setIfDefined(argt, 'x-queue-mode', options.queueMode);\n\n return {\n queue: queue,\n exclusive: !!options.exclusive,\n durable: (options.durable === undefined) ? true : options.durable,\n autoDelete: !!options.autoDelete,\n arguments: argt,\n passive: false,\n // deprecated but we have to include it\n ticket: 0,\n nowait: false\n };\n};\n\nArgs.checkQueue = function(queue) {\n return {\n queue: queue,\n passive: true, // switch to \"completely different\" mode\n nowait: false,\n durable: true, autoDelete: false, exclusive: false, // ignored\n ticket: 0,\n };\n};\n\nArgs.deleteQueue = function(queue, options) {\n options = options || EMPTY_OPTIONS;\n return {\n queue: queue,\n ifUnused: !!options.ifUnused,\n ifEmpty: !!options.ifEmpty,\n ticket: 0, nowait: false\n };\n};\n\nArgs.purgeQueue = function(queue) {\n return {\n queue: queue,\n ticket: 0, nowait: false\n };\n};\n\nArgs.bindQueue = function(queue, source, pattern, argt) {\n return {\n queue: queue,\n exchange: source,\n routingKey: pattern,\n arguments: argt,\n ticket: 0, nowait: false\n };\n};\n\nArgs.unbindQueue = function(queue, source, pattern, argt) {\n return {\n queue: queue,\n exchange: source,\n routingKey: pattern,\n arguments: argt,\n ticket: 0, nowait: false\n };\n};\n\nArgs.assertExchange = function(exchange, type, options) {\n options = options || EMPTY_OPTIONS;\n var argt = Object.create(options.arguments || null);\n setIfDefined(argt, 'alternate-exchange', options.alternateExchange);\n return {\n exchange: exchange,\n ticket: 0,\n type: type,\n passive: false,\n durable: (options.durable === undefined) ? true : options.durable,\n autoDelete: !!options.autoDelete,\n internal: !!options.internal,\n nowait: false,\n arguments: argt\n };\n};\n\nArgs.checkExchange = function(exchange) {\n return {\n exchange: exchange,\n passive: true, // switch to 'may as well be another method' mode\n nowait: false,\n // ff are ignored\n durable: true, internal: false, type: '', autoDelete: false,\n ticket: 0\n };\n};\n\nArgs.deleteExchange = function(exchange, options) {\n options = options || EMPTY_OPTIONS;\n return {\n exchange: exchange,\n ifUnused: !!options.ifUnused,\n ticket: 0, nowait: false\n };\n};\n\nArgs.bindExchange = function(dest, source, pattern, argt) {\n return {\n source: source,\n destination: dest,\n routingKey: pattern,\n arguments: argt,\n ticket: 0, nowait: false\n };\n};\n\nArgs.unbindExchange = function(dest, source, pattern, argt) {\n return {\n source: source,\n destination: dest,\n routingKey: pattern,\n arguments: argt,\n ticket: 0, nowait: false\n };\n};\n\n// It's convenient to construct the properties and the method fields\n// at the same time, since in the APIs, values for both can appear in\n// `options`. Since the property or mthod field names don't overlap, I\n// just return one big object that can be used for both purposes, and\n// the encoder will pick out what it wants.\nArgs.publish = function(exchange, routingKey, options) {\n options = options || EMPTY_OPTIONS;\n\n // The CC and BCC fields expect an array of \"longstr\", which would\n // normally be buffer values in JavaScript; however, since a field\n // array (or table) cannot have shortstr values, the codec will\n // encode all strings as longstrs anyway.\n function convertCC(cc) {\n if (cc === undefined) {\n return undefined;\n }\n else if (Array.isArray(cc)) {\n return cc.map(String);\n }\n else return [String(cc)];\n }\n\n var headers = Object.create(options.headers || null);\n setIfDefined(headers, 'CC', convertCC(options.CC));\n setIfDefined(headers, 'BCC', convertCC(options.BCC));\n\n var deliveryMode; // undefined will default to 1 (non-persistent)\n\n // Previously I overloaded deliveryMode be a boolean meaning\n // 'persistent or not'; better is to name this option for what it\n // is, but I need to have backwards compatibility for applications\n // that either supply a numeric or boolean value.\n if (options.persistent !== undefined)\n deliveryMode = (options.persistent) ? 2 : 1;\n else if (typeof options.deliveryMode === 'number')\n deliveryMode = options.deliveryMode;\n else if (options.deliveryMode) // is supplied and truthy\n deliveryMode = 2;\n\n var expiration = options.expiration;\n if (expiration !== undefined) expiration = expiration.toString();\n\n return {\n // method fields\n exchange: exchange,\n routingKey: routingKey,\n mandatory: !!options.mandatory,\n immediate: false, // RabbitMQ doesn't implement this any more\n ticket: undefined,\n // properties\n contentType: options.contentType,\n contentEncoding: options.contentEncoding,\n headers: headers,\n deliveryMode: deliveryMode,\n priority: options.priority,\n correlationId: options.correlationId,\n replyTo: options.replyTo,\n expiration: expiration,\n messageId: options.messageId,\n timestamp: options.timestamp,\n type: options.type,\n userId: options.userId,\n appId: options.appId,\n clusterId: undefined\n };\n};\n\nArgs.consume = function(queue, options) {\n options = options || EMPTY_OPTIONS;\n var argt = Object.create(options.arguments || null);\n setIfDefined(argt, 'x-priority', options.priority);\n return {\n ticket: 0,\n queue: queue,\n consumerTag: options.consumerTag || '',\n noLocal: !!options.noLocal,\n noAck: !!options.noAck,\n exclusive: !!options.exclusive,\n nowait: false,\n arguments: argt\n };\n};\n\nArgs.cancel = function(consumerTag) {\n return {\n consumerTag: consumerTag,\n nowait: false\n };\n};\n\nArgs.get = function(queue, options) {\n options = options || EMPTY_OPTIONS;\n return {\n ticket: 0,\n queue: queue,\n noAck: !!options.noAck\n };\n};\n\nArgs.ack = function(tag, allUpTo) {\n return {\n deliveryTag: tag,\n multiple: !!allUpTo\n };\n};\n\nArgs.nack = function(tag, allUpTo, requeue) {\n return {\n deliveryTag: tag,\n multiple: !!allUpTo,\n requeue: (requeue === undefined) ? true : requeue\n };\n};\n\nArgs.reject = function(tag, requeue) {\n return {\n deliveryTag: tag,\n requeue: (requeue === undefined) ? true : requeue\n };\n};\n\nArgs.prefetch = function(count, global) {\n return {\n prefetchCount: count || 0,\n prefetchSize: 0,\n global: !!global\n };\n};\n\nArgs.recover = function() {\n return {requeue: true};\n};\n\nmodule.exports = Object.freeze(Args);\n","//\n//\n//\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst promisify = require('util').promisify;\nconst defs = require('./defs');\nconst {BaseChannel} = require('./channel');\nconst {acceptMessage} = require('./channel');\nconst Args = require('./api_args');\nconst {inspect} = require('./format');\n\nclass ChannelModel extends EventEmitter {\n constructor(connection) {\n super();\n this.connection = connection;\n\n ['error', 'close', 'blocked', 'unblocked'].forEach(ev => {\n connection.on(ev, this.emit.bind(this, ev));\n });\n }\n\n close() {\n return promisify(this.connection.close.bind(this.connection))();\n }\n\n updateSecret(newSecret, reason) {\n return promisify(this.connection._updateSecret.bind(this.connection))(newSecret, reason);\n }\n\n async createChannel(options) {\n const channel = new Channel(this.connection);\n channel.setOptions(options);\n await channel.open();\n return channel;\n }\n\n async createConfirmChannel(options) {\n const channel = new ConfirmChannel(this.connection);\n channel.setOptions(options);\n await channel.open();\n await channel.rpc(defs.ConfirmSelect, {nowait: false}, defs.ConfirmSelectOk);\n return channel;\n }\n}\n\n// Channels\n\nclass Channel extends BaseChannel {\n constructor(connection) {\n super(connection);\n this.on('delivery', this.handleDelivery.bind(this));\n this.on('cancel', this.handleCancel.bind(this));\n }\n\n // An RPC that returns a 'proper' promise, which resolves to just the\n // response's fields; this is intended to be suitable for implementing\n // API procedures.\n async rpc(method, fields, expect) {\n const f = await promisify(cb => {\n return this._rpc(method, fields, expect, cb);\n })();\n\n return f.fields;\n }\n\n // Do the remarkably simple channel open handshake\n async open() {\n const ch = await this.allocate.bind(this)();\n return ch.rpc(defs.ChannelOpen, {outOfBand: \"\"},\n defs.ChannelOpenOk);\n }\n\n close() {\n return promisify(cb => {\n return this.closeBecause(\"Goodbye\", defs.constants.REPLY_SUCCESS,\n cb);\n })();\n }\n\n // === Public API, declaring queues and stuff ===\n\n assertQueue(queue, options) {\n return this.rpc(defs.QueueDeclare,\n Args.assertQueue(queue, options),\n defs.QueueDeclareOk);\n }\n\n checkQueue(queue) {\n return this.rpc(defs.QueueDeclare,\n Args.checkQueue(queue),\n defs.QueueDeclareOk);\n }\n\n deleteQueue(queue, options) {\n return this.rpc(defs.QueueDelete,\n Args.deleteQueue(queue, options),\n defs.QueueDeleteOk);\n }\n\n purgeQueue(queue) {\n return this.rpc(defs.QueuePurge,\n Args.purgeQueue(queue),\n defs.QueuePurgeOk);\n }\n\n bindQueue(queue, source, pattern, argt) {\n return this.rpc(defs.QueueBind,\n Args.bindQueue(queue, source, pattern, argt),\n defs.QueueBindOk);\n }\n\n unbindQueue(queue, source, pattern, argt) {\n return this.rpc(defs.QueueUnbind,\n Args.unbindQueue(queue, source, pattern, argt),\n defs.QueueUnbindOk);\n }\n\n assertExchange(exchange, type, options) {\n // The server reply is an empty set of fields, but it's convenient\n // to have the exchange name handed to the continuation.\n return this.rpc(defs.ExchangeDeclare,\n Args.assertExchange(exchange, type, options),\n defs.ExchangeDeclareOk)\n .then(_ok => { return { exchange }; });\n }\n\n checkExchange(exchange) {\n return this.rpc(defs.ExchangeDeclare,\n Args.checkExchange(exchange),\n defs.ExchangeDeclareOk);\n }\n\n deleteExchange(name, options) {\n return this.rpc(defs.ExchangeDelete,\n Args.deleteExchange(name, options),\n defs.ExchangeDeleteOk);\n }\n\n bindExchange(dest, source, pattern, argt) {\n return this.rpc(defs.ExchangeBind,\n Args.bindExchange(dest, source, pattern, argt),\n defs.ExchangeBindOk);\n }\n\n unbindExchange(dest, source, pattern, argt) {\n return this.rpc(defs.ExchangeUnbind,\n Args.unbindExchange(dest, source, pattern, argt),\n defs.ExchangeUnbindOk);\n }\n\n // Working with messages\n\n publish(exchange, routingKey, content, options) {\n const fieldsAndProps = Args.publish(exchange, routingKey, options);\n return this.sendMessage(fieldsAndProps, fieldsAndProps, content);\n }\n\n sendToQueue(queue, content, options) {\n return this.publish('', queue, content, options);\n }\n\n consume(queue, callback, options) {\n // NB we want the callback to be run synchronously, so that we've\n // registered the consumerTag before any messages can arrive.\n const fields = Args.consume(queue, options);\n return new Promise((resolve, reject) => {\n this._rpc(defs.BasicConsume, fields, defs.BasicConsumeOk, (err, ok) => {\n if (err) return reject(err);\n this.registerConsumer(ok.fields.consumerTag, callback);\n resolve(ok.fields);\n });\n });\n }\n\n async cancel(consumerTag) {\n const ok = await promisify(cb => {\n this._rpc(defs.BasicCancel, Args.cancel(consumerTag),\n defs.BasicCancelOk,\n cb);\n })()\n .then(ok => {\n this.unregisterConsumer(consumerTag);\n return ok.fields;\n });\n }\n\n get(queue, options) {\n const fields = Args.get(queue, options);\n return new Promise((resolve, reject) => {\n this.sendOrEnqueue(defs.BasicGet, fields, (err, f) => {\n if (err) return reject(err);\n if (f.id === defs.BasicGetEmpty) {\n return resolve(false);\n }\n else if (f.id === defs.BasicGetOk) {\n const fields = f.fields;\n this.handleMessage = acceptMessage(m => {\n m.fields = fields;\n resolve(m);\n });\n }\n else {\n reject(new Error(`Unexpected response to BasicGet: ${inspect(f)}`));\n }\n });\n });\n }\n\n ack(message, allUpTo) {\n this.sendImmediately(\n defs.BasicAck,\n Args.ack(message.fields.deliveryTag, allUpTo));\n }\n\n ackAll() {\n this.sendImmediately(defs.BasicAck, Args.ack(0, true));\n }\n\n nack(message, allUpTo, requeue) {\n this.sendImmediately(\n defs.BasicNack,\n Args.nack(message.fields.deliveryTag, allUpTo, requeue));\n }\n\n nackAll(requeue) {\n this.sendImmediately(defs.BasicNack,\n Args.nack(0, true, requeue));\n }\n\n // `Basic.Nack` is not available in older RabbitMQ versions (or in the\n // AMQP specification), so you have to use the one-at-a-time\n // `Basic.Reject`. This is otherwise synonymous with\n // `#nack(message, false, requeue)`.\n reject(message, requeue) {\n this.sendImmediately(\n defs.BasicReject,\n Args.reject(message.fields.deliveryTag, requeue));\n }\n\n recover() {\n return this.rpc(defs.BasicRecover,\n Args.recover(),\n defs.BasicRecoverOk);\n }\n\n qos(count, global) {\n return this.rpc(defs.BasicQos,\n Args.prefetch(count, global),\n defs.BasicQosOk);\n }\n}\n\n// There are more options in AMQP than exposed here; RabbitMQ only\n// implements prefetch based on message count, and only for individual\n// channels or consumers. RabbitMQ v3.3.0 and after treat prefetch\n// (without `global` set) as per-consumer (for consumers following),\n// and prefetch with `global` set as per-channel.\nChannel.prototype.prefetch = Channel.prototype.qos\n\n// Confirm channel. This is a channel with confirms 'switched on',\n// meaning sent messages will provoke a responding 'ack' or 'nack'\n// from the server. The upshot of this is that `publish` and\n// `sendToQueue` both take a callback, which will be called either\n// with `null` as its argument to signify 'ack', or an exception as\n// its argument to signify 'nack'.\n\nclass ConfirmChannel extends Channel {\n publish(exchange, routingKey, content, options, cb) {\n this.pushConfirmCallback(cb);\n return super.publish(exchange, routingKey, content, options);\n }\n\n sendToQueue(queue, content, options, cb) {\n return this.publish('', queue, content, options, cb);\n }\n\n waitForConfirms() {\n const awaiting = [];\n const unconfirmed = this.unconfirmed;\n unconfirmed.forEach((val, index) => {\n if (val !== null) {\n const confirmed = new Promise((resolve, reject) => {\n unconfirmed[index] = err => {\n if (val) val(err);\n if (err === null) resolve();\n else reject(err);\n };\n });\n awaiting.push(confirmed);\n }\n });\n // Channel closed\n if (!this.pending) {\n var cb;\n while (cb = this.unconfirmed.shift()) {\n if (cb) cb(new Error('channel closed'));\n }\n }\n return Promise.all(awaiting);\n }\n}\n\nmodule.exports.ConfirmChannel = ConfirmChannel;\nmodule.exports.Channel = Channel;\nmodule.exports.ChannelModel = ChannelModel;\n","var raw_connect = require('./lib/connect').connect;\nvar ChannelModel = require('./lib/channel_model').ChannelModel;\nvar promisify = require('util').promisify;\n\nfunction connect(url, connOptions) {\n return promisify(function(cb) {\n return raw_connect(url, connOptions, cb);\n })()\n .then(function(conn) {\n return new ChannelModel(conn);\n });\n};\n\nmodule.exports.connect = connect;\nmodule.exports.credentials = require('./lib/credentials');\nmodule.exports.IllegalOperationError = require('./lib/error').IllegalOperationError;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],"mappings":"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"}