wal 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/README.md +49 -0
  4. data/Rakefile +9 -1
  5. data/exe/wal +64 -0
  6. data/lib/wal/active_record_context_extension.rb +15 -0
  7. data/lib/wal/noop_watcher.rb +12 -0
  8. data/lib/wal/record_watcher.rb +389 -0
  9. data/lib/wal/replicator.rb +205 -0
  10. data/lib/wal/streaming_watcher.rb +74 -0
  11. data/lib/wal/version.rb +2 -1
  12. data/lib/wal/watcher.rb +95 -0
  13. data/lib/wal.rb +128 -1
  14. data/rbi/wal.rbi +295 -0
  15. data/sig/wal.rbs +184 -2
  16. data/sorbet/config +7 -0
  17. data/sorbet/rbi/annotations/.gitattributes +1 -0
  18. data/sorbet/rbi/annotations/activemodel.rbi +89 -0
  19. data/sorbet/rbi/annotations/activerecord.rbi +98 -0
  20. data/sorbet/rbi/annotations/activesupport.rbi +463 -0
  21. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  22. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  23. data/sorbet/rbi/gems/.gitattributes +1 -0
  24. data/sorbet/rbi/gems/actioncable@8.0.2.rbi +9 -0
  25. data/sorbet/rbi/gems/actionmailbox@8.0.2.rbi +9 -0
  26. data/sorbet/rbi/gems/actionmailer@8.0.2.rbi +9 -0
  27. data/sorbet/rbi/gems/actionpack@8.0.2.rbi +21122 -0
  28. data/sorbet/rbi/gems/actiontext@8.0.2.rbi +9 -0
  29. data/sorbet/rbi/gems/actionview@8.0.2.rbi +16423 -0
  30. data/sorbet/rbi/gems/activejob@8.0.2.rbi +9 -0
  31. data/sorbet/rbi/gems/activemodel@8.0.2.rbi +6866 -0
  32. data/sorbet/rbi/gems/activerecord@8.0.2.rbi +43227 -0
  33. data/sorbet/rbi/gems/activestorage@8.0.2.rbi +9 -0
  34. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +21110 -0
  35. data/sorbet/rbi/gems/ast@2.4.3.rbi +585 -0
  36. data/sorbet/rbi/gems/base64@0.3.0.rbi +545 -0
  37. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
  38. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +78 -0
  39. data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
  40. data/sorbet/rbi/gems/commander@5.0.0.rbi +9 -0
  41. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +11657 -0
  42. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  43. data/sorbet/rbi/gems/crass@1.0.6.rbi +623 -0
  44. data/sorbet/rbi/gems/date@3.4.1.rbi +75 -0
  45. data/sorbet/rbi/gems/diff-lcs@1.6.2.rbi +1134 -0
  46. data/sorbet/rbi/gems/docker-api@2.4.0.rbi +1719 -0
  47. data/sorbet/rbi/gems/docopt@0.6.1.rbi +9 -0
  48. data/sorbet/rbi/gems/drb@2.2.3.rbi +1661 -0
  49. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  50. data/sorbet/rbi/gems/excon@1.2.7.rbi +1514 -0
  51. data/sorbet/rbi/gems/globalid@1.2.1.rbi +9 -0
  52. data/sorbet/rbi/gems/highline@3.0.1.rbi +9 -0
  53. data/sorbet/rbi/gems/i18n@1.14.7.rbi +2359 -0
  54. data/sorbet/rbi/gems/io-console@0.8.0.rbi +9 -0
  55. data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  56. data/sorbet/rbi/gems/loofah@2.24.1.rbi +1105 -0
  57. data/sorbet/rbi/gems/mail@2.8.1.rbi +9 -0
  58. data/sorbet/rbi/gems/marcel@1.0.4.rbi +9 -0
  59. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +9 -0
  60. data/sorbet/rbi/gems/minitest@5.25.5.rbi +1704 -0
  61. data/sorbet/rbi/gems/multi_json@1.15.0.rbi +268 -0
  62. data/sorbet/rbi/gems/net-imap@0.5.9.rbi +9 -0
  63. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +9 -0
  64. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +292 -0
  65. data/sorbet/rbi/gems/net-smtp@0.5.1.rbi +9 -0
  66. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  67. data/sorbet/rbi/gems/nio4r@2.7.4.rbi +9 -0
  68. data/sorbet/rbi/gems/nokogiri@1.18.8.rbi +8206 -0
  69. data/sorbet/rbi/gems/ostruct@0.6.2.rbi +354 -0
  70. data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
  71. data/sorbet/rbi/gems/parlour@9.1.1.rbi +3071 -0
  72. data/sorbet/rbi/gems/parser@3.3.8.0.rbi +7338 -0
  73. data/sorbet/rbi/gems/pg-replication-protocol@0.0.7.rbi +633 -0
  74. data/sorbet/rbi/gems/pg@1.5.9.rbi +2806 -0
  75. data/sorbet/rbi/gems/pp@0.6.2.rbi +368 -0
  76. data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +477 -0
  77. data/sorbet/rbi/gems/prism@1.4.0.rbi +41732 -0
  78. data/sorbet/rbi/gems/psych@5.2.3.rbi +2435 -0
  79. data/sorbet/rbi/gems/racc@1.8.1.rbi +160 -0
  80. data/sorbet/rbi/gems/rack-session@2.1.1.rbi +727 -0
  81. data/sorbet/rbi/gems/rack-test@2.2.0.rbi +734 -0
  82. data/sorbet/rbi/gems/rack@3.1.16.rbi +4940 -0
  83. data/sorbet/rbi/gems/rackup@2.2.1.rbi +230 -0
  84. data/sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi +858 -0
  85. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +785 -0
  86. data/sorbet/rbi/gems/rails@8.0.2.rbi +9 -0
  87. data/sorbet/rbi/gems/railties@8.0.2.rbi +3865 -0
  88. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  89. data/sorbet/rbi/gems/rake@13.2.1.rbi +3120 -0
  90. data/sorbet/rbi/gems/rbi@0.3.6.rbi +6893 -0
  91. data/sorbet/rbi/gems/rbs@3.9.4.rbi +6978 -0
  92. data/sorbet/rbi/gems/rdoc@6.12.0.rbi +12760 -0
  93. data/sorbet/rbi/gems/reline@0.6.0.rbi +2451 -0
  94. data/sorbet/rbi/gems/rexml@3.4.1.rbi +5240 -0
  95. data/sorbet/rbi/gems/rspec-core@3.13.4.rbi +11348 -0
  96. data/sorbet/rbi/gems/rspec-expectations@3.13.5.rbi +8189 -0
  97. data/sorbet/rbi/gems/rspec-mocks@3.13.5.rbi +5350 -0
  98. data/sorbet/rbi/gems/rspec-sorbet@1.9.2.rbi +164 -0
  99. data/sorbet/rbi/gems/rspec-support@3.13.4.rbi +1630 -0
  100. data/sorbet/rbi/gems/rspec@3.13.1.rbi +83 -0
  101. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  102. data/sorbet/rbi/gems/spoom@1.6.3.rbi +6985 -0
  103. data/sorbet/rbi/gems/stringio@3.1.5.rbi +9 -0
  104. data/sorbet/rbi/gems/tapioca@0.16.11.rbi +3628 -0
  105. data/sorbet/rbi/gems/testcontainers-core@0.2.0.rbi +1005 -0
  106. data/sorbet/rbi/gems/testcontainers-postgres@0.2.0.rbi +145 -0
  107. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  108. data/sorbet/rbi/gems/timeout@0.4.3.rbi +157 -0
  109. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
  110. data/sorbet/rbi/gems/uri@1.0.3.rbi +2349 -0
  111. data/sorbet/rbi/gems/useragent@0.16.11.rbi +9 -0
  112. data/sorbet/rbi/gems/websocket-driver@0.8.0.rbi +9 -0
  113. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +9 -0
  114. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  115. data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
  116. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +9 -0
  117. data/sorbet/tapioca/config.yml +5 -0
  118. data/sorbet/tapioca/require.rb +12 -0
  119. metadata +231 -6
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `zeitwerk` gem.
5
+ # Please instead update this file by running `bin/tapioca gem zeitwerk`.
6
+
7
+
8
+ # THIS IS AN EMPTY RBI FILE.
9
+ # see https://github.com/Shopify/tapioca#manually-requiring-parts-of-a-gem
@@ -0,0 +1,5 @@
1
+ gem:
2
+ typed_overrides:
3
+ parlour: "false"
4
+ spoon: "false"
5
+ dsl:
@@ -0,0 +1,12 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ require "active_model"
5
+ require "active_record"
6
+ require "active_support"
7
+ require "concurrent"
8
+ require "minitest"
9
+ require "minitest/mock"
10
+ require "minitest/test"
11
+ require "pg"
12
+ require "pg/replication"
metadata CHANGED
@@ -1,40 +1,265 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Navarro
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-06-08 00:00:00.000000000 Z
10
+ date: 2025-06-22 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: postgres-replication-protocol
13
+ name: pg
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.5'
18
+ version: '1.0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.5'
25
+ version: '1.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: ostruct
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: docopt
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: pg-replication-protocol
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.0.7
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 0.0.7
68
+ - !ruby/object:Gem::Dependency
69
+ name: activerecord
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '7'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '7'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rbs
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: sorbet
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: tapioca
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: parlour
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
26
138
  email:
27
139
  - rnavarro@rnavarro.com.br
28
- executables: []
140
+ executables:
141
+ - wal
29
142
  extensions: []
30
143
  extra_rdoc_files: []
31
144
  files:
145
+ - ".rspec"
32
146
  - LICENSE.txt
33
147
  - README.md
34
148
  - Rakefile
149
+ - exe/wal
35
150
  - lib/wal.rb
151
+ - lib/wal/active_record_context_extension.rb
152
+ - lib/wal/noop_watcher.rb
153
+ - lib/wal/record_watcher.rb
154
+ - lib/wal/replicator.rb
155
+ - lib/wal/streaming_watcher.rb
36
156
  - lib/wal/version.rb
157
+ - lib/wal/watcher.rb
158
+ - rbi/wal.rbi
37
159
  - sig/wal.rbs
160
+ - sorbet/config
161
+ - sorbet/rbi/annotations/.gitattributes
162
+ - sorbet/rbi/annotations/activemodel.rbi
163
+ - sorbet/rbi/annotations/activerecord.rbi
164
+ - sorbet/rbi/annotations/activesupport.rbi
165
+ - sorbet/rbi/annotations/minitest.rbi
166
+ - sorbet/rbi/annotations/rainbow.rbi
167
+ - sorbet/rbi/gems/.gitattributes
168
+ - sorbet/rbi/gems/actioncable@8.0.2.rbi
169
+ - sorbet/rbi/gems/actionmailbox@8.0.2.rbi
170
+ - sorbet/rbi/gems/actionmailer@8.0.2.rbi
171
+ - sorbet/rbi/gems/actionpack@8.0.2.rbi
172
+ - sorbet/rbi/gems/actiontext@8.0.2.rbi
173
+ - sorbet/rbi/gems/actionview@8.0.2.rbi
174
+ - sorbet/rbi/gems/activejob@8.0.2.rbi
175
+ - sorbet/rbi/gems/activemodel@8.0.2.rbi
176
+ - sorbet/rbi/gems/activerecord@8.0.2.rbi
177
+ - sorbet/rbi/gems/activestorage@8.0.2.rbi
178
+ - sorbet/rbi/gems/activesupport@8.0.2.rbi
179
+ - sorbet/rbi/gems/ast@2.4.3.rbi
180
+ - sorbet/rbi/gems/base64@0.3.0.rbi
181
+ - sorbet/rbi/gems/benchmark@0.4.1.rbi
182
+ - sorbet/rbi/gems/bigdecimal@3.2.2.rbi
183
+ - sorbet/rbi/gems/builder@3.3.0.rbi
184
+ - sorbet/rbi/gems/commander@5.0.0.rbi
185
+ - sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi
186
+ - sorbet/rbi/gems/connection_pool@2.5.3.rbi
187
+ - sorbet/rbi/gems/crass@1.0.6.rbi
188
+ - sorbet/rbi/gems/date@3.4.1.rbi
189
+ - sorbet/rbi/gems/diff-lcs@1.6.2.rbi
190
+ - sorbet/rbi/gems/docker-api@2.4.0.rbi
191
+ - sorbet/rbi/gems/docopt@0.6.1.rbi
192
+ - sorbet/rbi/gems/drb@2.2.3.rbi
193
+ - sorbet/rbi/gems/erubi@1.13.1.rbi
194
+ - sorbet/rbi/gems/excon@1.2.7.rbi
195
+ - sorbet/rbi/gems/globalid@1.2.1.rbi
196
+ - sorbet/rbi/gems/highline@3.0.1.rbi
197
+ - sorbet/rbi/gems/i18n@1.14.7.rbi
198
+ - sorbet/rbi/gems/io-console@0.8.0.rbi
199
+ - sorbet/rbi/gems/logger@1.7.0.rbi
200
+ - sorbet/rbi/gems/loofah@2.24.1.rbi
201
+ - sorbet/rbi/gems/mail@2.8.1.rbi
202
+ - sorbet/rbi/gems/marcel@1.0.4.rbi
203
+ - sorbet/rbi/gems/mini_mime@1.1.5.rbi
204
+ - sorbet/rbi/gems/minitest@5.25.5.rbi
205
+ - sorbet/rbi/gems/multi_json@1.15.0.rbi
206
+ - sorbet/rbi/gems/net-imap@0.5.9.rbi
207
+ - sorbet/rbi/gems/net-pop@0.1.2.rbi
208
+ - sorbet/rbi/gems/net-protocol@0.2.2.rbi
209
+ - sorbet/rbi/gems/net-smtp@0.5.1.rbi
210
+ - sorbet/rbi/gems/netrc@0.11.0.rbi
211
+ - sorbet/rbi/gems/nio4r@2.7.4.rbi
212
+ - sorbet/rbi/gems/nokogiri@1.18.8.rbi
213
+ - sorbet/rbi/gems/ostruct@0.6.2.rbi
214
+ - sorbet/rbi/gems/parallel@1.27.0.rbi
215
+ - sorbet/rbi/gems/parlour@9.1.1.rbi
216
+ - sorbet/rbi/gems/parser@3.3.8.0.rbi
217
+ - sorbet/rbi/gems/pg-replication-protocol@0.0.7.rbi
218
+ - sorbet/rbi/gems/pg@1.5.9.rbi
219
+ - sorbet/rbi/gems/pp@0.6.2.rbi
220
+ - sorbet/rbi/gems/prettyprint@0.2.0.rbi
221
+ - sorbet/rbi/gems/prism@1.4.0.rbi
222
+ - sorbet/rbi/gems/psych@5.2.3.rbi
223
+ - sorbet/rbi/gems/racc@1.8.1.rbi
224
+ - sorbet/rbi/gems/rack-session@2.1.1.rbi
225
+ - sorbet/rbi/gems/rack-test@2.2.0.rbi
226
+ - sorbet/rbi/gems/rack@3.1.16.rbi
227
+ - sorbet/rbi/gems/rackup@2.2.1.rbi
228
+ - sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi
229
+ - sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi
230
+ - sorbet/rbi/gems/rails@8.0.2.rbi
231
+ - sorbet/rbi/gems/railties@8.0.2.rbi
232
+ - sorbet/rbi/gems/rainbow@3.1.1.rbi
233
+ - sorbet/rbi/gems/rake@13.2.1.rbi
234
+ - sorbet/rbi/gems/rbi@0.3.6.rbi
235
+ - sorbet/rbi/gems/rbs@3.9.4.rbi
236
+ - sorbet/rbi/gems/rdoc@6.12.0.rbi
237
+ - sorbet/rbi/gems/reline@0.6.0.rbi
238
+ - sorbet/rbi/gems/rexml@3.4.1.rbi
239
+ - sorbet/rbi/gems/rspec-core@3.13.4.rbi
240
+ - sorbet/rbi/gems/rspec-expectations@3.13.5.rbi
241
+ - sorbet/rbi/gems/rspec-mocks@3.13.5.rbi
242
+ - sorbet/rbi/gems/rspec-sorbet@1.9.2.rbi
243
+ - sorbet/rbi/gems/rspec-support@3.13.4.rbi
244
+ - sorbet/rbi/gems/rspec@3.13.1.rbi
245
+ - sorbet/rbi/gems/securerandom@0.4.1.rbi
246
+ - sorbet/rbi/gems/spoom@1.6.3.rbi
247
+ - sorbet/rbi/gems/stringio@3.1.5.rbi
248
+ - sorbet/rbi/gems/tapioca@0.16.11.rbi
249
+ - sorbet/rbi/gems/testcontainers-core@0.2.0.rbi
250
+ - sorbet/rbi/gems/testcontainers-postgres@0.2.0.rbi
251
+ - sorbet/rbi/gems/thor@1.3.2.rbi
252
+ - sorbet/rbi/gems/timeout@0.4.3.rbi
253
+ - sorbet/rbi/gems/tzinfo@2.0.6.rbi
254
+ - sorbet/rbi/gems/uri@1.0.3.rbi
255
+ - sorbet/rbi/gems/useragent@0.16.11.rbi
256
+ - sorbet/rbi/gems/websocket-driver@0.8.0.rbi
257
+ - sorbet/rbi/gems/websocket-extensions@0.1.5.rbi
258
+ - sorbet/rbi/gems/yard-sorbet@0.9.0.rbi
259
+ - sorbet/rbi/gems/yard@0.9.37.rbi
260
+ - sorbet/rbi/gems/zeitwerk@2.7.3.rbi
261
+ - sorbet/tapioca/config.yml
262
+ - sorbet/tapioca/require.rb
38
263
  licenses:
39
264
  - MIT
40
265
  metadata: