mq-bridge-py-basic 0.4.7__tar.gz → 0.4.10__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 (316) hide show
  1. mq_bridge_py_basic-0.4.10/.cargo/config.toml +17 -0
  2. mq_bridge_py_basic-0.4.10/.dockerignore +18 -0
  3. mq_bridge_py_basic-0.4.10/.github/dependabot.yml +59 -0
  4. mq_bridge_py_basic-0.4.10/.github/workflows/app.yml +321 -0
  5. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/workflows/benchmark.yml +13 -13
  6. mq_bridge_py_basic-0.4.10/.github/workflows/build-node.yml +154 -0
  7. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/workflows/ci.yml +31 -11
  8. mq_bridge_py_basic-0.4.10/.github/workflows/conda.yml +60 -0
  9. mq_bridge_py_basic-0.4.10/.github/workflows/docs.yml +84 -0
  10. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/workflows/ibm-mq.yml +15 -6
  11. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/workflows/node.yml +9 -14
  12. mq_bridge_py_basic-0.4.10/.github/workflows/publish-node.yml +143 -0
  13. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/workflows/publish-python.yml +45 -16
  14. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/workflows/python.yml +11 -17
  15. mq_bridge_py_basic-0.4.10/.github/workflows/release.yml +1281 -0
  16. mq_bridge_py_basic-0.4.10/.github/workflows/test-matrix.yml +63 -0
  17. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.gitignore +8 -2
  18. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/CHANGELOG.md +137 -0
  19. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/CLAUDE.md +1 -0
  20. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/Cargo.lock +353 -258
  21. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/Cargo.toml +46 -11
  22. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/PKG-INFO +1 -1
  23. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/README.md +10 -7
  24. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/benches/ETL_BENCHMARKS.md +3 -3
  25. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/bindings-common/Cargo.toml +3 -0
  26. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/build.rs +15 -2
  27. mq_bridge_py_basic-0.4.10/docs/CONFIGURATION.md +719 -0
  28. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/docs/DELIVERY.md +2 -0
  29. mq_bridge_py_basic-0.4.10/docs/GRPC.md +263 -0
  30. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/docs/PLUGINS.md +1 -1
  31. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/docs/REFERENCE.md +60 -11
  32. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq-bridge.schema.json +295 -5
  33. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq_bridge/config.py +8 -0
  34. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq_bridge/config.pyi +40 -1
  35. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/Cargo.toml +3 -0
  36. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/analysis/http/mq_bridge_http_profile.rs +5 -0
  37. mq_bridge_py_basic-0.4.10/scripts/sync-version.mjs +193 -0
  38. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/checkpoint.rs +2 -0
  39. mq_bridge_py_basic-0.4.10/src/endpoints/dir_spool/mod.rs +1602 -0
  40. mq_bridge_py_basic-0.4.10/src/endpoints/dir_spool/tests.rs +1806 -0
  41. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/file/mod.rs +16 -2
  42. mq_bridge_py_basic-0.4.10/src/endpoints/grpc/consumer.rs +322 -0
  43. mq_bridge_py_basic-0.4.10/src/endpoints/grpc/dynamic.rs +859 -0
  44. mq_bridge_py_basic-0.4.10/src/endpoints/grpc/mod.rs +249 -0
  45. mq_bridge_py_basic-0.4.7/src/endpoints/grpc.proto → mq_bridge_py_basic-0.4.10/src/endpoints/grpc/proto/mqbridge/bridge.proto +11 -8
  46. mq_bridge_py_basic-0.4.10/src/endpoints/grpc/publisher.rs +254 -0
  47. mq_bridge_py_basic-0.4.10/src/endpoints/grpc/server.rs +1000 -0
  48. mq_bridge_py_basic-0.4.10/src/endpoints/grpc/tests.rs +1537 -0
  49. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/http/mod.rs +4 -26
  50. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/http/tests.rs +43 -5
  51. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/kafka.rs +164 -22
  52. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/endpoint.rs +90 -7
  53. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mod.rs +281 -8
  54. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mongodb/publisher.rs +16 -22
  55. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/object_store.rs +60 -2
  56. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/request.rs +292 -1
  57. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/stream_buffer.rs +125 -18
  58. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/zeromq/codec.rs +64 -0
  59. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/event_store.rs +44 -20
  60. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/lib.rs +1 -1
  61. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/cookie_jar.rs +103 -13
  62. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/encryption.rs +63 -8
  63. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/filter.rs +322 -27
  64. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/metrics.rs +47 -22
  65. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/retry.rs +8 -1
  66. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/weak_join.rs +13 -20
  67. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/models/builders.rs +43 -3
  68. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/models/defaults.rs +44 -0
  69. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/models/secrets.rs +52 -0
  70. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/models/serde_support.rs +3 -0
  71. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/models/tests.rs +39 -0
  72. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/models.rs +276 -12
  73. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/message.rs +9 -6
  74. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/sdk.rs +136 -116
  75. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/route.rs +390 -44
  76. mq_bridge_py_basic-0.4.10/src/support/compression.rs +360 -0
  77. mq_bridge_py_basic-0.4.10/src/support/compression_pool.rs +236 -0
  78. mq_bridge_py_basic-0.4.10/src/support/crypto.rs +554 -0
  79. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/crypto_envelope.rs +4 -0
  80. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/interpolation.rs +37 -0
  81. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/mod.rs +2 -0
  82. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/plugin_abi.rs +2 -2
  83. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/test_utils.rs +7 -0
  84. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/traits.rs +44 -0
  85. mq_bridge_py_basic-0.4.10/tests/compat/python/bridge_client.py +68 -0
  86. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/grpc_tls.rs +0 -2
  87. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/http.rs +1 -6
  88. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/http_tls.rs +1 -6
  89. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/websocket.rs +2 -6
  90. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/websocket_test.rs +1 -5
  91. mq_bridge_py_basic-0.4.7/.github/dependabot.yml +0 -20
  92. mq_bridge_py_basic-0.4.7/.github/workflows/publish-node.yml +0 -271
  93. mq_bridge_py_basic-0.4.7/.github/workflows/release.yml +0 -73
  94. mq_bridge_py_basic-0.4.7/.github/workflows/test-matrix.yml +0 -54
  95. mq_bridge_py_basic-0.4.7/docs/CONFIGURATION.md +0 -421
  96. mq_bridge_py_basic-0.4.7/src/endpoints/grpc.rs +0 -2347
  97. mq_bridge_py_basic-0.4.7/src/support/compression.rs +0 -179
  98. mq_bridge_py_basic-0.4.7/src/support/crypto.rs +0 -243
  99. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  100. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  101. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  102. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/CONTRIBUTING.md +0 -0
  103. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/LICENSE +0 -0
  104. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/LICENSE.python +0 -0
  105. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/SECURITY.md +0 -0
  106. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/benches/performance_bench.rs +0 -0
  107. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/benches/router_bench.rs +0 -0
  108. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/benches/zeromq_backends.rs +0 -0
  109. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/bindings-common/src/lib.rs +0 -0
  110. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/bindings-common/src/logging.rs +0 -0
  111. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/deny.toml +0 -0
  112. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/docs/ARCHITECTURE.md +0 -0
  113. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/docs/EXTENDING.md +0 -0
  114. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/examples/ipc_worker_queue.yaml +0 -0
  115. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq_bridge/__init__.py +0 -0
  116. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq_bridge/__init__.pyi +0 -0
  117. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq_bridge/plugin_packaging.py +0 -0
  118. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/mq_bridge/py.typed +0 -0
  119. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/package-lock.json +0 -0
  120. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/pyproject.toml +0 -0
  121. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/LICENSE.python +0 -0
  122. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/README.md +0 -0
  123. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/analysis/bench_http_native.py +0 -0
  124. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/example.py +0 -0
  125. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/bench_memory.py +0 -0
  126. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/bench_memory.yaml +0 -0
  127. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/consume_pull.py +0 -0
  128. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/dlt_source.py +0 -0
  129. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/json_route.py +0 -0
  130. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/memory.yaml +0 -0
  131. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/examples/raw_route.py +0 -0
  132. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/pyproject-basic.toml +0 -0
  133. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/pyproject-reduced.toml +0 -0
  134. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/scripts/gen_config_types.py +0 -0
  135. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/src/lib.rs +0 -0
  136. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_config_types.py +0 -0
  137. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_custom_endpoint.py +0 -0
  138. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_logging.py +0 -0
  139. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_packaging.py +0 -0
  140. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_performance_smoke.py +0 -0
  141. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_plugin_package.py +0 -0
  142. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_public_api.py +0 -0
  143. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/tests/test_routes.py +0 -0
  144. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/python/mq-bridge-py/uv.lock +0 -0
  145. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/analysis/benches/metadata_bench.rs +0 -0
  146. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/analysis/debug_ibm_mq_tls.rs +0 -0
  147. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/analysis/http/analyze_xctrace_time_profile.py +0 -0
  148. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/analysis/http/http_flamegraph.py +0 -0
  149. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/analysis/http/run_http_ladder.sh +0 -0
  150. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/ci/format_bench_output.sh +0 -0
  151. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/httparena/README.md +0 -0
  152. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/httparena/frameworks/mq-bridge-py/Dockerfile +0 -0
  153. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/httparena/frameworks/mq-bridge-py/meta.json +0 -0
  154. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/httparena/frameworks/mq-bridge-py/server.py +0 -0
  155. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/Python/mq-bridge-py/README.md +0 -0
  156. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/Python/mq-bridge-py/benchmark_config.json +0 -0
  157. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/Python/mq-bridge-py/mq-bridge-py.dockerfile +0 -0
  158. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/Python/mq-bridge-py/server.py +0 -0
  159. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/README.md +0 -0
  160. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/postgres.yml +0 -0
  161. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/seed.sql +0 -0
  162. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/techempower/verify.sh +0 -0
  163. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/the-benchmarker/README.md +0 -0
  164. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/the-benchmarker/python/mq-bridge-py/config.yaml +0 -0
  165. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/the-benchmarker/python/mq-bridge-py/pyproject.toml +0 -0
  166. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/scripts/the-benchmarker/python/mq-bridge-py/server.py +0 -0
  167. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/canonical_message.rs +0 -0
  168. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/command_handler.rs +0 -0
  169. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/amqp.rs +0 -0
  170. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/aws.rs +0 -0
  171. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/clickhouse.rs +0 -0
  172. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/file/tests.rs +0 -0
  173. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/http/publisher.rs +0 -0
  174. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/http/stream.rs +0 -0
  175. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/ibm_mq.rs +0 -0
  176. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/framed.rs +0 -0
  177. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/ipc_unix.rs +0 -0
  178. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/ipc_windows.rs +0 -0
  179. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/memory_transport.rs +0 -0
  180. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/mod.rs +0 -0
  181. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/memory/transport.rs +0 -0
  182. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mongodb/consumer.rs +0 -0
  183. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mongodb/dedup.rs +0 -0
  184. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mongodb/mod.rs +0 -0
  185. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mongodb/readers.rs +0 -0
  186. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mongodb/tests.rs +0 -0
  187. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/mqtt.rs +0 -0
  188. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/nats.rs +0 -0
  189. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/poll.rs +0 -0
  190. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/VENDORED.md +0 -0
  191. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/mod.rs +0 -0
  192. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/pgoutput/decoder.rs +0 -0
  193. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/pgoutput/messages.rs +0 -0
  194. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/pgoutput/mod.rs +0 -0
  195. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/pgoutput/registry.rs +0 -0
  196. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/pgoutput/values.rs +0 -0
  197. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/replication.rs +0 -0
  198. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/postgres/state.rs +0 -0
  199. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/redis_streams.rs +0 -0
  200. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/sled.rs +0 -0
  201. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/sqlx/dedup.rs +0 -0
  202. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/sqlx/mod.rs +0 -0
  203. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/sqlx/tests.rs +0 -0
  204. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/fanout.rs +0 -0
  205. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/mod.rs +0 -0
  206. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/null.rs +0 -0
  207. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/reader.rs +0 -0
  208. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/response.rs +0 -0
  209. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/static_endpoint.rs +0 -0
  210. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/structural/switch.rs +0 -0
  211. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/websocket.rs +0 -0
  212. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/zeromq/mod.rs +0 -0
  213. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/zeromq/omq.rs +0 -0
  214. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/endpoints/zeromq/zmq.rs +0 -0
  215. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/errors.rs +0 -0
  216. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/event_handler.rs +0 -0
  217. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/extensions.rs +0 -0
  218. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/buffer.rs +0 -0
  219. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/compression.rs +0 -0
  220. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/deduplication.rs +0 -0
  221. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/deferred_commit.rs +0 -0
  222. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/delay.rs +0 -0
  223. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/dlq.rs +0 -0
  224. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/id.rs +0 -0
  225. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/limiter.rs +0 -0
  226. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/mod.rs +0 -0
  227. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/random_panic.rs +0 -0
  228. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/raw_json.rs +0 -0
  229. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/coerce.rs +0 -0
  230. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/compiled.rs +0 -0
  231. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/error.rs +0 -0
  232. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/mod.rs +0 -0
  233. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/path.rs +0 -0
  234. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/schema.rs +0 -0
  235. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/middleware/transform/tests.rs +0 -0
  236. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/outcomes.rs +0 -0
  237. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/conformance.rs +0 -0
  238. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/endpoint.rs +0 -0
  239. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/middleware.rs +0 -0
  240. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/mod.rs +0 -0
  241. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/plugin/test_support.rs +0 -0
  242. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/publisher.rs +0 -0
  243. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/response.rs +0 -0
  244. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/base64_engine.rs +0 -0
  245. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/connection_registry.rs +0 -0
  246. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/support/source_ranges.rs +0 -0
  247. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/src/type_handler.rs +0 -0
  248. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/README.md +0 -0
  249. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/armature_integration.rs +0 -0
  250. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/amqp.rs +0 -0
  251. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/aws.rs +0 -0
  252. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/clickhouse.rs +0 -0
  253. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/config.toml +0 -0
  254. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/amqp.yml +0 -0
  255. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/aws.yml +0 -0
  256. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/clickhouse.yml +0 -0
  257. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm-mq-certs/client.crl +0 -0
  258. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm-mq-certs/client.kdb +0 -0
  259. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm-mq-certs/client.p12 +0 -0
  260. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm-mq-certs/client.rdb +0 -0
  261. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm-mq-certs/client.sth +0 -0
  262. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm_mq.yml +0 -0
  263. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/ibm_mq_tls.yml +0 -0
  264. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/kafka-tls.yml +0 -0
  265. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/kafka.yml +0 -0
  266. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mariadb.yml +0 -0
  267. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mongodb-replica.yml +0 -0
  268. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mongodb-tls.yml +0 -0
  269. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mongodb.yml +0 -0
  270. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mosquitto.conf +0 -0
  271. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mosquitto_performance.conf +0 -0
  272. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mosquitto_persistence.conf +0 -0
  273. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mq_init.mqsc +0 -0
  274. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mq_init_tls.mqsc +0 -0
  275. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mqtt.yml +0 -0
  276. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mqtt_performance.yml +0 -0
  277. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/mysql.yml +0 -0
  278. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/nats.yml +0 -0
  279. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/object_store.yml +0 -0
  280. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/postgres.yml +0 -0
  281. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/postgres_cdc.yml +0 -0
  282. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/docker-compose/redis.yml +0 -0
  283. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/file.rs +0 -0
  284. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/grpc.rs +0 -0
  285. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/ibm_mq.rs +0 -0
  286. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/ibm_mq_tls.rs +0 -0
  287. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/ipc.rs +0 -0
  288. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/kafka.rs +0 -0
  289. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/kafka_tls.rs +0 -0
  290. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/logic_test.rs +0 -0
  291. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mariadb.rs +0 -0
  292. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/memory.rs +0 -0
  293. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mod.rs +0 -0
  294. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mongodb.rs +0 -0
  295. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mongodb_raw.rs +0 -0
  296. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mongodb_tls.rs +0 -0
  297. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mqtt.rs +0 -0
  298. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/mysql.rs +0 -0
  299. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/nats.rs +0 -0
  300. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/object_store.rs +0 -0
  301. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/performance_static.rs +0 -0
  302. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/postgres.rs +0 -0
  303. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/postgres_cdc.rs +0 -0
  304. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/redis_streams.rs +0 -0
  305. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/route.rs +0 -0
  306. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/scripts/gen_certs.sh +0 -0
  307. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/sqlite.rs +0 -0
  308. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/tls_helpers.rs +0 -0
  309. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration/zeromq.rs +0 -0
  310. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/integration_test.rs +0 -0
  311. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/memory_leak_test.rs +0 -0
  312. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/ref_test.rs +0 -0
  313. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/reference_docs_test.rs +0 -0
  314. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/sqlite_test.rs +0 -0
  315. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/tls_example.rs +0 -0
  316. {mq_bridge_py_basic-0.4.7 → mq_bridge_py_basic-0.4.10}/tests/unit_tests.md +0 -0
@@ -0,0 +1,17 @@
1
+ # Workspace-wide Cargo config. Cargo discovers this file from the *current
2
+ # directory* upward, not from the manifest, so it is what applies to every
3
+ # build invoked from the repository root — CI, Docker, and plain local
4
+ # `cargo build`. The app keeps its own path-scoped config for the settings
5
+ # that must only affect app-cwd builds (see apps/mq-bridge-app/.cargo/config.toml).
6
+
7
+ [env]
8
+ # librdkafka's CMakeLists declares cmake_minimum_required(3.2), which cmake 4
9
+ # refuses. rdkafka-sys is reachable from the engine's kafka feature and from
10
+ # every app build, so this belongs at the root.
11
+ CMAKE_ARGS = "-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
12
+
13
+ # Pinned explicitly so a --manifest-path build of the app workspace still writes
14
+ # here instead of defaulting to apps/mq-bridge-app/target. One target dir for the
15
+ # engine, the app, tauri and maturin.
16
+ [build]
17
+ target-dir = "target"
@@ -0,0 +1,18 @@
1
+ .git
2
+ .serena
3
+ .tokensave
4
+ logs
5
+ target
6
+ **/target
7
+ **/node_modules
8
+ apps/mq-bridge-app/dev/docs/book
9
+
10
+ # Local build output
11
+ **/.venv
12
+ **/__pycache__
13
+ **/*.so
14
+ **/*.node
15
+ **/*.whl
16
+ python/mq-bridge-py/dist
17
+ apps/mq-bridge-app/test-results
18
+ apps/mq-bridge-app/playwright-report
@@ -0,0 +1,59 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "cargo" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ target-branch: "dev"
11
+ schedule:
12
+ interval: "monthly"
13
+ groups:
14
+ minor-and-patch:
15
+ applies-to: version-updates
16
+ patterns:
17
+ - "*"
18
+ update-types:
19
+ - "minor"
20
+ - "patch"
21
+
22
+ # The app workspace has its own Cargo.lock, so the "/" cargo entry above does
23
+ # not reach it. Without this, app dependencies would never be updated.
24
+ - package-ecosystem: "cargo"
25
+ directory: "/apps/mq-bridge-app"
26
+ target-branch: "dev"
27
+ schedule:
28
+ interval: "weekly"
29
+ groups:
30
+ app-minor-and-patch:
31
+ applies-to: version-updates
32
+ patterns:
33
+ - "*"
34
+ update-types:
35
+ - "minor"
36
+ - "patch"
37
+
38
+ - package-ecosystem: "npm"
39
+ directory: "/apps/mq-bridge-app"
40
+ target-branch: "dev"
41
+ schedule:
42
+ interval: "weekly"
43
+ groups:
44
+ npm-minor-patch:
45
+ applies-to: version-updates
46
+ update-types:
47
+ - "minor"
48
+ - "patch"
49
+
50
+ - package-ecosystem: "github-actions"
51
+ directory: "/"
52
+ target-branch: "dev"
53
+ schedule:
54
+ interval: "weekly"
55
+ groups:
56
+ github-actions:
57
+ applies-to: version-updates
58
+ patterns:
59
+ - "*"
@@ -0,0 +1,321 @@
1
+ name: App CI
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main, dev]
6
+ paths:
7
+ - "Cargo.toml"
8
+ - "Cargo.lock"
9
+ - "src/**"
10
+ - "apps/mq-bridge-app/**"
11
+ - ".github/workflows/app.yml"
12
+ # Called by release.yml so a tag runs the same app gate a PR does, rather
13
+ # than a second copy of it that can drift.
14
+ workflow_call:
15
+ workflow_dispatch:
16
+ inputs:
17
+ update_visual_baselines:
18
+ description: "Re-render the Linux screenshot baselines and upload them as an artifact"
19
+ type: boolean
20
+ default: false
21
+
22
+ permissions:
23
+ contents: read
24
+
25
+ concurrency:
26
+ group: ${{ github.workflow }}-${{ github.ref }}
27
+ cancel-in-progress: true
28
+
29
+ jobs:
30
+ rust:
31
+ name: App Rust
32
+ runs-on: ubuntu-latest
33
+ steps:
34
+ - uses: actions/checkout@v7
35
+
36
+ - name: Install Rust toolchain
37
+ uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
38
+ with:
39
+ components: clippy
40
+
41
+ - name: Cache cargo build
42
+ uses: Swatinem/rust-cache@v2
43
+ with:
44
+ # One cache for every app job: rust, ui and both integration
45
+ # shards compile the same crates at the same features.
46
+ shared-key: app
47
+ # rust-cache resolves its workspace at the repo root, so by default it
48
+ # purges every crate whose manifest lives under it -- mq-bridge itself
49
+ # included. Without this each app job recompiles the engine from
50
+ # scratch; only registry deps would survive.
51
+ cache-workspace-crates: true
52
+
53
+ - name: Install system dependencies
54
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev pkg-config zlib1g-dev protobuf-compiler libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
55
+
56
+ - name: Test desktop crate
57
+ working-directory: apps/mq-bridge-app
58
+ run: cargo test -p mq-bridge-app-desktop --lib
59
+
60
+ - name: Check app crates
61
+ working-directory: apps/mq-bridge-app
62
+ run: cargo check -p mq-bridge-app-core -p mq-bridge-app --all-targets
63
+
64
+ - name: Lint app crates
65
+ working-directory: apps/mq-bridge-app
66
+ run: cargo clippy -p mq-bridge-app-core -p mq-bridge-app --all-targets -- -D warnings
67
+
68
+ - name: Test app crates
69
+ working-directory: apps/mq-bridge-app
70
+ run: cargo test -p mq-bridge-app-core -p mq-bridge-app --lib --bins
71
+
72
+ # The app resolves its own Cargo.lock, so the engine's supply-chain job in
73
+ # ci.yml does not cover it. Same policy, plus the Tauri-tree exceptions.
74
+ - name: Licenses / bans / sources
75
+ uses: EmbarkStudios/cargo-deny-action@v2
76
+ with:
77
+ manifest-path: apps/mq-bridge-app/Cargo.toml
78
+ command: check bans licenses sources
79
+
80
+ # Informational, same policy as the engine's supply-chain job in ci.yml:
81
+ # the app resolves its own Cargo.lock, so deny.toml's advisory ignores are
82
+ # only actually exercised if this runs.
83
+ - name: Advisories (informational)
84
+ continue-on-error: true
85
+ uses: EmbarkStudios/cargo-deny-action@v2
86
+ with:
87
+ manifest-path: apps/mq-bridge-app/Cargo.toml
88
+ command: check advisories
89
+
90
+ ui:
91
+ name: App UI
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - uses: actions/checkout@v7
95
+
96
+ - name: Install Rust toolchain
97
+ uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
98
+
99
+ - name: Cache cargo build
100
+ uses: Swatinem/rust-cache@v2
101
+ with:
102
+ # One cache for every app job: rust, ui and both integration
103
+ # shards compile the same crates at the same features.
104
+ shared-key: app
105
+ # rust-cache resolves its workspace at the repo root, so by default it
106
+ # purges every crate whose manifest lives under it -- mq-bridge itself
107
+ # included. Without this each app job recompiles the engine from
108
+ # scratch; only registry deps would survive.
109
+ cache-workspace-crates: true
110
+
111
+ - name: Setup Node.js
112
+ uses: actions/setup-node@v7
113
+ with:
114
+ node-version: lts/*
115
+ cache: npm
116
+ cache-dependency-path: apps/mq-bridge-app/package-lock.json
117
+
118
+ - name: Install system dependencies
119
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev pkg-config zlib1g-dev protobuf-compiler
120
+
121
+ - name: Install frontend dependencies
122
+ working-directory: apps/mq-bridge-app
123
+ run: npm ci
124
+
125
+ - name: Run frontend unit tests
126
+ working-directory: apps/mq-bridge-app
127
+ run: npm run test:unit
128
+
129
+ - name: Install Playwright browsers
130
+ working-directory: apps/mq-bridge-app
131
+ # firefox and webkit run only the cross-browser specs (see
132
+ # playwright.config.js), which is where engine-specific form-control
133
+ # behaviour has bitten before.
134
+ run: npx playwright install --with-deps chromium firefox webkit
135
+
136
+ - name: Build app binary for UI tests
137
+ working-directory: apps/mq-bridge-app
138
+ run: cargo build -p mq-bridge-app --bin mq-bridge-app
139
+
140
+ - name: Run frontend UI tests
141
+ working-directory: apps/mq-bridge-app
142
+ run: npm run test:ui
143
+
144
+ # The screenshot suite skips itself while this platform has no committed
145
+ # baseline. Run this workflow manually with update_visual_baselines=true to
146
+ # render them here, then review and commit the artifact.
147
+ - name: Re-render visual baselines
148
+ if: inputs.update_visual_baselines
149
+ working-directory: apps/mq-bridge-app
150
+ run: npm run build:ui && npx playwright test ui-visual.spec.js --update-snapshots=all || true
151
+
152
+ - name: Upload visual baselines
153
+ if: inputs.update_visual_baselines
154
+ uses: actions/upload-artifact@v7
155
+ with:
156
+ name: visual-baselines-linux
157
+ path: apps/mq-bridge-app/tests/playwright/ui-visual.spec.js-snapshots/
158
+ if-no-files-found: warn
159
+
160
+ - name: Upload Playwright test artifacts
161
+ if: failure()
162
+ uses: actions/upload-artifact@v7
163
+ with:
164
+ name: playwright-test-results
165
+ path: |
166
+ apps/mq-bridge-app/test-results/
167
+ apps/mq-bridge-app/playwright-report/
168
+ if-no-files-found: ignore
169
+
170
+ integration:
171
+ name: App integration (${{ matrix.target }})
172
+ runs-on: ubuntu-latest
173
+ strategy:
174
+ fail-fast: false
175
+ matrix:
176
+ target: [cli_copy_test, web_ui_test]
177
+ steps:
178
+ - uses: actions/checkout@v7
179
+
180
+ - name: Install Rust toolchain
181
+ uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
182
+
183
+ - name: Cache cargo build
184
+ uses: Swatinem/rust-cache@v2
185
+ with:
186
+ # One cache for every app job: rust, ui and both integration
187
+ # shards compile the same crates at the same features.
188
+ shared-key: app
189
+ # rust-cache resolves its workspace at the repo root, so by default it
190
+ # purges every crate whose manifest lives under it -- mq-bridge itself
191
+ # included. Without this each app job recompiles the engine from
192
+ # scratch; only registry deps would survive.
193
+ cache-workspace-crates: true
194
+
195
+ - name: Install system dependencies
196
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev pkg-config zlib1g-dev protobuf-compiler
197
+
198
+ - name: Run integration suite
199
+ working-directory: apps/mq-bridge-app
200
+ run: cargo test -p mq-bridge-app --test ${{ matrix.target }}
201
+
202
+ # Compile the docker suite ONCE. Nine runners each rebuilding the engine cost
203
+ # ~25 runner-minutes for ~3 minutes of tests, and held slots the rest of the
204
+ # matrix was queuing for.
205
+ docker-build:
206
+ name: App docker — Build
207
+ runs-on: ubuntu-latest
208
+ steps:
209
+ - uses: actions/checkout@v7
210
+
211
+ - name: Install Rust toolchain
212
+ uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
213
+
214
+ - name: Cache cargo build
215
+ uses: Swatinem/rust-cache@v2
216
+ with:
217
+ # One cache for every app job: rust, ui and both integration
218
+ # shards compile the same crates at the same features.
219
+ shared-key: app
220
+ # rust-cache resolves its workspace at the repo root, so by default it
221
+ # purges every crate whose manifest lives under it -- mq-bridge itself
222
+ # included. Without this each app job recompiles the engine from
223
+ # scratch; only registry deps would survive.
224
+ cache-workspace-crates: true
225
+
226
+ - name: Install system dependencies
227
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev pkg-config zlib1g-dev protobuf-compiler
228
+
229
+ # The test drives the CLI through `env!("CARGO_BIN_EXE_mq-bridge-app")`, an
230
+ # absolute path baked in at compile time. Every ubuntu-latest runner checks
231
+ # out to the same path, so shipping the binaries where they were built is
232
+ # what keeps that resolvable in the jobs below.
233
+ #
234
+ # cargo reports the binary it just built; a restored cache can leave several
235
+ # older `cli_copy_docker_test-<hash>` files next to it, so globbing deps/
236
+ # would pick an arbitrary one.
237
+ - name: Build the docker test binary
238
+ working-directory: apps/mq-bridge-app
239
+ shell: bash
240
+ run: |
241
+ cargo test -p mq-bridge-app --test cli_copy_docker_test --no-run \
242
+ --message-format=json > "$RUNNER_TEMP/build.json"
243
+ jq -r 'select(.target.name == "cli_copy_docker_test") | .executable // empty' \
244
+ "$RUNNER_TEMP/build.json" | tail -1 > "$RUNNER_TEMP/test-binary"
245
+ jq -r 'select(.target.name == "mq-bridge-app"
246
+ and (.target.kind // [] | index("bin"))) | .executable // empty' \
247
+ "$RUNNER_TEMP/build.json" | tail -1 > "$RUNNER_TEMP/cli-binary"
248
+ test -s "$RUNNER_TEMP/test-binary" && test -s "$RUNNER_TEMP/cli-binary"
249
+
250
+ - name: Collect binaries
251
+ shell: bash
252
+ run: |
253
+ mkdir -p docker-suite
254
+ cp "$(cat "$RUNNER_TEMP/test-binary")" docker-suite/test-binary
255
+ cp "$(cat "$RUNNER_TEMP/cli-binary")" docker-suite/mq-bridge-app
256
+ cp "$RUNNER_TEMP/cli-binary" docker-suite/cli-path
257
+
258
+ - name: Upload docker suite binaries
259
+ uses: actions/upload-artifact@v7
260
+ with:
261
+ name: app-docker-suite
262
+ path: docker-suite
263
+ retention-days: 1
264
+
265
+ # One backend per runner, so the servers never compete for memory or for the
266
+ # fixed host ports the test URIs use. `run_docker_tests.sh` does the same loop
267
+ # locally, one at a time.
268
+ docker:
269
+ name: App docker (${{ matrix.backend }})
270
+ runs-on: ubuntu-latest
271
+ needs: docker-build
272
+ strategy:
273
+ fail-fast: false
274
+ matrix:
275
+ backend:
276
+ [postgres, mysql, mariadb, kafka, nats, mongodb, redis, amqp, mqtt]
277
+ steps:
278
+ - uses: actions/checkout@v7
279
+
280
+ - name: Download docker suite binaries
281
+ uses: actions/download-artifact@v8
282
+ with:
283
+ name: app-docker-suite
284
+ path: docker-suite
285
+
286
+ # upload-artifact drops the executable bit, and the CLI has to land back at
287
+ # the exact path compiled into the test binary.
288
+ - name: Restore binaries
289
+ shell: bash
290
+ run: |
291
+ cli="$(cat docker-suite/cli-path)"
292
+ mkdir -p "$(dirname "$cli")"
293
+ mv docker-suite/mq-bridge-app "$cli"
294
+ chmod +x "$cli" docker-suite/test-binary
295
+
296
+ - name: Install runtime libraries
297
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev zlib1g-dev
298
+
299
+ # The engine's own integration stacks, so there is one definition per
300
+ # service rather than a second copy that can drift.
301
+ - name: Start ${{ matrix.backend }}
302
+ run: docker compose -f tests/integration/docker-compose/${{ matrix.backend }}.yml up -d --wait --wait-timeout 300
303
+
304
+ # The backend name filters the test names as well as MQB_TEST_BACKEND:
305
+ # `backend!` skips by returning, so without the name filter every excluded
306
+ # test still reports `ok` and a broken service would look green.
307
+ - name: Run ${{ matrix.backend }} tests
308
+ # `shell: bash` for pipefail: the default shell would take `tee`'s exit
309
+ # status and report a failing test run as a pass.
310
+ shell: bash
311
+ env:
312
+ MQB_TEST_BACKEND: ${{ matrix.backend }}
313
+ run: |
314
+ ./docker-suite/test-binary \
315
+ --ignored --test-threads=1 ${{ matrix.backend }} 2>&1 | tee result.log
316
+ grep -qE 'test result: ok\. [1-9]' result.log \
317
+ || { echo "no ${{ matrix.backend }} tests ran"; exit 1; }
318
+
319
+ - name: Service logs
320
+ if: failure()
321
+ run: docker compose -f tests/integration/docker-compose/${{ matrix.backend }}.yml logs --tail 200
@@ -20,7 +20,7 @@ jobs:
20
20
  permissions:
21
21
  contents: read
22
22
  steps:
23
- - uses: actions/checkout@v4
23
+ - uses: actions/checkout@v7
24
24
  with:
25
25
  persist-credentials: false
26
26
 
@@ -44,7 +44,7 @@ jobs:
44
44
  cp "$BIN_PATH" ./performance_bench_bin
45
45
 
46
46
  - name: Upload bench binary
47
- uses: actions/upload-artifact@v4
47
+ uses: actions/upload-artifact@v7
48
48
  with:
49
49
  name: performance-bench-bin
50
50
  path: performance_bench_bin
@@ -60,12 +60,12 @@ jobs:
60
60
  permissions:
61
61
  contents: read
62
62
  steps:
63
- - uses: actions/checkout@v4
63
+ - uses: actions/checkout@v7
64
64
  with:
65
65
  persist-credentials: false
66
66
 
67
67
  - name: Download bench binary
68
- uses: actions/download-artifact@v4
68
+ uses: actions/download-artifact@v8
69
69
  with:
70
70
  name: performance-bench-bin
71
71
 
@@ -87,7 +87,7 @@ jobs:
87
87
  ./scripts/ci/format_bench_output.sh raw_output_streams.txt output_streams.txt
88
88
 
89
89
  - name: Upload shard output
90
- uses: actions/upload-artifact@v4
90
+ uses: actions/upload-artifact@v7
91
91
  with:
92
92
  name: bench-output-streams
93
93
  path: |
@@ -102,12 +102,12 @@ jobs:
102
102
  permissions:
103
103
  contents: read
104
104
  steps:
105
- - uses: actions/checkout@v4
105
+ - uses: actions/checkout@v7
106
106
  with:
107
107
  persist-credentials: false
108
108
 
109
109
  - name: Download bench binary
110
- uses: actions/download-artifact@v4
110
+ uses: actions/download-artifact@v8
111
111
  with:
112
112
  name: performance-bench-bin
113
113
 
@@ -129,7 +129,7 @@ jobs:
129
129
  ./scripts/ci/format_bench_output.sh raw_output_database.txt output_database.txt
130
130
 
131
131
  - name: Upload shard output
132
- uses: actions/upload-artifact@v4
132
+ uses: actions/upload-artifact@v7
133
133
  with:
134
134
  name: bench-output-database
135
135
  path: |
@@ -144,12 +144,12 @@ jobs:
144
144
  permissions:
145
145
  contents: read
146
146
  steps:
147
- - uses: actions/checkout@v4
147
+ - uses: actions/checkout@v7
148
148
  with:
149
149
  persist-credentials: false
150
150
 
151
151
  - name: Download bench binary
152
- uses: actions/download-artifact@v4
152
+ uses: actions/download-artifact@v8
153
153
  with:
154
154
  name: performance-bench-bin
155
155
 
@@ -165,7 +165,7 @@ jobs:
165
165
  ./scripts/ci/format_bench_output.sh raw_output_dockerless.txt output_dockerless.txt
166
166
 
167
167
  - name: Upload shard output
168
- uses: actions/upload-artifact@v4
168
+ uses: actions/upload-artifact@v7
169
169
  with:
170
170
  name: bench-output-dockerless
171
171
  path: |
@@ -188,10 +188,10 @@ jobs:
188
188
  contents: write
189
189
  deployments: write
190
190
  steps:
191
- - uses: actions/checkout@v4
191
+ - uses: actions/checkout@v7
192
192
 
193
193
  - name: Download shard outputs
194
- uses: actions/download-artifact@v4
194
+ uses: actions/download-artifact@v8
195
195
  with:
196
196
  pattern: bench-output-*
197
197
  merge-multiple: true
@@ -0,0 +1,154 @@
1
+ name: Build Node Addons
2
+
3
+ # Builds the napi-rs addon for every published platform and uploads them as
4
+ # run artifacts (`bindings-<target>` plus a single `loader`). publish-node.yml
5
+ # consumes those artifacts and does the actual npm publish.
6
+ #
7
+ # Split from publish-node.yml so release.yml can start these builds as soon as
8
+ # the test gate is green, in parallel with the docker and bundle builds, while
9
+ # the upload still waits for the GitHub release to go public.
10
+ #
11
+ # Linux is built inside a Debian 11 (glibc 2.31) container so the binaries run on
12
+ # RHEL 9 (glibc 2.34), Debian 11/12 and Ubuntu 20.04+ - covering the priority
13
+ # server targets. macOS/Windows build natively.
14
+
15
+ on:
16
+ workflow_call:
17
+ workflow_dispatch:
18
+
19
+ env:
20
+ CARGO_TERM_COLOR: always
21
+
22
+ jobs:
23
+ build-linux:
24
+ name: Build ${{ matrix.target }}
25
+ runs-on: ${{ matrix.runner }}
26
+ permissions:
27
+ contents: read
28
+ container:
29
+ # Debian 11 bullseye => glibc 2.31 baseline (runs on RHEL 9 / Debian 11+ /
30
+ # Ubuntu 20.04+). Pulled natively per arch on the matching runner.
31
+ image: node:20-bullseye
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ include:
36
+ - runner: ubuntu-22.04
37
+ target: x86_64-unknown-linux-gnu
38
+ - runner: ubuntu-22.04-arm
39
+ target: aarch64-unknown-linux-gnu
40
+ steps:
41
+ - uses: actions/checkout@v7
42
+
43
+ # rdkafka builds librdkafka from source (cc/make) and aws-lc-sys needs
44
+ # cmake; the slim node image lacks these.
45
+ - name: Install build toolchain
46
+ run: |
47
+ apt-get update -qq
48
+ apt-get install -y --no-install-recommends build-essential cmake perl pkg-config
49
+
50
+ - name: Install Rust toolchain
51
+ run: |
52
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
53
+ echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
54
+
55
+ # Regenerate package.json/lock from the Cargo workspace version (source of
56
+ # truth) BEFORE npm ci, so a drifted committed lock can't fail the build.
57
+ - name: Sync version from Cargo workspace
58
+ working-directory: node/mq-bridge-node
59
+ run: npm run sync-version
60
+
61
+ - name: Install Node dependencies
62
+ working-directory: node/mq-bridge-node
63
+ run: npm ci
64
+
65
+ - name: Build native addon (full)
66
+ working-directory: node/mq-bridge-node
67
+ env:
68
+ CARGO_NET_RETRY: "5"
69
+ CARGO_NET_GIT_FETCH_WITH_CLI: "true"
70
+ # curl's HTTP/2 multiplexing flakes on Windows runners ("[55] Failed
71
+ # sending data to the peer"); force HTTP/1.1 so fetches are reliable.
72
+ CARGO_HTTP_MULTIPLEXING: "false"
73
+ run: >-
74
+ npx napi build --platform --release --strip
75
+ --target ${{ matrix.target }}
76
+ --js native.js --dts native.d.ts
77
+
78
+ - name: Upload addon
79
+ uses: actions/upload-artifact@v7
80
+ with:
81
+ name: bindings-${{ matrix.target }}
82
+ path: node/mq-bridge-node/*.node
83
+ if-no-files-found: error
84
+
85
+ # The root package ships the generated loader; upload it once.
86
+ - name: Upload loader
87
+ if: matrix.target == 'x86_64-unknown-linux-gnu'
88
+ uses: actions/upload-artifact@v7
89
+ with:
90
+ name: loader
91
+ path: |
92
+ node/mq-bridge-node/native.js
93
+ node/mq-bridge-node/native.d.ts
94
+ if-no-files-found: error
95
+
96
+ build-native:
97
+ name: Build ${{ matrix.target }}
98
+ runs-on: ${{ matrix.runner }}
99
+ permissions:
100
+ contents: read
101
+ strategy:
102
+ fail-fast: false
103
+ matrix:
104
+ include:
105
+ - runner: macos-15-intel
106
+ target: x86_64-apple-darwin
107
+ - runner: macos-latest
108
+ target: aarch64-apple-darwin
109
+ - runner: windows-latest
110
+ target: x86_64-pc-windows-msvc
111
+ steps:
112
+ - uses: actions/checkout@v7
113
+
114
+ - name: Set up Node
115
+ uses: actions/setup-node@v7
116
+ with:
117
+ node-version: "20"
118
+ cache: npm
119
+ cache-dependency-path: node/mq-bridge-node/package-lock.json
120
+
121
+ - name: Install Rust toolchain
122
+ uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
123
+ with:
124
+ targets: ${{ matrix.target }}
125
+
126
+ # Regenerate package.json/lock from the Cargo workspace version (source of
127
+ # truth) BEFORE npm ci, so a drifted committed lock can't fail the build.
128
+ - name: Sync version from Cargo workspace
129
+ working-directory: node/mq-bridge-node
130
+ run: npm run sync-version
131
+
132
+ - name: Install Node dependencies
133
+ working-directory: node/mq-bridge-node
134
+ run: npm ci
135
+
136
+ - name: Build native addon (full)
137
+ working-directory: node/mq-bridge-node
138
+ env:
139
+ CARGO_NET_RETRY: "5"
140
+ CARGO_NET_GIT_FETCH_WITH_CLI: "true"
141
+ # curl's HTTP/2 multiplexing flakes on Windows runners ("[55] Failed
142
+ # sending data to the peer"); force HTTP/1.1 so fetches are reliable.
143
+ CARGO_HTTP_MULTIPLEXING: "false"
144
+ run: >-
145
+ npx napi build --platform --release --strip
146
+ --target ${{ matrix.target }}
147
+ --js native.js --dts native.d.ts
148
+
149
+ - name: Upload addon
150
+ uses: actions/upload-artifact@v7
151
+ with:
152
+ name: bindings-${{ matrix.target }}
153
+ path: node/mq-bridge-node/*.node
154
+ if-no-files-found: error