mq-bridge-basic 1.0.0__tar.gz → 1.0.2__tar.gz

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 (426) hide show
  1. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/app.yml +70 -4
  2. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/ci.yml +3 -3
  3. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/examples.yml +12 -1
  4. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/ibm-mq.yml +24 -21
  5. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/CHANGELOG.md +109 -0
  6. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/Cargo.lock +52 -45
  7. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/Cargo.toml +7 -6
  8. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/PKG-INFO +1 -1
  9. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/README.md +6 -1
  10. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/PLUGINS.md +6 -1
  11. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/REFERENCE.md +85 -34
  12. mq_bridge_basic-1.0.2/examples/llm-ticket-triage/README.md +50 -0
  13. mq_bridge_basic-1.0.2/examples/llm-ticket-triage/docker-compose.yml +33 -0
  14. mq_bridge_basic-1.0.2/examples/llm-ticket-triage/routes.yaml +33 -0
  15. mq_bridge_basic-1.0.2/examples/llm-ticket-triage/test.sh +44 -0
  16. mq_bridge_basic-1.0.2/examples/llm-ticket-triage/tickets.jsonl +6 -0
  17. mq_bridge_basic-1.0.2/examples/mongodb-to-meilisearch/README.md +45 -0
  18. mq_bridge_basic-1.0.2/examples/mongodb-to-meilisearch/docker-compose.yml +38 -0
  19. mq_bridge_basic-1.0.2/examples/mongodb-to-meilisearch/init.js +17 -0
  20. mq_bridge_basic-1.0.2/examples/mongodb-to-meilisearch/routes.yaml +24 -0
  21. mq_bridge_basic-1.0.2/examples/mongodb-to-meilisearch/search.sh +6 -0
  22. mq_bridge_basic-1.0.2/examples/mongodb-to-meilisearch/test.sh +40 -0
  23. mq_bridge_basic-1.0.2/examples/order-features/README.md +44 -0
  24. mq_bridge_basic-1.0.2/examples/order-features/docker-compose.yml +21 -0
  25. mq_bridge_basic-1.0.2/examples/order-features/init.sql +18 -0
  26. mq_bridge_basic-1.0.2/examples/order-features/routes.yaml +34 -0
  27. mq_bridge_basic-1.0.2/examples/order-features/test.sh +48 -0
  28. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/llms.txt +12 -0
  29. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq-bridge.schema.json +135 -9
  30. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq_bridge/config.py +2 -0
  31. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq_bridge/config.pyi +16 -3
  32. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/scripts/gen_config_types.py +3 -3
  33. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/analysis/http/mq_bridge_http_profile.rs +199 -0
  34. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http/mod.rs +1 -0
  35. mq_bridge_basic-1.0.2/src/endpoints/http/pool.rs +242 -0
  36. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http/publisher.rs +22 -98
  37. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http/tests.rs +82 -0
  38. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http_bulk/auth.rs +56 -0
  39. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http_bulk/consumer.rs +249 -29
  40. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http_bulk/mod.rs +2 -2
  41. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http_bulk/presets.rs +37 -0
  42. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http_bulk/publisher.rs +274 -54
  43. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/kafka.rs +659 -47
  44. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/nats.rs +63 -7
  45. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/mod.rs +3 -1
  46. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/sqlx/mod.rs +98 -4
  47. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/aggregate/mod.rs +143 -47
  48. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/aggregate/tests.rs +105 -2
  49. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/filter.rs +15 -0
  50. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/lookup.rs +134 -59
  51. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/mod.rs +1 -1
  52. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/mod.rs +16 -0
  53. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/models/serde_support.rs +67 -0
  54. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/models/tests.rs +51 -0
  55. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/models.rs +36 -2
  56. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/endpoint.rs +46 -0
  57. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/middleware.rs +107 -0
  58. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/test_support.rs +21 -3
  59. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/config_schema.rs +48 -7
  60. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/amqp.rs +0 -27
  61. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/aws.rs +2 -32
  62. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/ibm_mq.rs +10 -4
  63. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/kafka.rs +2 -30
  64. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mariadb.rs +2 -20
  65. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/memory.rs +0 -9
  66. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mongodb.rs +0 -27
  67. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mqtt.rs +2 -30
  68. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mysql.rs +2 -20
  69. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/nats.rs +2 -113
  70. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/postgres.rs +2 -29
  71. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/redis_streams.rs +2 -95
  72. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration_test.rs +0 -75
  73. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.cargo/config.toml +0 -0
  74. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.coderabbit.yaml +0 -0
  75. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.dockerignore +0 -0
  76. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.gitattributes +0 -0
  77. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  78. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  79. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  80. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/dependabot.yml +0 -0
  81. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/benchmark.yml +0 -0
  82. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/build-node.yml +0 -0
  83. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/conda.yml +0 -0
  84. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/docs.yml +0 -0
  85. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/node.yml +0 -0
  86. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/publish-node.yml +0 -0
  87. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/publish-python.yml +0 -0
  88. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/python.yml +0 -0
  89. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/release.yml +0 -0
  90. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.github/workflows/test-matrix.yml +0 -0
  91. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.gitignore +0 -0
  92. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/.justfile +0 -0
  93. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/AGENTS.md +0 -0
  94. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/CLAUDE.md +0 -0
  95. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/CONTRIBUTING.md +0 -0
  96. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/LICENSE +0 -0
  97. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/LICENSE-APACHE +0 -0
  98. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/LICENSE-APACHE.python +0 -0
  99. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/LICENSE-MIT +0 -0
  100. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/LICENSE-MIT.python +0 -0
  101. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/LICENSE.python +0 -0
  102. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/SECURITY.md +0 -0
  103. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/THIRD_PARTY_LICENSES.txt +0 -0
  104. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/benches/csv_to_json_bench.rs +0 -0
  105. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/benches/middleware_expr_bench.rs +0 -0
  106. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/benches/pack_bench.rs +0 -0
  107. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/benches/performance_bench.rs +0 -0
  108. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/benches/router_bench.rs +0 -0
  109. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/benches/zeromq_backends.rs +0 -0
  110. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/bindings-common/Cargo.toml +0 -0
  111. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/bindings-common/src/lib.rs +0 -0
  112. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/bindings-common/src/logging.rs +0 -0
  113. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/build.rs +0 -0
  114. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/deny.toml +0 -0
  115. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/ARCHITECTURE.md +0 -0
  116. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/CAPABILITIES.md +0 -0
  117. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/CONFIGURATION.md +0 -0
  118. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/DELIVERY.md +0 -0
  119. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/EXTENDING.md +0 -0
  120. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/GRPC.md +0 -0
  121. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/THIRD_PARTY_LICENSES.md +0 -0
  122. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/docs/assets/copy-demo.png +0 -0
  123. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-library/publish.c +0 -0
  124. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-library/smoke.c +0 -0
  125. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/CMakeLists.txt +0 -0
  126. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/README.md +0 -0
  127. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/legacy_ledger.c +0 -0
  128. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/legacy_ledger.h +0 -0
  129. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/legacy_parser.c +0 -0
  130. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/legacy_parser.h +0 -0
  131. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/minimal.c +0 -0
  132. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/c-plugin/plugin.c +0 -0
  133. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/ipc_worker_queue.yaml +0 -0
  134. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/postgres-cdc-to-qdrant/README.md +0 -0
  135. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/postgres-cdc-to-qdrant/docker-compose.yml +0 -0
  136. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/postgres-cdc-to-qdrant/init.sql +0 -0
  137. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/postgres-cdc-to-qdrant/routes.yaml +0 -0
  138. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/postgres-cdc-to-qdrant/search.sh +0 -0
  139. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/postgres-cdc-to-qdrant/test.sh +0 -0
  140. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/transactional-outbox/README.md +0 -0
  141. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/transactional-outbox/consume.sh +0 -0
  142. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/transactional-outbox/docker-compose.yml +0 -0
  143. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/transactional-outbox/init.sql +0 -0
  144. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/transactional-outbox/routes.yaml +0 -0
  145. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/examples/transactional-outbox/test.sh +0 -0
  146. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/include/cbindgen.toml +0 -0
  147. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/include/mq_bridge.h +0 -0
  148. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/include/mq_bridge_plugin.h +0 -0
  149. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/include/mq_bridge_plugin_helpers.h +0 -0
  150. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq_bridge/__init__.py +0 -0
  151. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq_bridge/__init__.pyi +0 -0
  152. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq_bridge/plugin_packaging.py +0 -0
  153. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/mq_bridge/py.typed +0 -0
  154. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/package-lock.json +0 -0
  155. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/pyproject.toml +0 -0
  156. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/Cargo.toml +0 -0
  157. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/LICENSE-APACHE.python +0 -0
  158. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/LICENSE-MIT.python +0 -0
  159. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/LICENSE.python +0 -0
  160. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/README.md +0 -0
  161. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/THIRD_PARTY_LICENSES.txt +0 -0
  162. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/analysis/bench_http_native.py +0 -0
  163. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/example.py +0 -0
  164. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/IBM_MQ.md +0 -0
  165. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/bench_memory.py +0 -0
  166. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/bench_memory.yaml +0 -0
  167. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/consume_pull.py +0 -0
  168. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/dlt_source.py +0 -0
  169. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/ibm-mq-input.py +0 -0
  170. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/json_route.py +0 -0
  171. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/memory.yaml +0 -0
  172. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/examples/raw_route.py +0 -0
  173. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/pyproject-basic.toml +0 -0
  174. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/pyproject-reduced.toml +0 -0
  175. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/src/lib.rs +0 -0
  176. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_config_types.py +0 -0
  177. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_custom_endpoint.py +0 -0
  178. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_logging.py +0 -0
  179. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_packaging.py +0 -0
  180. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_performance_smoke.py +0 -0
  181. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_plugin_package.py +0 -0
  182. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_public_api.py +0 -0
  183. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_routes.py +0 -0
  184. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/tests/test_shutdown.py +0 -0
  185. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/python/mq-bridge-py/uv.lock +0 -0
  186. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/rustfmt.toml +0 -0
  187. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/analysis/benches/metadata_bench.rs +0 -0
  188. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/analysis/debug_ibm_mq_tls.rs +0 -0
  189. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/analysis/http/analyze_xctrace_time_profile.py +0 -0
  190. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/analysis/http/http_flamegraph.py +0 -0
  191. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/analysis/http/run_http_ladder.sh +0 -0
  192. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/ci/check_third_party_notices.sh +0 -0
  193. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/ci/format_bench_output.sh +0 -0
  194. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/httparena/README.md +0 -0
  195. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/httparena/frameworks/mq-bridge-py/Dockerfile +0 -0
  196. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/httparena/frameworks/mq-bridge-py/meta.json +0 -0
  197. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/httparena/frameworks/mq-bridge-py/server.py +0 -0
  198. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/httparena/frameworks/mq-bridge-py/templates/fortunes.html +0 -0
  199. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/mqb-agent.py +0 -0
  200. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/sync-version.mjs +0 -0
  201. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/Python/mq-bridge-py/README.md +0 -0
  202. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/Python/mq-bridge-py/benchmark_config.json +0 -0
  203. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/Python/mq-bridge-py/mq-bridge-py.dockerfile +0 -0
  204. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/Python/mq-bridge-py/server.py +0 -0
  205. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/README.md +0 -0
  206. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/postgres.yml +0 -0
  207. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/seed.sql +0 -0
  208. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/techempower/verify.sh +0 -0
  209. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/the-benchmarker/README.md +0 -0
  210. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/the-benchmarker/python/mq-bridge-py/config.yaml +0 -0
  211. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/the-benchmarker/python/mq-bridge-py/pyproject.toml +0 -0
  212. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/scripts/the-benchmarker/python/mq-bridge-py/server.py +0 -0
  213. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/canonical_message.rs +0 -0
  214. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/checkpoint.rs +0 -0
  215. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/command_handler.rs +0 -0
  216. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/config_file.rs +0 -0
  217. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/amqp.rs +0 -0
  218. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/aws.rs +0 -0
  219. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/capabilities.rs +0 -0
  220. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/clickhouse.rs +0 -0
  221. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/dir_spool/mod.rs +0 -0
  222. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/dir_spool/tests.rs +0 -0
  223. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/file/csv_dialect.rs +0 -0
  224. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/file/mod.rs +0 -0
  225. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/file/tests.rs +0 -0
  226. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/consumer.rs +0 -0
  227. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/dynamic.rs +0 -0
  228. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/mod.rs +0 -0
  229. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/proto/mqbridge/bridge.proto +0 -0
  230. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/publisher.rs +0 -0
  231. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/server.rs +0 -0
  232. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/grpc/tests.rs +0 -0
  233. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http/stream.rs +0 -0
  234. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/http_bulk/query.rs +0 -0
  235. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/ibm_mq.rs +0 -0
  236. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/endpoint.rs +0 -0
  237. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/framed.rs +0 -0
  238. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/ipc_unix.rs +0 -0
  239. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/ipc_windows.rs +0 -0
  240. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/memory_transport.rs +0 -0
  241. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/mod.rs +0 -0
  242. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/memory/transport.rs +0 -0
  243. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mod.rs +0 -0
  244. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/aggregate.rs +0 -0
  245. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/consumer.rs +0 -0
  246. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/dedup.rs +0 -0
  247. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/mod.rs +0 -0
  248. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/publisher.rs +0 -0
  249. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/readers.rs +0 -0
  250. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mongodb/tests.rs +0 -0
  251. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/mqtt.rs +0 -0
  252. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/object_store.rs +0 -0
  253. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/poll.rs +0 -0
  254. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/VENDORED.md +0 -0
  255. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/pgoutput/decoder.rs +0 -0
  256. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/pgoutput/messages.rs +0 -0
  257. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/pgoutput/mod.rs +0 -0
  258. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/pgoutput/registry.rs +0 -0
  259. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/pgoutput/values.rs +0 -0
  260. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/replication.rs +0 -0
  261. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/postgres/state.rs +0 -0
  262. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/redis_streams.rs +0 -0
  263. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/sled.rs +0 -0
  264. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/sqlx/aggregate.rs +0 -0
  265. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/sqlx/columns.rs +0 -0
  266. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/sqlx/dedup.rs +0 -0
  267. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/sqlx/tests.rs +0 -0
  268. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/fanout.rs +0 -0
  269. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/mod.rs +0 -0
  270. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/null.rs +0 -0
  271. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/reader.rs +0 -0
  272. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/request.rs +0 -0
  273. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/response.rs +0 -0
  274. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/sequence.rs +0 -0
  275. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/static_endpoint.rs +0 -0
  276. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/stream_buffer.rs +0 -0
  277. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/structural/switch.rs +0 -0
  278. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/websocket.rs +0 -0
  279. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/zeromq/codec.rs +0 -0
  280. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/zeromq/mod.rs +0 -0
  281. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/zeromq/omq.rs +0 -0
  282. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/endpoints/zeromq/zmq.rs +0 -0
  283. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/errors.rs +0 -0
  284. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/event_handler.rs +0 -0
  285. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/event_store.rs +0 -0
  286. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/extensions.rs +0 -0
  287. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/lib.rs +0 -0
  288. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/aggregate/states.rs +0 -0
  289. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/aggregate/store.rs +0 -0
  290. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/aggregate/writer.rs +0 -0
  291. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/buffer.rs +0 -0
  292. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/compression.rs +0 -0
  293. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/cookie_jar.rs +0 -0
  294. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/deduplication/memory.rs +0 -0
  295. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/deduplication.rs +0 -0
  296. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/deferred_commit.rs +0 -0
  297. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/delay.rs +0 -0
  298. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/dlq.rs +0 -0
  299. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/encryption.rs +0 -0
  300. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/id.rs +0 -0
  301. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/limiter.rs +0 -0
  302. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/metrics.rs +0 -0
  303. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/otel.rs +0 -0
  304. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/pack.rs +0 -0
  305. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/random_panic.rs +0 -0
  306. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/raw_json.rs +0 -0
  307. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/retry.rs +0 -0
  308. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/timeout.rs +0 -0
  309. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/coerce.rs +0 -0
  310. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/compiled.rs +0 -0
  311. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/error.rs +0 -0
  312. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/path.rs +0 -0
  313. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/schema.rs +0 -0
  314. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/transform/tests.rs +0 -0
  315. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/middleware/weak_join.rs +0 -0
  316. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/models/builders.rs +0 -0
  317. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/models/defaults.rs +0 -0
  318. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/models/secrets.rs +0 -0
  319. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/outcomes.rs +0 -0
  320. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/completion.rs +0 -0
  321. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/conformance.rs +0 -0
  322. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/crash.rs +0 -0
  323. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/discovery.rs +0 -0
  324. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/forward.rs +0 -0
  325. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/host.rs +0 -0
  326. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/message.rs +0 -0
  327. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/mod.rs +0 -0
  328. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/plugin/sdk.rs +0 -0
  329. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/publisher.rs +0 -0
  330. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/response.rs +0 -0
  331. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/route.rs +0 -0
  332. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/shutdown.rs +0 -0
  333. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/base64_engine.rs +0 -0
  334. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/change_op.rs +0 -0
  335. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/compression.rs +0 -0
  336. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/compression_pool.rs +0 -0
  337. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/connection_registry.rs +0 -0
  338. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/crypto.rs +0 -0
  339. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/crypto_envelope.rs +0 -0
  340. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/http_status.rs +0 -0
  341. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/interpolation.rs +0 -0
  342. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/lookup_batch.rs +0 -0
  343. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/mod.rs +0 -0
  344. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/ndjson.rs +0 -0
  345. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/pack.rs +0 -0
  346. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/parallel.rs +0 -0
  347. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/parquet.rs +0 -0
  348. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/plugin_abi.rs +0 -0
  349. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/poll_job.rs +0 -0
  350. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/redact.rs +0 -0
  351. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/source_ranges.rs +0 -0
  352. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/sse.rs +0 -0
  353. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/stream_batch.rs +0 -0
  354. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/tls.rs +0 -0
  355. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/support/tls_check.rs +0 -0
  356. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/test_utils.rs +0 -0
  357. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/traits.rs +0 -0
  358. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/src/type_handler.rs +0 -0
  359. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/README.md +0 -0
  360. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/armature_integration.rs +0 -0
  361. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/compat/python/bridge_client.py +0 -0
  362. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/dedup_store_bench.rs +0 -0
  363. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/delivery_guarantee_test.rs +0 -0
  364. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/full_plugin_fallback_test.rs +0 -0
  365. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/clickhouse.rs +0 -0
  366. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/config.toml +0 -0
  367. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/contract.rs +0 -0
  368. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/amqp.yml +0 -0
  369. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/aws.yml +0 -0
  370. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/clickhouse.yml +0 -0
  371. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm-mq-certs/client.crl +0 -0
  372. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm-mq-certs/client.kdb +0 -0
  373. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm-mq-certs/client.p12 +0 -0
  374. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm-mq-certs/client.rdb +0 -0
  375. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm-mq-certs/client.sth +0 -0
  376. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm_mq.yml +0 -0
  377. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/ibm_mq_tls.yml +0 -0
  378. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/kafka-tls.yml +0 -0
  379. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/kafka.yml +0 -0
  380. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mariadb.yml +0 -0
  381. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mongodb-replica.yml +0 -0
  382. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mongodb-tls.yml +0 -0
  383. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mongodb.yml +0 -0
  384. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mosquitto.conf +0 -0
  385. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mosquitto_performance.conf +0 -0
  386. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mosquitto_persistence.conf +0 -0
  387. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mq_init.mqsc +0 -0
  388. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mq_init_tls.mqsc +0 -0
  389. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mqtt.yml +0 -0
  390. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mqtt_performance.yml +0 -0
  391. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/mysql.yml +0 -0
  392. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/nats.yml +0 -0
  393. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/object_store.yml +0 -0
  394. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/postgres.yml +0 -0
  395. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/postgres_cdc.yml +0 -0
  396. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/docker-compose/redis.yml +0 -0
  397. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/file.rs +0 -0
  398. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/grpc.rs +0 -0
  399. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/grpc_tls.rs +0 -0
  400. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/http.rs +0 -0
  401. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/http_tls.rs +0 -0
  402. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/ibm_mq_tls.rs +0 -0
  403. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/ipc.rs +0 -0
  404. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/kafka_tls.rs +0 -0
  405. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/logic_test.rs +0 -0
  406. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mod.rs +0 -0
  407. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mongodb_raw.rs +0 -0
  408. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/mongodb_tls.rs +0 -0
  409. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/object_store.rs +0 -0
  410. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/performance_static.rs +0 -0
  411. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/postgres_cdc.rs +0 -0
  412. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/route.rs +0 -0
  413. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/scripts/gen_certs.sh +0 -0
  414. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/sqlite.rs +0 -0
  415. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/tls_helpers.rs +0 -0
  416. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/websocket.rs +0 -0
  417. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/integration/zeromq.rs +0 -0
  418. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/memory_leak_test.rs +0 -0
  419. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/otel_test.rs +0 -0
  420. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/plugin_loading_latch_test.rs +0 -0
  421. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/ref_test.rs +0 -0
  422. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/reference_docs_test.rs +0 -0
  423. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/sqlite_test.rs +0 -0
  424. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/tls_example.rs +0 -0
  425. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/unit_tests.md +0 -0
  426. {mq_bridge_basic-1.0.0 → mq_bridge_basic-1.0.2}/tests/websocket_test.rs +0 -0
@@ -238,24 +238,29 @@ jobs:
238
238
  # cargo reports the binary it just built; a restored cache can leave several
239
239
  # older `cli_copy_docker_test-<hash>` files next to it, so globbing deps/
240
240
  # would pick an arbitrary one.
241
- - name: Build the docker test binary
241
+ - name: Build the docker test binaries
242
242
  working-directory: apps/mq-bridge-app
243
243
  shell: bash
244
244
  run: |
245
- cargo test -p mq-bridge-app --test cli_copy_docker_test --no-run \
245
+ cargo test -p mq-bridge-app --test cli_copy_docker_test \
246
+ --test cli_scenario_docker_test --no-run \
246
247
  --message-format=json > "$RUNNER_TEMP/build.json"
247
248
  jq -r 'select(.target.name == "cli_copy_docker_test") | .executable // empty' \
248
249
  "$RUNNER_TEMP/build.json" | tail -1 > "$RUNNER_TEMP/test-binary"
250
+ jq -r 'select(.target.name == "cli_scenario_docker_test") | .executable // empty' \
251
+ "$RUNNER_TEMP/build.json" | tail -1 > "$RUNNER_TEMP/scenario-binary"
249
252
  jq -r 'select(.target.name == "mq-bridge-app"
250
253
  and (.target.kind // [] | index("bin"))) | .executable // empty' \
251
254
  "$RUNNER_TEMP/build.json" | tail -1 > "$RUNNER_TEMP/cli-binary"
252
- test -s "$RUNNER_TEMP/test-binary" && test -s "$RUNNER_TEMP/cli-binary"
255
+ test -s "$RUNNER_TEMP/test-binary" && test -s "$RUNNER_TEMP/scenario-binary" \
256
+ && test -s "$RUNNER_TEMP/cli-binary"
253
257
 
254
258
  - name: Collect binaries
255
259
  shell: bash
256
260
  run: |
257
261
  mkdir -p docker-suite
258
262
  cp "$(cat "$RUNNER_TEMP/test-binary")" docker-suite/test-binary
263
+ cp "$(cat "$RUNNER_TEMP/scenario-binary")" docker-suite/scenario-binary
259
264
  cp "$(cat "$RUNNER_TEMP/cli-binary")" docker-suite/mq-bridge-app
260
265
  cp "$RUNNER_TEMP/cli-binary" docker-suite/cli-path
261
266
 
@@ -291,7 +296,7 @@ jobs:
291
296
  cli="$(cat docker-suite/cli-path)"
292
297
  mkdir -p "$(dirname "$cli")"
293
298
  mv docker-suite/mq-bridge-app "$cli"
294
- chmod +x "$cli" docker-suite/test-binary
299
+ chmod +x "$cli" docker-suite/test-binary docker-suite/scenario-binary
295
300
 
296
301
  - name: Install runtime libraries
297
302
  timeout-minutes: 5
@@ -335,3 +340,64 @@ jobs:
335
340
  echo "::error::failed backends: ${failed[*]}"
336
341
  exit 1
337
342
  fi
343
+
344
+ # Route-level scenarios through the binary: broker restarts, SIGTERM and
345
+ # `kill -9` resumes. A job of its own so these slower runs never hold up the
346
+ # copy matrix above; same binaries, same one-backend-at-a-time loop.
347
+ docker-scenario:
348
+ name: App docker — Scenarios
349
+ runs-on: ubuntu-latest
350
+ needs: docker-build
351
+ steps:
352
+ - uses: actions/checkout@v7
353
+
354
+ - name: Download docker suite binaries
355
+ uses: actions/download-artifact@v8
356
+ with:
357
+ name: app-docker-suite
358
+ path: docker-suite
359
+
360
+ - name: Restore binaries
361
+ shell: bash
362
+ run: |
363
+ cli="$(cat docker-suite/cli-path)"
364
+ mkdir -p "$(dirname "$cli")"
365
+ mv docker-suite/mq-bridge-app "$cli"
366
+ chmod +x "$cli" docker-suite/scenario-binary
367
+
368
+ - name: Install runtime libraries
369
+ timeout-minutes: 5
370
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev zlib1g-dev
371
+
372
+ # Name filter plus MQB_TEST_BACKEND, and a zero-test run fails, for the
373
+ # reasons given on the copy loop above.
374
+ - name: Run the scenarios one backend after another
375
+ timeout-minutes: 30
376
+ shell: bash
377
+ run: |
378
+ failed=()
379
+ for backend in kafka postgres nats amqp mqtt mongodb mysql mariadb; do
380
+ stack="$backend"
381
+ # CDC needs logical replication; the cursor scenarios run on it too.
382
+ [ "$backend" = postgres ] && stack=postgres_cdc
383
+ compose="tests/integration/docker-compose/$stack.yml"
384
+ echo "::group::$backend"
385
+ ok=1
386
+ docker compose -f "$compose" up -d --wait --wait-timeout 300 || ok=0
387
+ if [ "$ok" = 1 ]; then
388
+ MQB_TEST_BACKEND="$backend" ./docker-suite/scenario-binary \
389
+ --ignored --test-threads=1 "$backend" 2>&1 | tee result.log || ok=0
390
+ grep -qE 'test result: ok\. [1-9]' result.log \
391
+ || { echo "no $backend scenarios ran"; ok=0; }
392
+ fi
393
+ if [ "$ok" = 0 ]; then
394
+ failed+=("$backend")
395
+ docker compose -f "$compose" logs --tail 200 || true
396
+ fi
397
+ docker compose -f "$compose" down -v --remove-orphans || true
398
+ echo "::endgroup::"
399
+ done
400
+ if [ "${#failed[@]}" -gt 0 ]; then
401
+ echo "::error::failed backends: ${failed[*]}"
402
+ exit 1
403
+ fi
@@ -208,12 +208,10 @@ jobs:
208
208
  include:
209
209
  - name: Status
210
210
  filter: 'binary(integration_test) & test(=test_all_status)'
211
- - name: Chaos
212
- filter: 'binary(integration_test) & test(=test_all_chaos)'
213
211
  - name: Logic
214
212
  filter: 'binary(integration_test) & (test(=test_all_request_reply) | test(=test_all_subscriber_logic))'
215
213
  - name: Endpoints
216
- filter: 'binary(integration_test) & not test(=test_all_status) & not test(=test_all_chaos) & not test(=test_all_request_reply) & not test(=test_all_subscriber_logic) & not test(=test_all_performance_pipeline) & not test(=test_all_performance_direct)'
214
+ filter: 'binary(integration_test) & not test(=test_all_status) & not test(=test_all_request_reply) & not test(=test_all_subscriber_logic) & not test(=test_all_performance_pipeline) & not test(=test_all_performance_direct)'
217
215
  - name: Performance Pipeline
218
216
  filter: 'binary(integration_test) & test(=test_all_performance_pipeline)'
219
217
  - name: Performance Direct
@@ -270,9 +268,11 @@ jobs:
270
268
 
271
269
  # Armature clones an external repo and runs its test suite: no docker stacks, no
272
270
  # TLS certs, no keytool. It used to pay ~1.3m of setup for 1.7m of tests.
271
+ # Advisory: it builds armature's `develop` head unlocked, so their breakage shows here.
273
272
  integration-armature:
274
273
  name: Integration — Armature
275
274
  runs-on: ubuntu-latest
275
+ continue-on-error: true
276
276
  needs: integration-build
277
277
  steps:
278
278
  - uses: actions/checkout@v7
@@ -8,12 +8,18 @@ on:
8
8
  - "examples/postgres-cdc-to-qdrant/**"
9
9
  - "examples/transactional-outbox/**"
10
10
  - "examples/test-without-a-broker/**"
11
+ - "examples/mongodb-to-meilisearch/**"
12
+ - "examples/llm-ticket-triage/**"
13
+ - "examples/order-features/**"
11
14
  - ".github/workflows/examples.yml"
12
15
  pull_request:
13
16
  paths:
14
17
  - "examples/postgres-cdc-to-qdrant/**"
15
18
  - "examples/transactional-outbox/**"
16
19
  - "examples/test-without-a-broker/**"
20
+ - "examples/mongodb-to-meilisearch/**"
21
+ - "examples/llm-ticket-triage/**"
22
+ - "examples/order-features/**"
17
23
  - ".github/workflows/examples.yml"
18
24
  workflow_dispatch:
19
25
 
@@ -32,7 +38,12 @@ jobs:
32
38
  strategy:
33
39
  fail-fast: false
34
40
  matrix:
35
- example: [postgres-cdc-to-qdrant, transactional-outbox]
41
+ example:
42
+ - postgres-cdc-to-qdrant
43
+ - transactional-outbox
44
+ - mongodb-to-meilisearch
45
+ - llm-ticket-triage
46
+ - order-features
36
47
  steps:
37
48
  - uses: actions/checkout@v7
38
49
  with:
@@ -62,15 +62,23 @@ jobs:
62
62
  ${{ runner.os }}-cargo-ibmmq-
63
63
  ${{ runner.os }}-cargo-
64
64
 
65
+ # Only a cache miss reaches IBM's download host.
66
+ - name: Cache IBM MQ redist archive
67
+ uses: actions/cache@v6
68
+ with:
69
+ path: ~/ibm-mq-redist
70
+ key: ibm-mq-redist-${{ env.IBM_MQ_REDIST_SHA256 }}
71
+
65
72
  - name: Install IBM MQ Client Libraries
66
73
  id: mqclient
67
74
  run: |
68
- archive_url="$IBM_MQ_REDIST_URL"
69
- archive_name="$(basename "$archive_url")"
75
+ archive_name="$HOME/ibm-mq-redist/$(basename "$IBM_MQ_REDIST_URL")"
70
76
  # IBM's download host is occasionally unreachable from runners. Treat a
71
77
  # download failure as infrastructure flakiness and skip the rest of the
72
78
  # job (see `if:` guards below). Checksum/extract failures still fail.
73
- if ! curl -fsSLO --retry 5 --retry-all-errors --retry-delay 5 --connect-timeout 30 "$archive_url"; then
79
+ # Download outside the cached dir so a failure never caches an empty one.
80
+ tmp="$RUNNER_TEMP/$(basename "$archive_name")"
81
+ if [ ! -f "$archive_name" ] && ! { curl -fsSL --retry 5 --retry-all-errors --retry-delay 5 --connect-timeout 30 -o "$tmp" "$IBM_MQ_REDIST_URL" && mkdir -p "$(dirname "$archive_name")" && mv "$tmp" "$archive_name"; }; then
74
82
  echo "::warning::IBM MQ redist download failed (host unreachable); skipping IBM MQ build."
75
83
  echo "available=false" >> "$GITHUB_OUTPUT"
76
84
  exit 0
@@ -131,15 +139,23 @@ jobs:
131
139
  ${{ runner.os }}-cargo-ibmmq-
132
140
  ${{ runner.os }}-cargo-
133
141
 
142
+ # Only a cache miss reaches IBM's download host.
143
+ - name: Cache IBM MQ redist archive
144
+ uses: actions/cache@v6
145
+ with:
146
+ path: ~/ibm-mq-redist
147
+ key: ibm-mq-redist-${{ env.IBM_MQ_REDIST_SHA256 }}
148
+
134
149
  - name: Install IBM MQ Client Libraries
135
150
  id: mqclient
136
151
  run: |
137
- archive_url="$IBM_MQ_REDIST_URL"
138
- archive_name="$(basename "$archive_url")"
152
+ archive_name="$HOME/ibm-mq-redist/$(basename "$IBM_MQ_REDIST_URL")"
139
153
  # IBM's download host is occasionally unreachable from runners. Treat a
140
154
  # download failure as infrastructure flakiness and skip the rest of the
141
155
  # job (see `if:` guards below). Checksum/extract failures still fail.
142
- if ! curl -fsSLO --retry 5 --retry-all-errors --retry-delay 5 --connect-timeout 30 "$archive_url"; then
156
+ # Download outside the cached dir so a failure never caches an empty one.
157
+ tmp="$RUNNER_TEMP/$(basename "$archive_name")"
158
+ if [ ! -f "$archive_name" ] && ! { curl -fsSL --retry 5 --retry-all-errors --retry-delay 5 --connect-timeout 30 -o "$tmp" "$IBM_MQ_REDIST_URL" && mkdir -p "$(dirname "$archive_name")" && mv "$tmp" "$archive_name"; }; then
143
159
  echo "::warning::IBM MQ redist download failed (host unreachable); skipping IBM MQ integration tests."
144
160
  echo "available=false" >> "$GITHUB_OUTPUT"
145
161
  exit 0
@@ -188,7 +204,7 @@ jobs:
188
204
  --ignored --nocapture --test-threads=1 \
189
205
  test_all_subscriber_logic \
190
206
  test_all_performance_pipeline \
191
- test_all_chaos \
207
+ test_ibm_mq_chaos \
192
208
  test_all_status
193
209
 
194
210
  - name: Run IBM MQ TLS tests
@@ -223,20 +239,7 @@ jobs:
223
239
  restore-keys: |
224
240
  ${{ runner.os }}-cargo-ibmmq-
225
241
 
226
- - name: Install IBM MQ Client Libraries
227
- run: |
228
- archive_url="$IBM_MQ_REDIST_URL"
229
- archive_name="$(basename "$archive_url")"
230
- curl -fsSLO --retry 5 --retry-all-errors --retry-delay 5 --connect-timeout 30 "$archive_url"
231
- echo "${IBM_MQ_REDIST_SHA256} ${archive_name}" | sha256sum -c -
232
- # The redist archive extracts a self-contained MQ install tree
233
- # (bin/, lib64/, inc/, ...) with no top-level mqm/ dir, so unpack
234
- # it directly into the installation path.
235
- sudo mkdir -p /opt/mqm
236
- sudo tar -xzf "$archive_name" -C /opt/mqm
237
- echo "LD_LIBRARY_PATH=/opt/mqm/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV
238
- echo "MQ_INSTALLATION_PATH=/opt/mqm" >> $GITHUB_ENV
239
-
242
+ # `ibm-mq` loads the client at runtime, so rustdoc needs no IBM MQ SDK.
240
243
  - name: Build documentation
241
244
  run: cargo doc --features ibm-mq --no-deps
242
245
 
@@ -2,6 +2,115 @@
2
2
 
3
3
  All notable changes to `mq-bridge`. Newest first.
4
4
 
5
+ ## 1.0.2
6
+
7
+ ### Added
8
+
9
+ - **A `kafka` source reads several topics.** `topic` takes a list (`[orders.eu, orders.us]`)
10
+ or a comma-separated string, and one consumer group shares the partitions of all of them;
11
+ `--drain` ends once every listed topic is read to its end. A name starting with `^` is a
12
+ librdkafka regex. It already reached librdkafka before, but a drain over it could not see
13
+ the partitions its peers held or a late group join, and could end early; a drain now
14
+ refuses a pattern. A `kafka` output with a list or a
15
+ pattern fails at startup instead of writing to a topic named after it. On the CLI the list
16
+ is `?topic=a,b`. Over several topics, a record without an mq-bridge id gets a fallback id
17
+ that includes its topic, so the same partition and offset in two topics stay apart.
18
+ - **An agent skill for the CLI.** `apps/mq-bridge-app/agent-skills` teaches Claude Code,
19
+ Codex and other agents that read `SKILL.md` to use `mqb list`, `describe`, `copy` and
20
+ config files. Install it with `npx skills add marcomq/mq-bridge`.
21
+ - **A `lookup` through a plugin is one call per batch.** A plugin with ABI 1.2 or newer
22
+ answers the whole batch in one `send_batch`, and each request fails on its own. An older
23
+ plugin, or a batch with repeated message ids, is still asked one request at a time.
24
+ - **`transform`, `filter` and plugin middlewares on a lookup's `from` keep it batched.**
25
+ They used to turn a batching `from` into one request per message. A request the middleware
26
+ drops fails as before; a plugin that fails the batch falls back to one request at a time.
27
+ - **`x-mqb-uri: filepath` for plugin schemas.** Like `path`, but the leading `/` stays, so
28
+ `x:///models/a.onnx` gives `/models/a.onnx`. A plugin that uses it needs this release:
29
+ 1.0.1 refuses to load it.
30
+
31
+ ### Fixed
32
+
33
+ - **The JSON schema accepts the descriptive format names.** `format: envelope`, `payload`,
34
+ `envelope_json` and `envelope_text` no longer show as invalid in an editor that validates
35
+ against `mq-bridge.schema.json`, and `mqb describe` lists them. The UI keeps showing one
36
+ entry per format.
37
+
38
+ ## 1.0.1
39
+
40
+ ### Added
41
+
42
+ - **`mqb list` and `mqb describe <name>`** show the endpoints and middlewares this build
43
+ supports: URI form, an example and the typed parameters, as text or with `--json`. The MCP
44
+ server offers the same data as the `describe` tool.
45
+ - **`aggregate` `fields` take `decayed_count(half_life)` and `decayed_sum(path, half_life)`.**
46
+ Counts and totals that fade instead of dropping out of a window: at a steady rate they
47
+ settle at about the last 1.44 half-lives. A short and a long half-life side by side show
48
+ whether a key's activity rises above its own usual level.
49
+ - **`mqb.aggregate.overwrite: true` metadata folds a message as the newest one**, even if it is
50
+ older: `last` takes its value and the state's clock moves to its time. It repairs a state
51
+ that a wrong `time` pushed into the future.
52
+ - **`http_bulk` `delete.line` works in every shape.** It is a template per id
53
+ (`${payload:_rev}` works) and becomes an array entry with `envelope` or a list entry with
54
+ `{ids}` in the path, e.g. a quoted PostgREST `in.(…)` list or CouchDB `_deleted` documents.
55
+ A line that is no JSON fails only its message.
56
+ - **`http_bulk` `upsert.max_documents`** caps the documents per request.
57
+ - **`http_bulk` `result.items.index`** matches entries by the position they name, so a response
58
+ may list only the failures (BigQuery `insertErrors`).
59
+ - **`http_bulk` `result.items.success`** fails an entry whose status is not the given value,
60
+ even without an error text (SES `Status` other than `SUCCESS`).
61
+ - **`http_bulk` reads follow next-page URLs**: `read.cursor.next_url` (a URL in the body) or
62
+ `read.cursor.link` (the `Link` header's `rel="next"`). The next URL is checkpointed; one on
63
+ another host stops the read, so credentials stay with the configured host.
64
+ - **`openai_chat` and `openai_embeddings` take `auth`** (`oauth2` or `aws_sigv4`) as `http_bulk`
65
+ does, e.g. for Amazon Bedrock.
66
+ - `StubHttpServer::start_with_headers` in `plugin::test_support` adds response headers.
67
+ - **CLI URIs take `mongodb+srv://`, `redis+unix://`, `valkey://`, `valkeys://` and
68
+ `valkey+unix://`** directly, without the `url=` escape.
69
+
70
+ ### Changed
71
+
72
+ - **A late message in `aggregate` `fields` now counts with the weight it would have had by
73
+ then**, 0.5 per half-life it is late, instead of fully. `ema`, `ema_stddev` and
74
+ `ema_variance` with a half-life now give the same result in any arrival order, across
75
+ batches and instances too. `ema(path, alpha)` is unchanged.
76
+ - **With `time` or a half-life field, `last` keeps the value of the newest message**; a late
77
+ message used to overwrite it.
78
+
79
+ ### Fixed
80
+
81
+ - **A PostgreSQL `cursor_column` source no longer skips a row whose transaction commits
82
+ after a later row was read.** A `serial` id taken by a long transaction used to be passed
83
+ by the cursor and never read. Each page now stops before the first row written by a
84
+ transaction that is not older than every open one; a view, which has no `xmin`, keeps the
85
+ old behaviour and logs a warning. While a write transaction stays open on the server, newer
86
+ rows wait for it.
87
+ - **A Kafka drain restarted right after a crash no longer fails** with "was not assigned a
88
+ partition". The dead member holds the group for `session.timeout.ms` (45 s), longer than the
89
+ 30 s the drain waited; the wait now outlasts the configured session timeout by 15 s.
90
+ `MQ_BRIDGE_DRAIN_JOIN_TIMEOUT_MS` still overrides it.
91
+ - **`postgres_cdc` no longer pins WAL while its published tables are quiet.** Writes to other
92
+ tables advanced the confirmed position in memory, but it reached the server only with the
93
+ next batch, so the slot stayed put and the server kept every WAL segment since. The position
94
+ is now reported as soon as the stream is idle.
95
+ - **A NATS JetStream drain started right after a crash no longer ends early.** What the crashed
96
+ run had pulled stays unacked until the consumer's `ack_wait` (30 s) runs out, so a drain
97
+ started sooner saw nothing, reported success and left those messages for the next run. An
98
+ idle drain now waits, at most `ack_wait`, while the consumer still has undelivered messages
99
+ or unacked ones this process does not hold.
100
+ - **A Kafka drain no longer ends while another member's partitions still lag.** A member that
101
+ finished its own partitions could report success just before the rebalance gave it those of
102
+ a member that had left, and the rows stayed for the next run. Before ending, a drain now
103
+ compares the group's committed offsets on the other partitions with their targets and waits
104
+ while any lag, at most the join wait (`session.timeout.ms` + 15 s); past that, a live member
105
+ owns them and the drain ends as before.
106
+
107
+ ### Performance
108
+
109
+ - **The `http` output spends 1.5 to 2.4 µs less per request.** It keeps its own connection
110
+ pool instead of hyper's legacy client: idle HTTP/1 connections are reused most recently used
111
+ first, and an HTTP/2 connection negotiated by ALPN is shared by all requests.
112
+ `pool_idle_timeout_ms` (default 90 s) and `tcp_keepalive_ms` apply as before.
113
+
5
114
  ## 1.0.0
6
115
 
7
116
  The first stable release. It follows a production-readiness review of the core engine, the
@@ -1071,25 +1071,29 @@ dependencies = [
1071
1071
 
1072
1072
  [[package]]
1073
1073
  name = "bit-set"
1074
- version = "0.8.0"
1074
+ version = "0.11.1"
1075
1075
  source = "registry+https://github.com/rust-lang/crates.io-index"
1076
- checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
1076
+ checksum = "56d87354e4229f54a44f7bf2435906a4656dba36026ab6eaca629a2c436a691c"
1077
1077
  dependencies = [
1078
- "bit-vec 0.8.0",
1078
+ "bit-vec 0.10.1",
1079
1079
  ]
1080
1080
 
1081
1081
  [[package]]
1082
1082
  name = "bit-vec"
1083
- version = "0.8.0"
1083
+ version = "0.9.1"
1084
1084
  source = "registry+https://github.com/rust-lang/crates.io-index"
1085
- checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
1085
+ checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51"
1086
+ dependencies = [
1087
+ "serde",
1088
+ ]
1086
1089
 
1087
1090
  [[package]]
1088
1091
  name = "bit-vec"
1089
- version = "0.9.1"
1092
+ version = "0.10.1"
1090
1093
  source = "registry+https://github.com/rust-lang/crates.io-index"
1091
- checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51"
1094
+ checksum = "5727b15fa97d4f4fee0a3b7c3d550ed0269f54329207b86388de918604e31269"
1092
1095
  dependencies = [
1096
+ "borsh",
1093
1097
  "serde",
1094
1098
  ]
1095
1099
 
@@ -3222,9 +3226,9 @@ dependencies = [
3222
3226
 
3223
3227
  [[package]]
3224
3228
  name = "lapin"
3225
- version = "4.12.0"
3229
+ version = "4.12.1"
3226
3230
  source = "registry+https://github.com/rust-lang/crates.io-index"
3227
- checksum = "7b86b2a46f42a1d565c7ba327e03725708c1ff212baa4c271cec291e265ae542"
3231
+ checksum = "1f6674e18d68e810f66ea962f8080f1ded75f813c1cd3fae9ed53bab760dfcfd"
3228
3232
  dependencies = [
3229
3233
  "amq-protocol",
3230
3234
  "async-rs",
@@ -3689,7 +3693,7 @@ dependencies = [
3689
3693
 
3690
3694
  [[package]]
3691
3695
  name = "mq-bridge"
3692
- version = "1.0.0"
3696
+ version = "1.0.2"
3693
3697
  dependencies = [
3694
3698
  "aes-gcm",
3695
3699
  "anyhow",
@@ -3779,6 +3783,7 @@ dependencies = [
3779
3783
  "tonic-prost",
3780
3784
  "tonic-prost-build",
3781
3785
  "tonic-reflection",
3786
+ "tower-service",
3782
3787
  "tracing",
3783
3788
  "tracing-appender",
3784
3789
  "tracing-subscriber",
@@ -3793,7 +3798,7 @@ dependencies = [
3793
3798
 
3794
3799
  [[package]]
3795
3800
  name = "mq-bridge-bindings-common"
3796
- version = "1.0.0"
3801
+ version = "1.0.2"
3797
3802
  dependencies = [
3798
3803
  "anyhow",
3799
3804
  "fast-uuid-v7",
@@ -3807,7 +3812,7 @@ dependencies = [
3807
3812
 
3808
3813
  [[package]]
3809
3814
  name = "mq-bridge-c"
3810
- version = "1.0.0"
3815
+ version = "1.0.2"
3811
3816
  dependencies = [
3812
3817
  "anyhow",
3813
3818
  "async-trait",
@@ -3824,7 +3829,7 @@ dependencies = [
3824
3829
 
3825
3830
  [[package]]
3826
3831
  name = "mq-bridge-full-plugin"
3827
- version = "1.0.0"
3832
+ version = "1.0.2"
3828
3833
  dependencies = [
3829
3834
  "anyhow",
3830
3835
  "async-trait",
@@ -3835,7 +3840,7 @@ dependencies = [
3835
3840
 
3836
3841
  [[package]]
3837
3842
  name = "mq-bridge-node"
3838
- version = "1.0.0"
3843
+ version = "1.0.2"
3839
3844
  dependencies = [
3840
3845
  "anyhow",
3841
3846
  "async-trait",
@@ -3890,7 +3895,7 @@ dependencies = [
3890
3895
 
3891
3896
  [[package]]
3892
3897
  name = "mq-bridge-py"
3893
- version = "1.0.0"
3898
+ version = "1.0.2"
3894
3899
  dependencies = [
3895
3900
  "anyhow",
3896
3901
  "async-trait",
@@ -4315,9 +4320,9 @@ dependencies = [
4315
4320
 
4316
4321
  [[package]]
4317
4322
  name = "opentelemetry"
4318
- version = "0.33.0"
4323
+ version = "0.33.1"
4319
4324
  source = "registry+https://github.com/rust-lang/crates.io-index"
4320
- checksum = "6cdb0b1b267eb9db3331b434ed9ddab10d50e280a9adf9d13e5233e2002b61b5"
4325
+ checksum = "8c1f1a6ac9c875a4941e4c7c085b61e8f4daa326de03b4701768c3491a6ad9ee"
4321
4326
  dependencies = [
4322
4327
  "futures-core",
4323
4328
  "futures-sink",
@@ -4328,9 +4333,9 @@ dependencies = [
4328
4333
 
4329
4334
  [[package]]
4330
4335
  name = "opentelemetry_sdk"
4331
- version = "0.33.0"
4336
+ version = "0.33.1"
4332
4337
  source = "registry+https://github.com/rust-lang/crates.io-index"
4333
- checksum = "cb39533d9d1c912123efd7d41d7e0c29d16917b60ce15b4c8d87cb1af7f67520"
4338
+ checksum = "372a912db2974d1990207006fd0e3aa0ef3fd4ad3be43c65cfaadf2206866061"
4334
4339
  dependencies = [
4335
4340
  "futures-channel",
4336
4341
  "futures-executor",
@@ -4940,16 +4945,17 @@ dependencies = [
4940
4945
 
4941
4946
  [[package]]
4942
4947
  name = "proptest"
4943
- version = "1.11.0"
4948
+ version = "1.12.0"
4944
4949
  source = "registry+https://github.com/rust-lang/crates.io-index"
4945
- checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744"
4950
+ checksum = "b8530004ccb15eae51c7e40009fbe317f341f804db54dc033eec1c50be28cfa0"
4946
4951
  dependencies = [
4947
4952
  "bit-set",
4948
- "bit-vec 0.8.0",
4953
+ "bit-vec 0.10.1",
4949
4954
  "bitflags 2.13.2",
4955
+ "chacha20",
4956
+ "core_detect",
4950
4957
  "num-traits",
4951
- "rand 0.9.5",
4952
- "rand_chacha 0.9.0",
4958
+ "rand 0.10.3",
4953
4959
  "rand_xorshift",
4954
4960
  "regex-syntax",
4955
4961
  "rusty-fork",
@@ -5370,11 +5376,11 @@ dependencies = [
5370
5376
 
5371
5377
  [[package]]
5372
5378
  name = "rand_xorshift"
5373
- version = "0.4.0"
5379
+ version = "0.5.0"
5374
5380
  source = "registry+https://github.com/rust-lang/crates.io-index"
5375
- checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
5381
+ checksum = "60aa6af80be32871323012e02e6e65f8a7cc7890931ae421d217ad8fe0df2ccf"
5376
5382
  dependencies = [
5377
- "rand_core 0.9.5",
5383
+ "rand_core 0.10.1",
5378
5384
  ]
5379
5385
 
5380
5386
  [[package]]
@@ -6181,10 +6187,11 @@ dependencies = [
6181
6187
 
6182
6188
  [[package]]
6183
6189
  name = "serde_json"
6184
- version = "1.0.151"
6190
+ version = "1.0.154"
6185
6191
  source = "registry+https://github.com/rust-lang/crates.io-index"
6186
- checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
6192
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
6187
6193
  dependencies = [
6194
+ "foldhash 0.2.0",
6188
6195
  "indexmap",
6189
6196
  "itoa",
6190
6197
  "memchr",
@@ -7036,9 +7043,9 @@ dependencies = [
7036
7043
 
7037
7044
  [[package]]
7038
7045
  name = "tokio-util"
7039
- version = "0.7.19"
7046
+ version = "0.7.20"
7040
7047
  source = "registry+https://github.com/rust-lang/crates.io-index"
7041
- checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52"
7048
+ checksum = "e464cf451ba96ebfc6f9b6542f17ee8b8956e33f1e40d9690624e59d7a7f8a4b"
7042
7049
  dependencies = [
7043
7050
  "bytes",
7044
7051
  "futures-core",
@@ -7545,9 +7552,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
7545
7552
 
7546
7553
  [[package]]
7547
7554
  name = "uuid"
7548
- version = "1.27.0"
7555
+ version = "1.28.0"
7549
7556
  source = "registry+https://github.com/rust-lang/crates.io-index"
7550
- checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a"
7557
+ checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606"
7551
7558
  dependencies = [
7552
7559
  "getrandom 0.4.3",
7553
7560
  "js-sys",
@@ -8134,9 +8141,9 @@ dependencies = [
8134
8141
 
8135
8142
  [[package]]
8136
8143
  name = "zen-expression"
8137
- version = "2.1.2"
8144
+ version = "2.1.3"
8138
8145
  source = "registry+https://github.com/rust-lang/crates.io-index"
8139
- checksum = "5f744c9d463bc8f8666bc9948d3776e0308ad1c3691607b62051684471b85b8f"
8146
+ checksum = "d22b5e2c7e25613bebc4361fecbc89fb35eec8f6224565457cf0e4968ef24c79"
8140
8147
  dependencies = [
8141
8148
  "ahash",
8142
8149
  "anyhow",
@@ -8165,9 +8172,9 @@ dependencies = [
8165
8172
 
8166
8173
  [[package]]
8167
8174
  name = "zen-macros"
8168
- version = "2.1.2"
8175
+ version = "2.1.4"
8169
8176
  source = "registry+https://github.com/rust-lang/crates.io-index"
8170
- checksum = "21d180d2c43d0fc0b5ed75463615ebd6b842c1282505f158096f8e5b17f66489"
8177
+ checksum = "f79020ae3656eb3c6775843066246a403cf6edf020f54658ca665ecbb18e80ab"
8171
8178
  dependencies = [
8172
8179
  "proc-macro2",
8173
8180
  "quote",
@@ -8177,9 +8184,9 @@ dependencies = [
8177
8184
 
8178
8185
  [[package]]
8179
8186
  name = "zen-types"
8180
- version = "2.1.2"
8187
+ version = "2.1.4"
8181
8188
  source = "registry+https://github.com/rust-lang/crates.io-index"
8182
- checksum = "22a273ad92f5ee4b5c0da22412074d1676bfae61886f87deec15c79e9766d601"
8189
+ checksum = "3667fd4c7b01c20db9726cacad4cc77e967a39a07b2e39ccbf4eeebc86d636fd"
8183
8190
  dependencies = [
8184
8191
  "ahash",
8185
8192
  "hipstr",
@@ -8311,27 +8318,27 @@ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
8311
8318
 
8312
8319
  [[package]]
8313
8320
  name = "zstd"
8314
- version = "0.14.0"
8321
+ version = "0.14.2"
8315
8322
  source = "registry+https://github.com/rust-lang/crates.io-index"
8316
- checksum = "bf06bd8162af0734b344780deb55b42a2429ae430870d13fcc12f238e880fe6e"
8323
+ checksum = "057cfd910cfac363a0ada849592624b4c9ff2e10bef504c3433810d78ed96f93"
8317
8324
  dependencies = [
8318
8325
  "zstd-safe",
8319
8326
  ]
8320
8327
 
8321
8328
  [[package]]
8322
8329
  name = "zstd-safe"
8323
- version = "8.0.0"
8330
+ version = "8.1.0"
8324
8331
  source = "registry+https://github.com/rust-lang/crates.io-index"
8325
- checksum = "ae42c0555055784c70058d19ba8e275528e8a99a706684868ace5da4e716a4ab"
8332
+ checksum = "bdd44c6a7284e91f3717755b24315a302edd9153a01f753c3cba3d765e8eafac"
8326
8333
  dependencies = [
8327
8334
  "zstd-sys",
8328
8335
  ]
8329
8336
 
8330
8337
  [[package]]
8331
8338
  name = "zstd-sys"
8332
- version = "2.1.0+zstd.1.5.7"
8339
+ version = "2.1.1+zstd.1.5.7"
8333
8340
  source = "registry+https://github.com/rust-lang/crates.io-index"
8334
- checksum = "0ef0a8027ec3ee71300ab3bcbcd0393f434aa72b91ca6d635a39941deae8eea0"
8341
+ checksum = "aeec9eaf2dffbbd09201e23bd0ffcbaa33bb8e9266a10734fd7ed90a85eca078"
8335
8342
  dependencies = [
8336
8343
  "cc",
8337
8344
  "pkg-config",