jetstream_bridge 4.0.4 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +106 -0
  3. data/README.md +22 -1402
  4. data/docs/GETTING_STARTED.md +92 -0
  5. data/docs/PRODUCTION.md +503 -0
  6. data/docs/TESTING.md +414 -0
  7. data/lib/jetstream_bridge/consumer/consumer.rb +101 -5
  8. data/lib/jetstream_bridge/consumer/inbox/inbox_processor.rb +17 -3
  9. data/lib/jetstream_bridge/consumer/inbox/inbox_repository.rb +19 -7
  10. data/lib/jetstream_bridge/consumer/message_processor.rb +88 -52
  11. data/lib/jetstream_bridge/consumer/subscription_manager.rb +24 -15
  12. data/lib/jetstream_bridge/core/bridge_helpers.rb +85 -0
  13. data/lib/jetstream_bridge/core/config.rb +27 -4
  14. data/lib/jetstream_bridge/core/connection.rb +162 -13
  15. data/lib/jetstream_bridge/core.rb +8 -0
  16. data/lib/jetstream_bridge/models/inbox_event.rb +13 -7
  17. data/lib/jetstream_bridge/models/outbox_event.rb +2 -2
  18. data/lib/jetstream_bridge/publisher/publisher.rb +10 -5
  19. data/lib/jetstream_bridge/rails/integration.rb +153 -0
  20. data/lib/jetstream_bridge/rails/railtie.rb +53 -0
  21. data/lib/jetstream_bridge/rails.rb +5 -0
  22. data/lib/jetstream_bridge/tasks/install.rake +1 -1
  23. data/lib/jetstream_bridge/test_helpers/fixtures.rb +41 -0
  24. data/lib/jetstream_bridge/test_helpers/integration_helpers.rb +77 -0
  25. data/lib/jetstream_bridge/test_helpers/matchers.rb +98 -0
  26. data/lib/jetstream_bridge/test_helpers/mock_nats.rb +524 -0
  27. data/lib/jetstream_bridge/test_helpers.rb +85 -121
  28. data/lib/jetstream_bridge/topology/overlap_guard.rb +46 -0
  29. data/lib/jetstream_bridge/topology/stream.rb +7 -4
  30. data/lib/jetstream_bridge/version.rb +1 -1
  31. data/lib/jetstream_bridge.rb +138 -63
  32. metadata +32 -12
  33. data/lib/jetstream_bridge/railtie.rb +0 -49
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jetstream_bridge
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.4
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Attara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-23 00:00:00.000000000 Z
11
+ date: 2025-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -68,16 +68,22 @@ dependencies:
68
68
  name: nats-pure
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - "~>"
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 2.4.0
74
+ - - "<"
72
75
  - !ruby/object:Gem::Version
73
- version: '2.4'
76
+ version: '3.0'
74
77
  type: :runtime
75
78
  prerelease: false
76
79
  version_requirements: !ruby/object:Gem::Requirement
77
80
  requirements:
78
- - - "~>"
81
+ - - ">="
79
82
  - !ruby/object:Gem::Version
80
- version: '2.4'
83
+ version: 2.4.0
84
+ - - "<"
85
+ - !ruby/object:Gem::Version
86
+ version: '3.0'
81
87
  - !ruby/object:Gem::Dependency
82
88
  name: oj
83
89
  requirement: !ruby/object:Gem::Requirement
@@ -99,19 +105,25 @@ dependencies:
99
105
  - !ruby/object:Gem::Version
100
106
  version: '4.0'
101
107
  description: |-
102
- Publisher/Consumer utilities for NATS JetStream with environment-scoped subjects,
103
- overlap guards, DLQ routing, retries/backoff, and optional Inbox/Outbox patterns.
104
- Includes health checks, auto-reconnection, graceful shutdown, and topology setup
105
- helpers for production-safe operation.
108
+ Production-ready publishers/consumers for NATS JetStream with environment-scoped
109
+ subjects, overlap guards, DLQ routing, retries/backoff, and optional inbox/outbox
110
+ patterns. Includes health checks, auto-reconnection, graceful shutdown, topology
111
+ setup helpers, and Rails generators.
106
112
  email:
107
113
  - mpyebattara@gmail.com
108
114
  executables: []
109
115
  extensions: []
110
- extra_rdoc_files: []
116
+ extra_rdoc_files:
117
+ - README.md
118
+ - CHANGELOG.md
119
+ - docs/GETTING_STARTED.md
111
120
  files:
112
121
  - CHANGELOG.md
113
122
  - LICENSE
114
123
  - README.md
124
+ - docs/GETTING_STARTED.md
125
+ - docs/PRODUCTION.md
126
+ - docs/TESTING.md
115
127
  - lib/generators/jetstream_bridge/health_check/health_check_generator.rb
116
128
  - lib/generators/jetstream_bridge/health_check/templates/health_controller.rb
117
129
  - lib/generators/jetstream_bridge/initializer/initializer_generator.rb
@@ -129,6 +141,8 @@ files:
129
141
  - lib/jetstream_bridge/consumer/message_processor.rb
130
142
  - lib/jetstream_bridge/consumer/middleware.rb
131
143
  - lib/jetstream_bridge/consumer/subscription_manager.rb
144
+ - lib/jetstream_bridge/core.rb
145
+ - lib/jetstream_bridge/core/bridge_helpers.rb
132
146
  - lib/jetstream_bridge/core/config.rb
133
147
  - lib/jetstream_bridge/core/config_preset.rb
134
148
  - lib/jetstream_bridge/core/connection.rb
@@ -149,9 +163,15 @@ files:
149
163
  - lib/jetstream_bridge/publisher/batch_publisher.rb
150
164
  - lib/jetstream_bridge/publisher/outbox_repository.rb
151
165
  - lib/jetstream_bridge/publisher/publisher.rb
152
- - lib/jetstream_bridge/railtie.rb
166
+ - lib/jetstream_bridge/rails.rb
167
+ - lib/jetstream_bridge/rails/integration.rb
168
+ - lib/jetstream_bridge/rails/railtie.rb
153
169
  - lib/jetstream_bridge/tasks/install.rake
154
170
  - lib/jetstream_bridge/test_helpers.rb
171
+ - lib/jetstream_bridge/test_helpers/fixtures.rb
172
+ - lib/jetstream_bridge/test_helpers/integration_helpers.rb
173
+ - lib/jetstream_bridge/test_helpers/matchers.rb
174
+ - lib/jetstream_bridge/test_helpers/mock_nats.rb
155
175
  - lib/jetstream_bridge/topology/overlap_guard.rb
156
176
  - lib/jetstream_bridge/topology/stream.rb
157
177
  - lib/jetstream_bridge/topology/subject_matcher.rb
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'core/model_codec_setup'
4
- require_relative 'core/logging'
5
-
6
- module JetstreamBridge
7
- class Railtie < ::Rails::Railtie
8
- # Set up logger to use Rails.logger by default
9
- initializer 'jetstream_bridge.logger', before: :initialize_logger do
10
- JetstreamBridge.configure do |config|
11
- config.logger ||= Rails.logger if defined?(Rails.logger)
12
- end
13
- end
14
-
15
- # Load ActiveRecord model tweaks after ActiveRecord is loaded
16
- initializer 'jetstream_bridge.active_record', after: 'active_record.initialize_database' do
17
- ActiveSupport.on_load(:active_record) do
18
- ActiveSupport::Reloader.to_prepare { JetstreamBridge::ModelCodecSetup.apply! }
19
- end
20
- end
21
-
22
- # Validate configuration in development/test
23
- initializer 'jetstream_bridge.validate_config', after: :load_config_initializers do |app|
24
- if Rails.env.development? || Rails.env.test?
25
- app.config.after_initialize do
26
- JetstreamBridge.config.validate! if JetstreamBridge.config.destination_app
27
- rescue JetstreamBridge::ConfigurationError => e
28
- Rails.logger.warn "[JetStream Bridge] Configuration warning: #{e.message}"
29
- end
30
- end
31
- end
32
-
33
- # Add console helper methods
34
- console do
35
- Rails.logger.info "[JetStream Bridge] Loaded v#{JetstreamBridge::VERSION}"
36
- Rails.logger.info '[JetStream Bridge] Use JetstreamBridge.health_check to check status'
37
- end
38
-
39
- # Load rake tasks
40
- rake_tasks do
41
- load File.expand_path('tasks/install.rake', __dir__)
42
- end
43
-
44
- # Add generators
45
- generators do
46
- require 'generators/jetstream_bridge/health_check/health_check_generator'
47
- end
48
- end
49
- end