@ohos-ports/confluentinc-kafka-javascript 1.10.0-beta.1

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 (628) hide show
  1. package/CHANGELOG.md +457 -0
  2. package/LICENSE.kafkajs +31 -0
  3. package/LICENSE.node-rdkafka +25 -0
  4. package/LICENSE.txt +20 -0
  5. package/README.md +133 -0
  6. package/binding.gyp +184 -0
  7. package/build/Release/confluent-kafka-javascript.node +0 -0
  8. package/build/deps/librdkafka++.so.1 +0 -0
  9. package/build/deps/librdkafka.Makefile +6 -0
  10. package/build/deps/librdkafka.so.1 +0 -0
  11. package/build/deps/librdkafka.target.mk +55 -0
  12. package/deps/librdkafka/.clang-format +136 -0
  13. package/deps/librdkafka/.clang-format-cpp +103 -0
  14. package/deps/librdkafka/.dir-locals.el +10 -0
  15. package/deps/librdkafka/.formatignore +35 -0
  16. package/deps/librdkafka/.gdbmacros +19 -0
  17. package/deps/librdkafka/CHANGELOG.md +2477 -0
  18. package/deps/librdkafka/CMakeLists.txt +291 -0
  19. package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
  20. package/deps/librdkafka/CONFIGURATION.md +212 -0
  21. package/deps/librdkafka/CONTRIBUTING.md +431 -0
  22. package/deps/librdkafka/Doxyfile +2375 -0
  23. package/deps/librdkafka/INTRODUCTION.md +2752 -0
  24. package/deps/librdkafka/LICENSE +26 -0
  25. package/deps/librdkafka/LICENSE.cjson +22 -0
  26. package/deps/librdkafka/LICENSE.crc32c +28 -0
  27. package/deps/librdkafka/LICENSE.fnv1a +18 -0
  28. package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
  29. package/deps/librdkafka/LICENSE.lz4 +26 -0
  30. package/deps/librdkafka/LICENSE.murmur2 +25 -0
  31. package/deps/librdkafka/LICENSE.nanopb +22 -0
  32. package/deps/librdkafka/LICENSE.opentelemetry +203 -0
  33. package/deps/librdkafka/LICENSE.pycrc +23 -0
  34. package/deps/librdkafka/LICENSE.queue +31 -0
  35. package/deps/librdkafka/LICENSE.regexp +5 -0
  36. package/deps/librdkafka/LICENSE.snappy +36 -0
  37. package/deps/librdkafka/LICENSE.tinycthread +26 -0
  38. package/deps/librdkafka/LICENSE.wingetopt +49 -0
  39. package/deps/librdkafka/LICENSES.txt +625 -0
  40. package/deps/librdkafka/Makefile +125 -0
  41. package/deps/librdkafka/README.md +201 -0
  42. package/deps/librdkafka/README.win32 +26 -0
  43. package/deps/librdkafka/STATISTICS.md +624 -0
  44. package/deps/librdkafka/configure +214 -0
  45. package/deps/librdkafka/configure.self +341 -0
  46. package/deps/librdkafka/dev-conf.sh +123 -0
  47. package/deps/librdkafka/lds-gen.py +73 -0
  48. package/deps/librdkafka/mainpage.doxy +40 -0
  49. package/deps/librdkafka/mklove/Makefile.base +329 -0
  50. package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
  51. package/deps/librdkafka/mklove/modules/configure.base +2484 -0
  52. package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
  53. package/deps/librdkafka/mklove/modules/configure.cc +186 -0
  54. package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
  55. package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
  56. package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
  57. package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
  58. package/deps/librdkafka/mklove/modules/configure.host +132 -0
  59. package/deps/librdkafka/mklove/modules/configure.lib +49 -0
  60. package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
  61. package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
  62. package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
  63. package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
  64. package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
  65. package/deps/librdkafka/mklove/modules/configure.pic +16 -0
  66. package/deps/librdkafka/mklove/modules/configure.socket +20 -0
  67. package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
  68. package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
  69. package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
  70. package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
  71. package/deps/librdkafka/service.yml +182 -0
  72. package/deps/librdkafka/src/CMakeLists.txt +379 -0
  73. package/deps/librdkafka/src/Makefile +105 -0
  74. package/deps/librdkafka/src/README.lz4.md +30 -0
  75. package/deps/librdkafka/src/cJSON.c +3191 -0
  76. package/deps/librdkafka/src/cJSON.h +306 -0
  77. package/deps/librdkafka/src/crc32c.c +430 -0
  78. package/deps/librdkafka/src/crc32c.h +38 -0
  79. package/deps/librdkafka/src/generate_proto.sh +66 -0
  80. package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
  81. package/deps/librdkafka/src/lz4.c +2727 -0
  82. package/deps/librdkafka/src/lz4.h +842 -0
  83. package/deps/librdkafka/src/lz4frame.c +2078 -0
  84. package/deps/librdkafka/src/lz4frame.h +692 -0
  85. package/deps/librdkafka/src/lz4frame_static.h +47 -0
  86. package/deps/librdkafka/src/lz4hc.c +1631 -0
  87. package/deps/librdkafka/src/lz4hc.h +413 -0
  88. package/deps/librdkafka/src/nanopb/pb.h +917 -0
  89. package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
  90. package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
  91. package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
  92. package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
  93. package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
  94. package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
  95. package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
  96. package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
  97. package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
  98. package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
  99. package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
  100. package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
  101. package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
  102. package/deps/librdkafka/src/queue.h +850 -0
  103. package/deps/librdkafka/src/rd.h +592 -0
  104. package/deps/librdkafka/src/rdaddr.c +255 -0
  105. package/deps/librdkafka/src/rdaddr.h +202 -0
  106. package/deps/librdkafka/src/rdatomic.h +262 -0
  107. package/deps/librdkafka/src/rdavg.h +260 -0
  108. package/deps/librdkafka/src/rdavl.c +210 -0
  109. package/deps/librdkafka/src/rdavl.h +250 -0
  110. package/deps/librdkafka/src/rdbase64.c +200 -0
  111. package/deps/librdkafka/src/rdbase64.h +43 -0
  112. package/deps/librdkafka/src/rdbuf.c +1884 -0
  113. package/deps/librdkafka/src/rdbuf.h +375 -0
  114. package/deps/librdkafka/src/rdcrc32.c +114 -0
  115. package/deps/librdkafka/src/rdcrc32.h +170 -0
  116. package/deps/librdkafka/src/rddl.c +179 -0
  117. package/deps/librdkafka/src/rddl.h +43 -0
  118. package/deps/librdkafka/src/rdendian.h +175 -0
  119. package/deps/librdkafka/src/rdfloat.h +67 -0
  120. package/deps/librdkafka/src/rdfnv1a.c +113 -0
  121. package/deps/librdkafka/src/rdfnv1a.h +35 -0
  122. package/deps/librdkafka/src/rdgz.c +120 -0
  123. package/deps/librdkafka/src/rdgz.h +46 -0
  124. package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
  125. package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
  126. package/deps/librdkafka/src/rdhttp.c +831 -0
  127. package/deps/librdkafka/src/rdhttp.h +101 -0
  128. package/deps/librdkafka/src/rdinterval.h +177 -0
  129. package/deps/librdkafka/src/rdkafka.c +7287 -0
  130. package/deps/librdkafka/src/rdkafka.h +11795 -0
  131. package/deps/librdkafka/src/rdkafka_admin.c +10165 -0
  132. package/deps/librdkafka/src/rdkafka_admin.h +658 -0
  133. package/deps/librdkafka/src/rdkafka_assignment.c +1282 -0
  134. package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
  135. package/deps/librdkafka/src/rdkafka_assignor.c +1800 -0
  136. package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
  137. package/deps/librdkafka/src/rdkafka_aux.c +409 -0
  138. package/deps/librdkafka/src/rdkafka_aux.h +174 -0
  139. package/deps/librdkafka/src/rdkafka_background.c +222 -0
  140. package/deps/librdkafka/src/rdkafka_broker.c +6736 -0
  141. package/deps/librdkafka/src/rdkafka_broker.h +851 -0
  142. package/deps/librdkafka/src/rdkafka_buf.c +543 -0
  143. package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
  144. package/deps/librdkafka/src/rdkafka_cert.c +576 -0
  145. package/deps/librdkafka/src/rdkafka_cert.h +62 -0
  146. package/deps/librdkafka/src/rdkafka_cgrp.c +8310 -0
  147. package/deps/librdkafka/src/rdkafka_cgrp.h +589 -0
  148. package/deps/librdkafka/src/rdkafka_conf.c +5177 -0
  149. package/deps/librdkafka/src/rdkafka_conf.h +746 -0
  150. package/deps/librdkafka/src/rdkafka_confval.h +97 -0
  151. package/deps/librdkafka/src/rdkafka_coord.c +623 -0
  152. package/deps/librdkafka/src/rdkafka_coord.h +132 -0
  153. package/deps/librdkafka/src/rdkafka_error.c +228 -0
  154. package/deps/librdkafka/src/rdkafka_error.h +80 -0
  155. package/deps/librdkafka/src/rdkafka_event.c +502 -0
  156. package/deps/librdkafka/src/rdkafka_event.h +126 -0
  157. package/deps/librdkafka/src/rdkafka_feature.c +898 -0
  158. package/deps/librdkafka/src/rdkafka_feature.h +104 -0
  159. package/deps/librdkafka/src/rdkafka_fetcher.c +3820 -0
  160. package/deps/librdkafka/src/rdkafka_fetcher.h +62 -0
  161. package/deps/librdkafka/src/rdkafka_header.c +220 -0
  162. package/deps/librdkafka/src/rdkafka_header.h +76 -0
  163. package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
  164. package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
  165. package/deps/librdkafka/src/rdkafka_int.h +1505 -0
  166. package/deps/librdkafka/src/rdkafka_interceptor.c +842 -0
  167. package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
  168. package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
  169. package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
  170. package/deps/librdkafka/src/rdkafka_metadata.c +2347 -0
  171. package/deps/librdkafka/src/rdkafka_metadata.h +350 -0
  172. package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
  173. package/deps/librdkafka/src/rdkafka_mock.c +4514 -0
  174. package/deps/librdkafka/src/rdkafka_mock.h +867 -0
  175. package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1877 -0
  176. package/deps/librdkafka/src/rdkafka_mock_handlers.c +5255 -0
  177. package/deps/librdkafka/src/rdkafka_mock_int.h +1005 -0
  178. package/deps/librdkafka/src/rdkafka_mock_sharegrp.c +1207 -0
  179. package/deps/librdkafka/src/rdkafka_msg.c +2619 -0
  180. package/deps/librdkafka/src/rdkafka_msg.h +629 -0
  181. package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
  182. package/deps/librdkafka/src/rdkafka_msgset.h +105 -0
  183. package/deps/librdkafka/src/rdkafka_msgset_reader.c +2099 -0
  184. package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
  185. package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
  186. package/deps/librdkafka/src/rdkafka_offset.h +150 -0
  187. package/deps/librdkafka/src/rdkafka_op.c +1219 -0
  188. package/deps/librdkafka/src/rdkafka_op.h +1065 -0
  189. package/deps/librdkafka/src/rdkafka_partition.c +5109 -0
  190. package/deps/librdkafka/src/rdkafka_partition.h +1215 -0
  191. package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
  192. package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
  193. package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
  194. package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
  195. package/deps/librdkafka/src/rdkafka_proto.h +739 -0
  196. package/deps/librdkafka/src/rdkafka_protocol.h +131 -0
  197. package/deps/librdkafka/src/rdkafka_queue.c +1351 -0
  198. package/deps/librdkafka/src/rdkafka_queue.h +1235 -0
  199. package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
  200. package/deps/librdkafka/src/rdkafka_request.c +7298 -0
  201. package/deps/librdkafka/src/rdkafka_request.h +761 -0
  202. package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
  203. package/deps/librdkafka/src/rdkafka_sasl.c +589 -0
  204. package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
  205. package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
  206. package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
  207. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
  208. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
  209. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1827 -0
  210. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +52 -0
  211. package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
  212. package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
  213. package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
  214. package/deps/librdkafka/src/rdkafka_share_acknowledgement.c +1445 -0
  215. package/deps/librdkafka/src/rdkafka_share_acknowledgement.h +373 -0
  216. package/deps/librdkafka/src/rdkafka_ssl.c +2235 -0
  217. package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
  218. package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
  219. package/deps/librdkafka/src/rdkafka_subscription.c +411 -0
  220. package/deps/librdkafka/src/rdkafka_telemetry.c +761 -0
  221. package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
  222. package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1307 -0
  223. package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
  224. package/deps/librdkafka/src/rdkafka_telemetry_encode.c +1309 -0
  225. package/deps/librdkafka/src/rdkafka_telemetry_encode.h +459 -0
  226. package/deps/librdkafka/src/rdkafka_timer.c +407 -0
  227. package/deps/librdkafka/src/rdkafka_timer.h +117 -0
  228. package/deps/librdkafka/src/rdkafka_topic.c +2382 -0
  229. package/deps/librdkafka/src/rdkafka_topic.h +369 -0
  230. package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
  231. package/deps/librdkafka/src/rdkafka_transport.h +99 -0
  232. package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
  233. package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
  234. package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
  235. package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
  236. package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
  237. package/deps/librdkafka/src/rdlist.c +593 -0
  238. package/deps/librdkafka/src/rdlist.h +444 -0
  239. package/deps/librdkafka/src/rdlog.c +89 -0
  240. package/deps/librdkafka/src/rdlog.h +41 -0
  241. package/deps/librdkafka/src/rdmap.c +508 -0
  242. package/deps/librdkafka/src/rdmap.h +492 -0
  243. package/deps/librdkafka/src/rdmurmur2.c +167 -0
  244. package/deps/librdkafka/src/rdmurmur2.h +35 -0
  245. package/deps/librdkafka/src/rdports.c +61 -0
  246. package/deps/librdkafka/src/rdports.h +38 -0
  247. package/deps/librdkafka/src/rdposix.h +250 -0
  248. package/deps/librdkafka/src/rdrand.c +151 -0
  249. package/deps/librdkafka/src/rdrand.h +72 -0
  250. package/deps/librdkafka/src/rdregex.c +156 -0
  251. package/deps/librdkafka/src/rdregex.h +43 -0
  252. package/deps/librdkafka/src/rdsignal.h +57 -0
  253. package/deps/librdkafka/src/rdstring.c +645 -0
  254. package/deps/librdkafka/src/rdstring.h +98 -0
  255. package/deps/librdkafka/src/rdsysqueue.h +404 -0
  256. package/deps/librdkafka/src/rdtime.h +356 -0
  257. package/deps/librdkafka/src/rdtypes.h +86 -0
  258. package/deps/librdkafka/src/rdunittest.c +564 -0
  259. package/deps/librdkafka/src/rdunittest.h +232 -0
  260. package/deps/librdkafka/src/rdunittest_acknowledge.c +1177 -0
  261. package/deps/librdkafka/src/rdunittest_fetcher.c +1211 -0
  262. package/deps/librdkafka/src/rdunittest_msgset_errors.c +1521 -0
  263. package/deps/librdkafka/src/rdvarint.c +134 -0
  264. package/deps/librdkafka/src/rdvarint.h +165 -0
  265. package/deps/librdkafka/src/rdwin32.h +382 -0
  266. package/deps/librdkafka/src/rdxxhash.c +1030 -0
  267. package/deps/librdkafka/src/rdxxhash.h +328 -0
  268. package/deps/librdkafka/src/regexp.c +1352 -0
  269. package/deps/librdkafka/src/regexp.h +41 -0
  270. package/deps/librdkafka/src/snappy.c +1866 -0
  271. package/deps/librdkafka/src/snappy.h +62 -0
  272. package/deps/librdkafka/src/snappy_compat.h +138 -0
  273. package/deps/librdkafka/src/statistics_schema.json +444 -0
  274. package/deps/librdkafka/src/tinycthread.c +932 -0
  275. package/deps/librdkafka/src/tinycthread.h +503 -0
  276. package/deps/librdkafka/src/tinycthread_extra.c +210 -0
  277. package/deps/librdkafka/src/tinycthread_extra.h +218 -0
  278. package/deps/librdkafka/src/win32_config.h +58 -0
  279. package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
  280. package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
  281. package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
  282. package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
  283. package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
  284. package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
  285. package/deps/librdkafka/src-cpp/Makefile +55 -0
  286. package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
  287. package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
  288. package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
  289. package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
  290. package/deps/librdkafka/src-cpp/README.md +16 -0
  291. package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
  292. package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
  293. package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
  294. package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
  295. package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
  296. package/deps/librdkafka/tests/0000-unittests.c +72 -0
  297. package/deps/librdkafka/tests/0001-multiobj.c +102 -0
  298. package/deps/librdkafka/tests/0002-unkpart.c +244 -0
  299. package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
  300. package/deps/librdkafka/tests/0004-conf.c +934 -0
  301. package/deps/librdkafka/tests/0005-order.c +133 -0
  302. package/deps/librdkafka/tests/0006-symbols.c +163 -0
  303. package/deps/librdkafka/tests/0007-autotopic.c +136 -0
  304. package/deps/librdkafka/tests/0008-reqacks.c +179 -0
  305. package/deps/librdkafka/tests/0009-mock_cluster.c +272 -0
  306. package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
  307. package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
  308. package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
  309. package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
  310. package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
  311. package/deps/librdkafka/tests/0016-client_swname.c +181 -0
  312. package/deps/librdkafka/tests/0017-compression.c +140 -0
  313. package/deps/librdkafka/tests/0018-cgrp_term.c +444 -0
  314. package/deps/librdkafka/tests/0019-list_groups.c +289 -0
  315. package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
  316. package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
  317. package/deps/librdkafka/tests/0022-consume_batch.c +331 -0
  318. package/deps/librdkafka/tests/0025-timers.c +147 -0
  319. package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
  320. package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
  321. package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
  322. package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
  323. package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
  324. package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
  325. package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
  326. package/deps/librdkafka/tests/0035-api_version.c +73 -0
  327. package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
  328. package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
  329. package/deps/librdkafka/tests/0038-performance.c +121 -0
  330. package/deps/librdkafka/tests/0039-event.c +284 -0
  331. package/deps/librdkafka/tests/0040-io_event.c +257 -0
  332. package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
  333. package/deps/librdkafka/tests/0042-many_topics.c +252 -0
  334. package/deps/librdkafka/tests/0043-no_connection.c +77 -0
  335. package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
  336. package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
  337. package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
  338. package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
  339. package/deps/librdkafka/tests/0048-partitioner.c +283 -0
  340. package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
  341. package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
  342. package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
  343. package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
  344. package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
  345. package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
  346. package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
  347. package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
  348. package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
  349. package/deps/librdkafka/tests/0058-log.cpp +123 -0
  350. package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
  351. package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
  352. package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
  353. package/deps/librdkafka/tests/0062-stats_event.c +126 -0
  354. package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
  355. package/deps/librdkafka/tests/0064-interceptors.c +529 -0
  356. package/deps/librdkafka/tests/0065-yield.cpp +140 -0
  357. package/deps/librdkafka/tests/0066-plugins.cpp +143 -0
  358. package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
  359. package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
  360. package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
  361. package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
  362. package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
  363. package/deps/librdkafka/tests/0073-headers.c +381 -0
  364. package/deps/librdkafka/tests/0074-producev.c +87 -0
  365. package/deps/librdkafka/tests/0075-retry.c +290 -0
  366. package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
  367. package/deps/librdkafka/tests/0077-compaction.c +366 -0
  368. package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
  369. package/deps/librdkafka/tests/0079-fork.c +93 -0
  370. package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
  371. package/deps/librdkafka/tests/0081-admin.c +5633 -0
  372. package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
  373. package/deps/librdkafka/tests/0083-cb_event.c +233 -0
  374. package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
  375. package/deps/librdkafka/tests/0085-headers.cpp +392 -0
  376. package/deps/librdkafka/tests/0086-purge.c +368 -0
  377. package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
  378. package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
  379. package/deps/librdkafka/tests/0090-idempotence.c +171 -0
  380. package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
  381. package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
  382. package/deps/librdkafka/tests/0093-holb.c +200 -0
  383. package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
  384. package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
  385. package/deps/librdkafka/tests/0097-ssl_verify.cpp +674 -0
  386. package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
  387. package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
  388. package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
  389. package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
  390. package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
  391. package/deps/librdkafka/tests/0103-transactions.c +1383 -0
  392. package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
  393. package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
  394. package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
  395. package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
  396. package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
  397. package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
  398. package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
  399. package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
  400. package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
  401. package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
  402. package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
  403. package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
  404. package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
  405. package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
  406. package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
  407. package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
  408. package/deps/librdkafka/tests/0121-clusterid.c +115 -0
  409. package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
  410. package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
  411. package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
  412. package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
  413. package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +1164 -0
  414. package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
  415. package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +217 -0
  416. package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
  417. package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
  418. package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
  419. package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
  420. package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
  421. package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
  422. package/deps/librdkafka/tests/0135-sasl_credentials.cpp +279 -0
  423. package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
  424. package/deps/librdkafka/tests/0137-barrier_batch_consume.c +752 -0
  425. package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
  426. package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
  427. package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
  428. package/deps/librdkafka/tests/0142-reauthentication.c +931 -0
  429. package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
  430. package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
  431. package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
  432. package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
  433. package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +1210 -0
  434. package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +569 -0
  435. package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
  436. package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
  437. package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
  438. package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
  439. package/deps/librdkafka/tests/0153-memberid.c +128 -0
  440. package/deps/librdkafka/tests/0155-share_group_heartbeat_mock.c +2695 -0
  441. package/deps/librdkafka/tests/0156-share_consumer_fetch_mock.c +1551 -0
  442. package/deps/librdkafka/tests/0157-share_consumer_ack_mock.c +1788 -0
  443. package/deps/librdkafka/tests/0158-share_consumer_transactions_mock.c +467 -0
  444. package/deps/librdkafka/tests/0170-share_consumer_subscription.c +2192 -0
  445. package/deps/librdkafka/tests/0171-share_consumer_consume.c +2150 -0
  446. package/deps/librdkafka/tests/0172-share_consumer_acknowledge.c +1919 -0
  447. package/deps/librdkafka/tests/0173-share_consumer_commit_async.c +2735 -0
  448. package/deps/librdkafka/tests/0174-share_consumer_concurrency.c +1434 -0
  449. package/deps/librdkafka/tests/0175-share_consumer_groups.c +574 -0
  450. package/deps/librdkafka/tests/0176-share_consumer_commit_sync.c +2986 -0
  451. package/deps/librdkafka/tests/0177-share_consumer_transactions.c +1815 -0
  452. package/deps/librdkafka/tests/0178-share_consumer_close.c +2102 -0
  453. package/deps/librdkafka/tests/0179-share_consumer_destroy.c +2482 -0
  454. package/deps/librdkafka/tests/0180-share_consumer_config.c +1677 -0
  455. package/deps/librdkafka/tests/0181-share_consumer_topic_delete.c +354 -0
  456. package/deps/librdkafka/tests/0182-share_consumer_error_handling_mock.c +3358 -0
  457. package/deps/librdkafka/tests/0183-share_consumer_leader_change_mock.c +1234 -0
  458. package/deps/librdkafka/tests/0184-share_consumer_topic_recreate.c +1356 -0
  459. package/deps/librdkafka/tests/0185-share_consumer_max_poll_interval.c +557 -0
  460. package/deps/librdkafka/tests/0186-share_consumer_fatal_error.c +360 -0
  461. package/deps/librdkafka/tests/0190-share_consumer_telemetry.c +387 -0
  462. package/deps/librdkafka/tests/1000-unktopic.c +164 -0
  463. package/deps/librdkafka/tests/8000-idle.cpp +60 -0
  464. package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
  465. package/deps/librdkafka/tests/CMakeLists.txt +193 -0
  466. package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
  467. package/deps/librdkafka/tests/Makefile +182 -0
  468. package/deps/librdkafka/tests/README.md +514 -0
  469. package/deps/librdkafka/tests/autotest.sh +33 -0
  470. package/deps/librdkafka/tests/backtrace.gdb +30 -0
  471. package/deps/librdkafka/tests/broker_version_tests.py +315 -0
  472. package/deps/librdkafka/tests/buildbox.sh +17 -0
  473. package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
  474. package/deps/librdkafka/tests/cluster_testing.py +203 -0
  475. package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
  476. package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
  477. package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
  478. package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
  479. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
  480. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
  481. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
  482. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
  483. package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
  484. package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
  485. package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
  486. package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
  487. package/deps/librdkafka/tests/fuzzers/README.md +31 -0
  488. package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
  489. package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
  490. package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
  491. package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
  492. package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
  493. package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
  494. package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
  495. package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
  496. package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
  497. package/deps/librdkafka/tests/java/Makefile +13 -0
  498. package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
  499. package/deps/librdkafka/tests/java/README.md +14 -0
  500. package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
  501. package/deps/librdkafka/tests/java/run-class.sh +11 -0
  502. package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
  503. package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
  504. package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
  505. package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
  506. package/deps/librdkafka/tests/performance_plot.py +115 -0
  507. package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
  508. package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
  509. package/deps/librdkafka/tests/requirements.txt +2 -0
  510. package/deps/librdkafka/tests/run-all-tests.sh +81 -0
  511. package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
  512. package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
  513. package/deps/librdkafka/tests/run-test-batches.py +157 -0
  514. package/deps/librdkafka/tests/run-test.sh +141 -0
  515. package/deps/librdkafka/tests/rusage.c +249 -0
  516. package/deps/librdkafka/tests/sasl_test.py +289 -0
  517. package/deps/librdkafka/tests/scenarios/README.md +6 -0
  518. package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
  519. package/deps/librdkafka/tests/scenarios/default.json +5 -0
  520. package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
  521. package/deps/librdkafka/tests/share_telemetry_verify/share-otel-collector-config.yaml +28 -0
  522. package/deps/librdkafka/tests/sockem.c +801 -0
  523. package/deps/librdkafka/tests/sockem.h +85 -0
  524. package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
  525. package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
  526. package/deps/librdkafka/tests/test.c +8376 -0
  527. package/deps/librdkafka/tests/test.conf.example +27 -0
  528. package/deps/librdkafka/tests/test.h +1150 -0
  529. package/deps/librdkafka/tests/testcpp.cpp +131 -0
  530. package/deps/librdkafka/tests/testcpp.h +388 -0
  531. package/deps/librdkafka/tests/testshared.h +416 -0
  532. package/deps/librdkafka/tests/tools/README.md +4 -0
  533. package/deps/librdkafka/tests/tools/stats/README.md +21 -0
  534. package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
  535. package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
  536. package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
  537. package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
  538. package/deps/librdkafka/tests/trivup/trivup-0.15.0.tar.gz +0 -0
  539. package/deps/librdkafka/tests/until-fail.sh +87 -0
  540. package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
  541. package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
  542. package/deps/librdkafka/vcpkg.json +23 -0
  543. package/deps/librdkafka/win32/README.md +5 -0
  544. package/deps/librdkafka/win32/build-package.bat +3 -0
  545. package/deps/librdkafka/win32/build.bat +19 -0
  546. package/deps/librdkafka/win32/common.vcxproj +84 -0
  547. package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
  548. package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
  549. package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
  550. package/deps/librdkafka/win32/librdkafka.sln +226 -0
  551. package/deps/librdkafka/win32/librdkafka.vcxproj +282 -0
  552. package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
  553. package/deps/librdkafka/win32/msbuild.ps1 +58 -0
  554. package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
  555. package/deps/librdkafka/win32/package-zip.ps1 +46 -0
  556. package/deps/librdkafka/win32/packages/repositories.config +4 -0
  557. package/deps/librdkafka/win32/push-package.bat +4 -0
  558. package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
  559. package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
  560. package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
  561. package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
  562. package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
  563. package/deps/librdkafka/win32/tests/test.conf.example +25 -0
  564. package/deps/librdkafka/win32/tests/tests.vcxproj +278 -0
  565. package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
  566. package/deps/librdkafka/win32/wingetopt.c +564 -0
  567. package/deps/librdkafka/win32/wingetopt.h +101 -0
  568. package/deps/librdkafka/win32/wintime.h +33 -0
  569. package/deps/librdkafka.gyp +83 -0
  570. package/deps/windows-install.py +80 -0
  571. package/index.d.ts +3 -0
  572. package/lib/admin.js +732 -0
  573. package/lib/client.js +679 -0
  574. package/lib/error.js +501 -0
  575. package/lib/index.js +8 -0
  576. package/lib/kafka-consumer-stream.js +399 -0
  577. package/lib/kafka-consumer.js +798 -0
  578. package/lib/kafkajs/_admin.js +1052 -0
  579. package/lib/kafkajs/_common.js +887 -0
  580. package/lib/kafkajs/_consumer.js +2156 -0
  581. package/lib/kafkajs/_consumer_cache.js +310 -0
  582. package/lib/kafkajs/_error.js +298 -0
  583. package/lib/kafkajs/_kafka.js +125 -0
  584. package/lib/kafkajs/_linked-list.js +220 -0
  585. package/lib/kafkajs/_producer.js +863 -0
  586. package/lib/kafkajs/index.js +5 -0
  587. package/lib/producer/high-level-producer.js +400 -0
  588. package/lib/producer-stream.js +337 -0
  589. package/lib/producer.js +405 -0
  590. package/lib/rdkafka.js +44 -0
  591. package/lib/tools/ref-counter.js +53 -0
  592. package/lib/topic-partition.js +91 -0
  593. package/lib/topic.js +43 -0
  594. package/lib/util.js +55 -0
  595. package/librdkafka.js +12 -0
  596. package/package.json +85 -0
  597. package/shim/source_location +54 -0
  598. package/src/admin.cc +1597 -0
  599. package/src/admin.h +112 -0
  600. package/src/binding.cc +76 -0
  601. package/src/binding.h +25 -0
  602. package/src/callbacks.cc +676 -0
  603. package/src/callbacks.h +302 -0
  604. package/src/common.cc +1628 -0
  605. package/src/common.h +192 -0
  606. package/src/config.cc +219 -0
  607. package/src/config.h +61 -0
  608. package/src/connection.cc +703 -0
  609. package/src/connection.h +117 -0
  610. package/src/errors.cc +119 -0
  611. package/src/errors.h +60 -0
  612. package/src/kafka-consumer.cc +1539 -0
  613. package/src/kafka-consumer.h +147 -0
  614. package/src/producer.cc +917 -0
  615. package/src/producer.h +124 -0
  616. package/src/topic.cc +173 -0
  617. package/src/topic.h +54 -0
  618. package/src/workers.cc +1714 -0
  619. package/src/workers.h +690 -0
  620. package/types/config.d.ts +1269 -0
  621. package/types/errors.d.ts +373 -0
  622. package/types/kafkajs.d.ts +568 -0
  623. package/types/rdkafka.d.ts +571 -0
  624. package/util/configure.js +32 -0
  625. package/util/generate-docs.sh +18 -0
  626. package/util/get-env.js +6 -0
  627. package/util/test-compile.js +11 -0
  628. package/util/test-producer-delivery.js +100 -0
package/lib/client.js ADDED
@@ -0,0 +1,679 @@
1
+ /*
2
+ * confluent-kafka-javascript - Node.js wrapper for RdKafka C/C++ library
3
+ *
4
+ * Copyright (c) 2016-2023 Blizzard Entertainment
5
+ * (c) 2023 Confluent, Inc.
6
+ *
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE.txt file for details.
9
+ */
10
+
11
+ module.exports = Client;
12
+
13
+ var Emitter = require('events').EventEmitter;
14
+ var util = require('util');
15
+ var Kafka = require('../librdkafka.js');
16
+
17
+ const { bindingVersion, dictToStringList } = require('./util');
18
+
19
+ var LibrdKafkaError = require('./error');
20
+
21
+ util.inherits(Client, Emitter);
22
+
23
+ /**
24
+ * Base class for Consumer and Producer.
25
+ *
26
+ * This should not be created independently, but rather is
27
+ * the base class on which both producer and consumer
28
+ * get their common functionality.
29
+ *
30
+ * @param {object} globalConf - Global configuration in key value pairs.
31
+ * @param {function} SubClientType - The function representing the subclient
32
+ * type. In C++ land this needs to be a class that inherits from Connection.
33
+ * @param {object} topicConf - Topic configuration in key value pairs
34
+ * @param {object?} existingClient - a producer or a consumer to derive this client from.
35
+ * Only used by the AdminClient. Must be connected.
36
+ * @constructor
37
+ * @extends Emitter
38
+ * @memberof RdKafka
39
+ * @package
40
+ */
41
+ function Client(globalConf, SubClientType, topicConf, existingClient) {
42
+ if (!(this instanceof Client)) {
43
+ return new Client(globalConf, SubClientType, topicConf, existingClient);
44
+ }
45
+
46
+ // Throw an error early - this allows us to set confs to {} and avoid all
47
+ // the null-checking in case of existingClient being set.
48
+ if (!existingClient && !globalConf) {
49
+ throw new Error('Global configuration data must be specified');
50
+ }
51
+
52
+ if (existingClient && globalConf) {
53
+ throw new Error('Global configuration data must not be specified when creating a client from an existing client');
54
+ }
55
+
56
+ if (existingClient && topicConf) {
57
+ throw new Error('Topic configuration data must not be specified when creating a client from an existing client');
58
+ }
59
+
60
+ if (existingClient && !(existingClient._client instanceof Kafka.Producer) && !(existingClient._client instanceof Kafka.KafkaConsumer)) {
61
+ throw new Error('Existing client must be a Producer or Consumer instance');
62
+ }
63
+
64
+ if (existingClient && !existingClient._isConnected) {
65
+ throw new Error('Existing client must be connected before creating a new client from it');
66
+ }
67
+
68
+ let existingInternalClient;
69
+ if (existingClient) {
70
+ globalConf = {};
71
+ topicConf = {};
72
+ existingInternalClient = existingClient.getClient();
73
+ }
74
+
75
+ Emitter.call(this);
76
+
77
+ // This superclass must be initialized with the Kafka.{Producer,Consumer}
78
+ // @example var client = new Client({}, Kafka.Producer);
79
+ // remember this is a superclass so this will get taken care of in
80
+ // the producer and consumer main wrappers
81
+
82
+ var no_event_cb = globalConf.event_cb === false;
83
+
84
+ // delete this because librdkafka will complain since this particular
85
+ // key is a real conf value
86
+ delete globalConf.event_cb;
87
+
88
+ // These properties are not meant to be user-set.
89
+ // Clients derived from this might want to change them, but for
90
+ // now we override them.
91
+ globalConf['client.software.name'] = 'confluent-kafka-javascript';
92
+ globalConf['client.software.version'] = `${bindingVersion}-librdkafka-${Kafka.librdkafkaVersion}`;
93
+
94
+ this._client = new SubClientType(globalConf, topicConf, existingInternalClient);
95
+
96
+ // We should not modify the globalConf object. We have cloned it already.
97
+ delete globalConf['client.software.name'];
98
+ delete globalConf['client.software.version'];
99
+
100
+ var extractFunctions = function(obj) {
101
+ obj = obj || {};
102
+ var obj2 = {};
103
+ for (var p in obj) {
104
+ if (typeof obj[p] === "function") {
105
+ obj2[p] = obj[p];
106
+ }
107
+ }
108
+ return obj2;
109
+ };
110
+ this._cb_configs = {
111
+ global: extractFunctions(globalConf),
112
+ topic: extractFunctions(topicConf),
113
+ event: {},
114
+ };
115
+
116
+ if (!existingClient && !no_event_cb) {
117
+ this._cb_configs.event.event_cb = function(eventType, eventData) {
118
+ switch (eventType) {
119
+ case 'error':
120
+ this.emit('event.error', LibrdKafkaError.create(eventData));
121
+ break;
122
+ case 'stats':
123
+ this.emit('event.stats', eventData);
124
+ break;
125
+ case 'log':
126
+ this.emit('event.log', eventData);
127
+ break;
128
+ default:
129
+ this.emit('event.event', eventData);
130
+ this.emit('event.' + eventType, eventData);
131
+ }
132
+ }.bind(this);
133
+ }
134
+
135
+ if (Object.hasOwn(this._cb_configs.global, 'oauthbearer_token_refresh_cb')) {
136
+ const savedCallback = this._cb_configs.global.oauthbearer_token_refresh_cb;
137
+ this._cb_configs.global.oauthbearer_token_refresh_cb = (oauthbearer_config) => {
138
+ if (this._isDisconnecting) {
139
+ // Don't call the callback if we're in the middle of disconnecting.
140
+ // This is especially important when the credentials are wrong, and
141
+ // we might want to disconnect without ever completing connection.
142
+ return;
143
+ }
144
+
145
+ // This sets the token or error within librdkafka, and emits any
146
+ // errors on the emitter.
147
+ const postProcessTokenRefresh = (err, token) => {
148
+ try {
149
+ if (err) {
150
+ throw err;
151
+ }
152
+ let { tokenValue, lifetime, principal, extensions } = token;
153
+
154
+ // If the principal isn't there, set an empty principal.
155
+ if (!principal) {
156
+ principal = '';
157
+ }
158
+
159
+ // Convert extensions from a Map/object to a list that librdkafka expects.
160
+ extensions = dictToStringList(extensions);
161
+
162
+ this._client.setOAuthBearerToken(tokenValue, lifetime, principal, extensions);
163
+ } catch (e) {
164
+ e.message = "oauthbearer_token_refresh_cb: " + e.message;
165
+ this._client.setOAuthBearerTokenFailure(e.message);
166
+ this.emit('error', e);
167
+ }
168
+ };
169
+ const returnPromise = savedCallback(oauthbearer_config, postProcessTokenRefresh);
170
+
171
+ // If it looks like a promise, and quacks like a promise, it is a promise
172
+ // (or an async function). We expect the callback NOT to have been called
173
+ // in such a case.
174
+ if (returnPromise && (typeof returnPromise.then === 'function')) {
175
+ returnPromise.then((token) => {
176
+ postProcessTokenRefresh(null, token);
177
+ }).catch(err => {
178
+ postProcessTokenRefresh(err);
179
+ });
180
+ }
181
+ };
182
+ }
183
+
184
+ this.metrics = {};
185
+ this._isConnected = false;
186
+ this.errorCounter = 0;
187
+
188
+ /**
189
+ * Metadata object. Starts out empty but will be filled with information after
190
+ * the initial connect.
191
+ *
192
+ * @type {RdKafka.Client~Metadata}
193
+ * @private
194
+ */
195
+ this._metadata = {};
196
+
197
+ var self = this;
198
+
199
+ this.on('ready', function(info) {
200
+ self.metrics.connectionOpened = Date.now();
201
+ self.name = info.name;
202
+ })
203
+ .on('disconnected', function() {
204
+ // reset metrics
205
+ self.metrics = {};
206
+ self._isConnected = false;
207
+ // keep the metadata. it still may be useful
208
+ })
209
+ .on('event.error', function(err) {
210
+ self.lastError = err;
211
+ ++self.errorCounter;
212
+ });
213
+
214
+ }
215
+
216
+ /**
217
+ * Connect to the broker and receive its metadata.
218
+ *
219
+ * Connects to a broker by establishing the client and fetches its metadata.
220
+ *
221
+ * @param {object?} metadataOptions - Options to be sent to the metadata.
222
+ * @param {string} metadataOptions.topic - Topic to fetch metadata for. Empty string is treated as empty.
223
+ * @param {boolean} metadataOptions.allTopics - Fetch metadata for all topics, not just the ones we know about.
224
+ * @param {int} metadataOptions.timeout - The timeout, in ms, to allow for fetching metadata. Defaults to 30000ms
225
+ * @param {RdKafka.Client~connectionCallback?} cb - Callback that indicates we are
226
+ * done connecting.
227
+ * @fires RdKafka.Client#ready
228
+ * @return {RdKafka.Client} - Returns itself.
229
+ */
230
+ Client.prototype.connect = function(metadataOptions, cb) {
231
+ if (this._hasUnderlyingClient) {
232
+ // This is a derived client. We don't want to connect it, it's already connected.
233
+ // No one should be reaching this method in the first place if they use the
234
+ // API correctly, but it is possible to do so accidentally.
235
+ throw new Error('Cannot connect an existing client');
236
+ }
237
+
238
+ var self = this;
239
+
240
+ var next = function(err, data) {
241
+ self._isConnecting = false;
242
+ if (cb) {
243
+ cb(err, data);
244
+ }
245
+ };
246
+
247
+ if (this._isConnected) {
248
+ setImmediate(next);
249
+ return self;
250
+ }
251
+
252
+ if (this._isConnecting) {
253
+ this.once('ready', function() {
254
+ next(null, this._metadata);
255
+ });
256
+ return self;
257
+ }
258
+
259
+ this._isConnecting = true;
260
+
261
+ var fail = function(err) {
262
+ var callbackCalled = false;
263
+ var t;
264
+
265
+ if (self._isConnected) {
266
+ self._isConnected = false;
267
+ self._client.disconnect(function() {
268
+ if (callbackCalled) {
269
+ return;
270
+ }
271
+ clearTimeout(t);
272
+ callbackCalled = true;
273
+
274
+ next(err); return;
275
+ });
276
+
277
+ // don't take too long. this is a failure, after all
278
+ t = setTimeout(function() {
279
+ if (callbackCalled) {
280
+ return;
281
+ }
282
+ callbackCalled = true;
283
+
284
+ next(err); return;
285
+ }, 10000).unref();
286
+
287
+ self.emit('connection.failure', err, self.metrics);
288
+ } else {
289
+
290
+ next(err);
291
+ }
292
+ };
293
+
294
+ this._client.configureCallbacks(true, this._cb_configs);
295
+
296
+ this._client.connect(function(err, info) {
297
+ if (err) {
298
+ fail(LibrdKafkaError.create(err)); return;
299
+ }
300
+
301
+ self._isConnected = true;
302
+
303
+ // Otherwise we are successful
304
+ self.getMetadata(metadataOptions || {}, function(err, metadata) {
305
+ if (err) {
306
+ // We are connected so we need to disconnect
307
+ fail(LibrdKafkaError.create(err)); return;
308
+ }
309
+
310
+ self._isConnecting = false;
311
+ // We got the metadata otherwise. It is set according to above param
312
+ // Set it here as well so subsequent ready callbacks
313
+ // can check it
314
+ self._isConnected = true;
315
+
316
+ /**
317
+ * Ready event. Called when the Client connects successfully
318
+ *
319
+ * @event RdKafka.Client#ready
320
+ * @type {object}
321
+ * @property {string} name - the name of the client.
322
+ */
323
+ self.emit('ready', info, metadata);
324
+ next(null, metadata); return;
325
+
326
+ });
327
+
328
+ });
329
+
330
+ return self;
331
+
332
+ };
333
+
334
+ /**
335
+ * Get the native Kafka client.
336
+ *
337
+ * You probably shouldn't use this, but if you want to execute methods directly
338
+ * on the C++ wrapper you can do it here.
339
+ *
340
+ * @see connection.cc
341
+ * @return {Connection} - The native Kafka client.
342
+ */
343
+ Client.prototype.getClient = function() {
344
+ return this._client;
345
+ };
346
+
347
+ /**
348
+ * Find out how long we have been connected to Kafka.
349
+ *
350
+ * @return {number} - Milliseconds since the connection has been established.
351
+ */
352
+ Client.prototype.connectedTime = function() {
353
+ if (!this.isConnected()) {
354
+ return 0;
355
+ }
356
+ return Date.now() - this.metrics.connectionOpened;
357
+ };
358
+
359
+ /**
360
+ * Whether or not we are connected to Kafka.
361
+ *
362
+ * @return {boolean} - Whether we are connected.
363
+ */
364
+ Client.prototype.isConnected = function() {
365
+ return !!(this._isConnected && this._client);
366
+ };
367
+
368
+ /**
369
+ * Get the last error emitted if it exists.
370
+ *
371
+ * @return {LibrdKafkaError?} - Returns the LibrdKafkaError or null if
372
+ * one hasn't been thrown.
373
+ */
374
+ Client.prototype.getLastError = function() {
375
+ return this.lastError || null;
376
+ };
377
+
378
+ /**
379
+ * Disconnect from the Kafka client.
380
+ *
381
+ * This method will disconnect us from Kafka unless we are already in a
382
+ * disconnecting state. Use this when you're done reading or producing messages
383
+ * on a given client.
384
+ *
385
+ * It will also emit the disconnected event.
386
+ *
387
+ * @fires RdKafka.Client#disconnected
388
+ * @param {function} cb - Callback to call when disconnection is complete.
389
+ */
390
+ Client.prototype.disconnect = function(cb) {
391
+ if (this._hasUnderlyingClient) {
392
+ // This is a derived client.
393
+ // We don't want to disconnect it as it's controlled by the underlying client.
394
+ // No one should be reaching this method in the first place if they use the
395
+ // API correctly, but it is possible to do so accidentally.
396
+ throw new Error('Cannot disconnect an existing client');
397
+ }
398
+
399
+ var self = this;
400
+
401
+ if (!this._isDisconnecting && this._client) {
402
+ this._isDisconnecting = true;
403
+ this._client.disconnect(function() {
404
+ // this take 5000 milliseconds. Librdkafka needs to make sure the memory
405
+ // has been cleaned up before we delete things. @see RdKafka::wait_destroyed
406
+ self._client.configureCallbacks(false, self._cb_configs);
407
+
408
+ // Broadcast metrics. Gives people one last chance to do something with them
409
+ self._isDisconnecting = false;
410
+ var metricsCopy = Object.assign({}, self.metrics);
411
+ /**
412
+ * Disconnect event. Called after disconnection is finished.
413
+ *
414
+ * @event RdKafka.Client#disconnected
415
+ * @type {object}
416
+ * @property {date} connectionOpened - when the connection was opened.
417
+ * @memberof RdKafka
418
+ */
419
+ self.emit('disconnected', metricsCopy);
420
+ if (cb) {
421
+ cb(null, metricsCopy);
422
+ }
423
+
424
+ });
425
+
426
+ }
427
+
428
+ return self;
429
+ };
430
+
431
+ /**
432
+ * Get client metadata.
433
+ *
434
+ * Use {@link RdKafka.AdminClient#describeTopics} instead for fetching metadata for specific
435
+ * topics.
436
+ *
437
+ * Note: using a `metadataOptions.topic` parameter has a potential side-effect.
438
+ * A Topic object will be created, if it did not exist yet, with default options
439
+ * and it will be cached by librdkafka.
440
+ *
441
+ * A subsequent call to create the topic object with specific options (e.g. `acks`) will return
442
+ * the previous instance and the specific options will be silently ignored.
443
+ *
444
+ * To avoid this side effect, the topic object can be created with the expected options before requesting metadata,
445
+ * or the metadata request can be performed for all topics (by omitting `metadataOptions.topic`).
446
+ *
447
+ * @param {object} metadataOptions - Metadata options to pass to the client.
448
+ * @param {string} metadataOptions.topic - Topic string for which to fetch
449
+ * metadata
450
+ * @param {number} metadataOptions.timeout - Max time, in ms, to try to fetch
451
+ * metadata before timing out. Defaults to 3000.
452
+ * @param {function} cb - Callback to fire with the metadata.
453
+ */
454
+ Client.prototype.getMetadata = function(metadataOptions, cb) {
455
+ if (!this.isConnected()) {
456
+ return cb(new Error('Client is disconnected'));
457
+ }
458
+
459
+ var self = this;
460
+
461
+ this._client.getMetadata(metadataOptions || {}, function(err, metadata) {
462
+ if (err) {
463
+ if (cb) {
464
+ cb(LibrdKafkaError.create(err));
465
+ }
466
+ return;
467
+ }
468
+
469
+ // No error otherwise
470
+ self._metadata = metadata;
471
+
472
+ if (cb) {
473
+ cb(null, metadata);
474
+ }
475
+
476
+ });
477
+
478
+ };
479
+
480
+ /**
481
+ * Query offsets from the broker.
482
+ *
483
+ * This function makes a call to the broker to get the current low (oldest/beginning)
484
+ * and high (newest/end) offsets for a topic partition.
485
+ *
486
+ * @param {string} topic - Topic to recieve offsets from.
487
+ * @param {number} partition - Partition of the provided topic to recieve offsets from
488
+ * @param {number} timeout - Number of ms to wait to recieve a response.
489
+ * @param {RdKafka.ClientClient~watermarkOffsetsCallback} cb - Callback to fire with the offsets.
490
+ */
491
+ Client.prototype.queryWatermarkOffsets = function(topic, partition, timeout, cb) {
492
+ if (!this.isConnected()) {
493
+ if (cb) {
494
+ return cb(new Error('Client is disconnected'));
495
+ } else {
496
+ return;
497
+ }
498
+ }
499
+
500
+ if (typeof timeout === 'function') {
501
+ cb = timeout;
502
+ timeout = 1000;
503
+ }
504
+
505
+ if (!timeout) {
506
+ timeout = 1000;
507
+ }
508
+
509
+ this._client.queryWatermarkOffsets(topic, partition, timeout, function(err, offsets) {
510
+ if (err) {
511
+ if (cb) {
512
+ cb(LibrdKafkaError.create(err));
513
+ }
514
+ return;
515
+ }
516
+
517
+ if (cb) {
518
+ cb(null, offsets);
519
+ }
520
+
521
+ });
522
+ };
523
+
524
+ /**
525
+ * Query offsets for times from the broker.
526
+ *
527
+ * This function makes a call to the broker to get the offsets for times specified.
528
+ *
529
+ * @param {TopicPartition[]} toppars - Array of topic partitions. The offset in these
530
+ * should instead refer to a timestamp you want
531
+ * offsets for
532
+ * @param {number} timeout - Number of ms to wait to recieve a response.
533
+ * @param {RdKafka.Client~offsetsForTimesCallback} cb - Callback to fire with the filled in offsets.
534
+ */
535
+ Client.prototype.offsetsForTimes = function(toppars, timeout, cb) {
536
+ if (!this.isConnected()) {
537
+ if (cb) {
538
+ return cb(new Error('Client is disconnected'));
539
+ } else {
540
+ return;
541
+ }
542
+ }
543
+
544
+ if (typeof timeout === 'function') {
545
+ cb = timeout;
546
+ timeout = 1000;
547
+ }
548
+
549
+ if (!timeout) {
550
+ timeout = 1000;
551
+ }
552
+
553
+ this._client.offsetsForTimes(toppars, timeout, function(err, toppars) {
554
+ if (err) {
555
+ if (cb) {
556
+ cb(LibrdKafkaError.create(err));
557
+ }
558
+ return;
559
+ }
560
+
561
+ if (cb) {
562
+ cb(null, toppars);
563
+ }
564
+
565
+ });
566
+ };
567
+
568
+ /**
569
+ * Change SASL credentials to be sent on the next authentication attempt.
570
+ *
571
+ * Only applicable if SASL authentication is being used.
572
+ * @param {string} username
573
+ * @param {string} password
574
+ */
575
+ Client.prototype.setSaslCredentials = function(username, password) {
576
+ if (!this.isConnected()) {
577
+ return;
578
+ }
579
+
580
+ this._client.setSaslCredentials(username, password);
581
+ };
582
+
583
+ /**
584
+ * Wrap a potential RdKafka error.
585
+ *
586
+ * This internal method is meant to take a return value
587
+ * from a function that returns an RdKafka error code, throw if it
588
+ * is an error (Making it a proper librdkafka error object), or
589
+ * return the appropriate value otherwise.
590
+ *
591
+ * It is intended to be used in a return statement,
592
+ *
593
+ * @private
594
+ * @param {number} errorCode - Error code returned from a native method
595
+ * @param {bool} intIsError - If specified true, any non-number return type will be classified as a success
596
+ * @return {boolean} - Returns true or the method return value unless it throws.
597
+ */
598
+ Client.prototype._errorWrap = function(errorCode, intIsError) {
599
+ var returnValue = true;
600
+ if (intIsError) {
601
+ returnValue = errorCode;
602
+ errorCode = typeof errorCode === 'number' ? errorCode : 0;
603
+ }
604
+
605
+ if (errorCode !== LibrdKafkaError.codes.ERR_NO_ERROR) {
606
+ var e = LibrdKafkaError.create(errorCode);
607
+ throw e;
608
+ }
609
+
610
+ return returnValue;
611
+ };
612
+
613
+ /**
614
+ * This callback is used to pass metadata or an error after a successful
615
+ * connection
616
+ *
617
+ * @callback RdKafka.Client~connectionCallback
618
+ * @param {Error} err - An error, if one occurred while connecting.
619
+ * @param {RdKafka.Client~Metadata} metadata - Metadata object.
620
+ */
621
+
622
+ /**
623
+ * This callback is used to pass offsets or an error after a successful
624
+ * query
625
+ *
626
+ * @callback RdKafka.Client~watermarkOffsetsCallback
627
+ * @param {Error} err - An error, if one occurred while connecting.
628
+ * @param {RdKafka.Client~watermarkOffsets} offsets - Watermark offsets
629
+ */
630
+
631
+ /**
632
+ * This callback is used to pass toppars or an error after a successful
633
+ * times query
634
+ *
635
+ * @callback RdKafka.Client~offsetsForTimesCallback
636
+ * @param {Error} err - An error, if one occurred while connecting.
637
+ * @param {TopicPartition[]} toppars - Topic partitions with offsets filled in
638
+ */
639
+
640
+ /**
641
+ * @typedef {object} RdKafka.Client~watermarkOffsets
642
+ * @property {number} high - High (newest/end) offset
643
+ * @property {number} low - Low (oldest/beginning) offset
644
+ */
645
+
646
+ /**
647
+ * @typedef {object} RdKafka.Client~MetadataBroker
648
+ * @property {number} id - Broker ID
649
+ * @property {string} host - Broker host
650
+ * @property {number} port - Broker port.
651
+ */
652
+
653
+ /**
654
+ * @typedef {object} RdKafka.Client~MetadataTopic
655
+ * @property {string} name - Topic name
656
+ * @property {RdKafka.Client~MetadataPartition[]} partitions - Array of partitions
657
+ */
658
+
659
+ /**
660
+ * @typedef {object} RdKafka.Client~MetadataPartition
661
+ * @property {number} id - Partition id
662
+ * @property {number} leader - Broker ID for the partition leader
663
+ * @property {number[]} replicas - Array of replica IDs
664
+ * @property {number[]} isrs - Array of ISRS ids
665
+ */
666
+
667
+ /**
668
+ * Metadata object.
669
+ *
670
+ * This is the representation of Kafka metadata in JavaScript.
671
+ *
672
+ * @typedef {object} RdKafka.Client~Metadata
673
+ * @property {number} orig_broker_id - The broker ID of the original bootstrap
674
+ * broker.
675
+ * @property {string} orig_broker_name - The name of the original bootstrap
676
+ * broker.
677
+ * @property {RdKafka.Client~MetadataBroker[]} brokers - An array of broker objects
678
+ * @property {RdKafka.Client~MetadataTopic[]} topics - An array of topics.
679
+ */